‹ Reports
The Dispatch

GitHub Repo Analysis: unkeyed/unkey


Executive Summary

Unkey is an open-source API management platform focused on authentication and authorization, maintained by "unkeyed." The project is actively developed with a strong community presence. It is in a growth trajectory, balancing feature enhancements and community engagement.

Recent Activity

Team Members and Activities

Patterns, Themes, and Conclusions

  1. Collaboration: Strong co-authored commits indicate a collaborative environment.
  2. Documentation Emphasis: Frequent updates reflect a priority on clear project information.
  3. Template Enhancements: Ongoing efforts to streamline development processes through templates.
  4. Bug Fixes & Code Quality: Regular improvements in code quality and maintainability.
  5. Feature Development: New features like mobile navigation and custom permissions are being developed.

Risks

  1. PR Compliance Issues:

    • Many PRs (#2354, #2352) do not follow Conventional Commits specifications, causing potential versioning confusion.
  2. Missing Changesets:

    • Several PRs lack changesets (#2347, #2341), crucial for managing version bumps.
  3. Unsigned CLAs:

    • Contributors have not signed the CLA, blocking merges (#2354).
  4. Redundant PRs:

    • Duplicate PRs (#2351 vs #2352) indicate inefficiencies in contribution management.
  5. Draft/WIP PRs:

    • Drafts like #2335 should be clearly marked to avoid review process clutter.

Of Note

  1. Hackathon Engagement:

    • Active participation in oss.gg hackathon suggests strong community-driven contributions.
  2. Large Repository Size:

    • At 580 MB, the repository size is large, possibly due to extensive documentation or binaries.
  3. Custom License Usage:

    • The use of a custom license labeled "Other" may pose legal ambiguities.

Quantified Reports

Quantify issues



Recent GitHub Issues Activity

Timespan Opened Closed Comments Labeled Milestones
7 Days 61 39 667 0 1
30 Days 103 67 938 0 1
90 Days 140 100 1052 1 1
All Time 363 309 - - -

Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.

Rate pull requests



2/5
The pull request is a draft with significant issues. It lacks a changeset, which is essential for tracking changes and versioning. The title does not follow the Conventional Commits specification, indicating poor adherence to project standards. While it includes a substantial number of file additions and modifications, the absence of a clear purpose or impact description makes it difficult to assess its significance. The PR's current state suggests it is incomplete and needs further refinement before being ready for review.
[+] Read More
2/5
This pull request is insignificant and flawed. It merely adds a screenshot to verify a task completion, which is not a substantial code change. The PR lacks any meaningful code contribution or improvement to the project. Additionally, it violates guidelines by including a screenshot, as noted by a reviewer. The title does not follow the Conventional Commits specification, indicating poor adherence to project standards. Overall, it lacks significance and proper execution.
[+] Read More
2/5
The pull request adds a single entry to a documentation file, which is a minor change. It lacks thorough testing instructions, self-review, and adherence to the checklist. The absence of a changeset and incomplete checklist items suggest a lack of attention to detail. Without significant code changes or improvements, this PR is notably flawed and insignificant.
[+] Read More
2/5
The pull request is insignificant and lacks clarity. It appears to be an update to a document with a new participant entry, which is minor and does not introduce any meaningful changes or improvements to the project. The PR lacks a clear issue reference, testing instructions, and necessary checklist completion. Additionally, it does not follow the Conventional Commits specification for the title. Overall, it seems more like a personal note rather than a substantial contribution.
[+] Read More
2/5
The pull request is primarily a documentation update, adding a new participant entry. It lacks significant code changes or improvements and does not address any specific issue. The PR description is incomplete, missing a linked issue, and the checklist is not filled out. It also lacks testing instructions and context for the change. Overall, it is a minor update with several procedural oversights.
[+] Read More
3/5
The pull request integrates a rate limiter into a project and documents the process in a blog post. While it includes a thorough explanation and testing instructions, it primarily focuses on documentation and does not introduce significant new features or complex code changes. The PR is well-structured and follows contribution guidelines, but lacks substantial impact or innovation to warrant a higher rating.
[+] Read More
3/5
The pull request addresses a specific bug by enhancing the query logic to exclude soft-deleted records, which is a necessary fix for accurate data retrieval. The changes are clear and improve the code's readability. However, the impact of this fix is limited to a specific scenario and does not introduce any significant new features or improvements beyond resolving the existing issue. The PR is well-structured but lacks broader significance or complexity, making it an average contribution.
[+] Read More
3/5
The pull request addresses a pagination error in the blog section by disabling navigation buttons when on the first or last page, which is a necessary bug fix. The changes are straightforward and improve the user experience by preventing unnecessary navigation. However, the PR lacks significant novelty or complexity and primarily involves minor adjustments to existing functionality. The documentation and testing instructions are adequate, but the overall impact of the changes is limited, making this an average submission.
[+] Read More
3/5
This pull request introduces a new section for conducting an accessibility audit, which is a valuable addition to the project. However, it lacks thorough testing instructions and self-review, as indicated by the incomplete checklist. The changes are non-breaking and include useful guidelines and images, but the absence of a changeset and some unchecked checklist items suggest a lack of completeness. Overall, it's an average contribution with room for improvement in documentation and self-assessment.
[+] Read More
3/5
The pull request addresses a minor UI bug related to the alignment of a copy icon for short permission names. It includes code reformatting for better readability, which is beneficial but not impactful in terms of functionality. The change is small and doesn't introduce new features or significant improvements. The checklist is incomplete, and the PR lacks thorough testing instructions. While it fixes a specific issue, the overall contribution is average and unremarkable, aligning with a rating of 3.
[+] Read More

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Andreas Thomas 6 12/9/0 44 284 19116
MichaelUnkey 3 1/1/0 7 16 6745
Richard Poelderl 1 1/1/0 1 19 3421
Harsh Shrikant Bhat 1 16/14/3 14 96 3163
autofix-ci[bot] 3 0/0/0 4 16 2463
James P 3 3/4/0 17 16 1130
Nazar Poshtarenko 1 8/8/0 8 28 1053
Meg Stepp 2 1/2/0 4 19 815
dependabot[bot] 3 7/4/3 6 13 769
Akshay 1 4/2/0 2 8 373
Abhi-Bohora 1 2/2/0 2 4 222
Gerald Maboshe 1 4/4/0 4 13 156
github-actions[bot] 2 2/1/0 2 16 102
Teddy ASSIH 1 4/3/0 3 4 100
Anne Deepa Prasanna 1 5/4/0 4 5 92
Pragyanand Sahoo 1 1/1/0 1 2 48
Vardhaman Bhandari 1 7/4/1 4 10 32
Flo 2 1/1/0 2 1 31
ZiaCodes 1 1/1/0 1 2 10
Devansh Baghel 1 2/1/0 1 1 8
Chirag Arora 1 1/1/0 1 1 5
Devang Rakholiya 1 1/1/0 1 1 5
Shreenarayan jaiswal 1 1/1/0 1 1 5
djnovin 1 1/1/0 2 1 4
Ikko Eltociear Ashimine 1 1/1/0 1 1 3
Prabin 1 1/1/0 1 1 3
Aritra Sadhukhan 1 1/1/0 1 1 3
Saravanan R 1 1/1/0 1 1 2
Alex Chan 1 1/1/0 1 1 2
Emily Marie Ahtúnan 1 2/1/0 1 1 2
harsh raj (hraj43) 0 1/0/0 0 0 0
Priyanshu Sharma (bitbrief) 0 1/0/0 0 0 0
Harsh Singh Panwar (Harsh9485) 0 2/0/1 0 0 0
Pranav Teja (Pranavtej) 0 1/0/0 0 0 0
Shivam Gupta (ashokasec) 0 1/0/0 0 0 0
kohinoor-nimes (kohi9noor) 0 1/0/0 0 0 0
Siddhak Dak (siddhakdak) 0 1/0/0 0 0 0
None (sthitasahu) 0 1/0/1 0 0 0
Suvankar Mahato (Suvankar621) 0 1/0/0 0 0 0
None (RajuGangitla) 0 2/0/0 0 0 0
SOUMITRA-SAHA (SOUMITRO-SAHA) 0 1/0/0 0 0 0
Oğuzhan Olguncu (ogzhanolguncu) 0 1/0/0 0 0 0
BHAVIKA SHINDE (shindebhavika) 0 1/0/1 0 0 0
Aditya Dutt Pandey (Adityaadpandey) 0 1/0/1 0 0 0
None (Sahil-Gupta584) 0 1/0/0 0 0 0
Vinod_Mane (Vinod-Mane3021) 0 1/0/0 0 0 0
Nawin Kumar Sharma (NawinKumarSharma) 0 1/0/0 0 0 0
Ankur Jaiswal (ankurjaiswalofficial) 0 1/0/1 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Quantify risks



Project Risk Ratings

Risk Level (1-5) Rationale
Delivery 4 The project faces a backlog of unresolved issues, with 61 opened and only 39 closed in the past week. This trend persists over longer periods, indicating potential delays in delivery timelines. The presence of hackathon-related tasks (#2353, #2350) could distract from core development activities, further impacting delivery.
Velocity 3 While there is active commit and pull request activity, the focus on minor documentation updates and UI fixes without substantial code improvements suggests possible stagnation. The backlog of unresolved pull requests (40 open) indicates bottlenecks in merging and reviewing processes.
Dependency 2 Efforts to manage dependencies are evident through the use of automated bots like dependabot. However, reliance on these bots requires careful monitoring to avoid introducing risks. Key files related to API management are crucial for secure interactions, but no immediate dependency failures are noted.
Team 3 The high volume of comments (667 in the last 7 days) suggests active discussion, which could indicate potential communication challenges. Significant contributions from a few key developers may risk burnout if workload is not balanced.
Code Quality 4 Many pull requests lack significant code changes and do not adhere to Conventional Commits specification, indicating potential risks in code quality. The absence of thorough testing instructions further exacerbates this risk.
Technical Debt 4 The accumulation of unresolved issues and recurring bugs suggests potential technical debt accumulation. The complexity of key verification logic in critical files could contribute to this if not adequately documented or tested.
Test Coverage 4 The lack of thorough testing instructions across multiple pull requests indicates inadequate test coverage. This poses a risk of undetected bugs affecting delivery and code quality.
Error Handling 3 While some files demonstrate robust error handling, such as 'service.ts', the absence of comprehensive testing details leaves gaps in assessing overall error handling effectiveness across the project.

Detailed Reports

Report On: Fetch issues



Recent Activity Analysis

Recent GitHub issue activity for the Unkey project indicates a mix of bug reports, feature requests, and documentation improvements. Many issues are related to the ongoing development and enhancement of the platform's features, such as API key management and user interface improvements. The presence of issues related to hackathon side quests suggests active community engagement.

Notable Anomalies and Themes

  • Hackathon Engagement: Multiple issues are related to the oss.gg hackathon, indicating a focus on community-driven contributions.
  • UI/UX Improvements: Several issues address user interface enhancements, such as alignment fixes and better navigation experiences.
  • Documentation Updates: There is a consistent effort to improve documentation, reflecting the project's commitment to accessibility for contributors.
  • Bug Fixes: Common themes include fixing UI bugs, improving error handling, and optimizing performance.
  • Feature Enhancements: Requests for new features like encryption options and better permission management highlight ongoing development priorities.

Issue Details

Most Recently Created Issues

  1. #2353: [oss.gg hackathon] Starry-eyed supporter

    • Priority: Medium
    • Status: Open
    • Created: 0 days ago
  2. #2350: [oss.gg hackathon] follow unkey on X

    • Priority: Low
    • Status: Open
    • Created: 0 days ago
  3. #2348: Copy Icon Misalignment for Short Permission Names

    • Priority: High
    • Status: Open
    • Created: 0 days ago

Most Recently Updated Issues

  1. #2353: [oss.gg hackathon] Starry-eyed supporter

    • Priority: Medium
    • Status: Open
    • Updated: 0 days ago
  2. #2350: [oss.gg hackathon] follow unkey on X

    • Priority: Low
    • Status: Open
    • Updated: 0 days ago
  3. #2348: Copy Icon Misalignment for Short Permission Names

    • Priority: High
    • Status: Open
    • Updated: 0 days ago

Summary

The Unkey project is actively engaging with its community through events like hackathons while simultaneously addressing technical debt and enhancing its platform's functionality and user experience. The focus on both community contributions and core feature development reflects a balanced approach to growth and innovation.

Report On: Fetch pull requests



Pull Request Analysis

Open Pull Requests

#2354: Fix: Copy Icon Misalignment for Short Permission Names

  • Status: Open
  • Created: 0 days ago
  • Issues:
    • Missing checklist items, including self-review and testing.
    • The title needs adjustment to follow the Conventional Commits specification.
    • No changeset found, which might be needed if changes require a version bump.
    • CLA not signed.

#2352: Side Quest Follow Unkey X Account

  • Status: Open
  • Created: 0 days ago
  • Issues:
    • Lacks a clear issue reference.
    • Title does not follow Conventional Commits specification.
    • No changeset found.
    • CLA not signed.

#2349: Update 3_follow_the_unkey_x_account.md

  • Status: Open
  • Created: 0 days ago
  • Issues:
    • Title needs adjustment for Conventional Commits.
    • No changeset found.

#2347: Docs: Integrated Unkey's Ratelimiter into My Project and Wrote a Blog Post on the Same

  • Status: Open
  • Created: 1 day ago
  • Issues:
    • Missing changeset.
    • Requires verification of integration in the main branch.

#2341: Fix: Deleting the Override Doesn't Remove It from the Overrides

  • Status: Open
  • Created: 1 day ago
  • Issues:
    • Issue assigned to another user; contributor should not work on unassigned issues.
    • Missing changeset.

#2335: WIP: Deploy Demo

  • Status: Open (Draft)
  • Created: 1 day ago
  • Issues:
    • Title "WIP" is not suitable for production-ready PRs.
    • Missing changeset.

Notable Closed Pull Requests

#2351: Side Quest Follow Unkey X Account

  • Status: Closed without merging
  • Created and Closed: Same day
  • Issues:
    • Possibly redundant or duplicate PR as similar PR (#2352) exists.

General Observations

  1. Conventional Commits Compliance:

    • Many PRs do not follow the Conventional Commits specification, leading to potential confusion in versioning and release notes.
  2. Changesets Missing:

    • Several PRs lack changesets, which are crucial for managing version bumps and release notes. Contributors should ensure they include these when necessary.
  3. Contributor License Agreement (CLA):

    • Some contributors have not signed the CLA, which is required before merging contributions.
  4. Redundant or Duplicate PRs:

    • Instances of similar or duplicate PRs (e.g., #2351 and #2352) need addressing to streamline contributions.
  5. Drafts and Work-in-progress (WIP) PRs:

    • Drafts like #2335 should be marked clearly and converted to ready status only when complete to avoid cluttering the review process.
  6. Documentation and Testing Gaps:

    • Several PRs lack thorough documentation updates or testing instructions, which can hinder the review process and integration into the main branch.

Recommendations

  • Enforce adherence to Conventional Commits for all contributors.
  • Ensure all contributors sign the CLA before review.
  • Encourage comprehensive documentation and testing details in each PR.
  • Regularly review open drafts and WIPs to ensure progress or closure if stalled.

Report On: Fetch Files For Assessment



Source Code Assessment

1. apps/api/src/pkg/keys/service.ts

Structure and Quality:

  • Imports and Dependencies: The file imports a variety of types and utilities, indicating modular design.
  • Error Handling: Custom errors like DisabledWorkspaceError and MissingRatelimitError are well-defined, enhancing clarity in error management.
  • Type Definitions: Comprehensive type definitions (NotFoundResponse, InvalidResponse, etc.) improve type safety and readability.
  • Class Design: The KeyService class encapsulates key-related operations, adhering to single responsibility principles.
  • Logging and Metrics: Extensive use of logging and metrics for monitoring key verification processes.
  • Caching: Utilizes caching effectively to optimize key lookups.
  • Rate Limiting: Implements rate limiting logic with clear separation of concerns.

Observations:

  • The code is well-organized with clear separation between public methods and private helpers.
  • Error handling is robust but could benefit from more granular logging in certain areas for deeper insights during failures.
  • The use of async/await is consistent, promoting non-blocking operations.

2. apps/api/src/routes/v1_keys_createKey.ts

Structure and Quality:

  • Route Definition: Uses createRoute for defining API routes, ensuring consistency.
  • Request Validation: Employs Zod schemas for request validation, which is a good practice for input validation.
  • Error Handling: Custom errors (UnkeyApiError) are used to handle various failure scenarios gracefully.
  • Concurrency Management: Uses promises and retries to handle database operations, improving reliability.
  • Security Considerations: Includes security checks (e.g., role and permission validation) before proceeding with key creation.

Observations:

  • The file is lengthy but maintains clarity through logical segmentation of responsibilities.
  • The retry mechanism for database operations is well-integrated, though it might benefit from configurable retry limits.
  • The code could be refactored to reduce complexity by extracting some logic into helper functions or services.

3. apps/api/src/routes/v1_keys_verifyKey.ts

Structure and Quality:

  • Route Definition: Similar to the create key route, uses structured route definition with Zod schemas for input validation.
  • Error Handling: Handles various error scenarios using custom error types, maintaining consistency across the codebase.
  • Response Construction: Constructs detailed response objects based on verification results, aiding client-side processing.

Observations:

  • The file is concise compared to others but effectively manages the verification logic.
  • Error handling could be further enhanced by categorizing errors more distinctly for better client-side differentiation.
  • The use of OpenAPI documentation annotations improves maintainability and clarity.

4. apps/dashboard/lib/trpc/routers/api/create.ts

Structure and Quality:

  • Procedure Definition: Defines a TRPC procedure with input validation using Zod, ensuring data integrity.
  • Database Transactions: Utilizes transactions for API creation, which ensures atomicity and data consistency.
  • Audit Logging: Incorporates audit logging to track API creation events, which is crucial for security and compliance.

Observations:

  • The file is well-organized with clear separation between input validation, business logic, and error handling.
  • Error messages are user-friendly but could include more technical details for debugging purposes in logs.

5. apps/agent/pkg/clickhouse/client.go

Structure and Quality:

  • Connection Management: Handles Clickhouse connection setup with error handling using a retry mechanism, enhancing robustness.
  • Batch Processing: Implements batch processing for requests and verifications, optimizing performance for high-throughput scenarios.
  • Logging: Utilizes structured logging to capture connection states and errors.

Observations:

  • The code is concise yet effective in managing Clickhouse interactions.
  • Consideration for TLS configuration is noted but commented out; this should be addressed if security is a concern.
  • Error handling could be improved by categorizing errors based on their source (e.g., network vs. query errors).

Overall, the codebase demonstrates strong adherence to best practices such as modular design, comprehensive error handling, and effective use of TypeScript's type system. However, there are opportunities for improvement in terms of refactoring complex logic into smaller functions or modules to enhance readability and maintainability.

Report On: Fetch commits



## Development Team and Recent Activity

### Team Members and Activities

- **Andreas Thomas (chronark)**
    - Frequent commits across multiple branches.
    - Recent work includes updates to templates, bug fixes, refactoring, and enhancements in analytics and ratelimit functionalities.
    - Collaborated with various team members including Nazar Poshtarenko and Harsh Shrikant Bhat.

- **Nazar Poshtarenko (unrenamed)**
    - Worked on improving analytics components and fixing dashboard issues.
    - Added templates and made code readability improvements.

- **Chirag Arora (Chirag8023)**
    - Updated documentation related to following the Unkey X account.

- **Shreenarayan Jaiswal (shreenarayan123)**
    - Contributed to documentation updates for following Unkey on X.

- **Devansh Baghel (Devansh-Baghel)**
    - Worked on creating a template for rate limiting an oak server in Deno with Unkey.

- **ZiaCodes (Khaan25)**
    - Fixed spacing issues in changelog and formatted code.

- **Prabin (prabincankod)**
    - Added a framework to the side quest section.

- **Devang Rakholiya (Devang0907)**
    - Updated documentation related to following the Unkey X account.

- **Flo (Flo4604)**
    - Fixed transaction errors related to query race conditions.

- **Aritra Sadhukhan (aritradevelops)**
    - Documentation updates for following the Unkey X account.

- **Harsh Shrikant Bhat (harshsbhat)**
    - Extensive contributions including bug fixes, feature additions, and documentation updates.
    - Collaborated with Andreas Thomas on several tasks.

- **Emily Marie Ahtúnan (Emmarie-Ahtunan)**
    - Documentation updates related to following the Unkey X account.

- **MichaelUnkey**
    - Worked on custom override permissions and bucket caching issues.

- **James P (perkinsjr)**
    - Various contributions including documentation updates, bug fixes, and enhancements in email configurations.

- **Pragyanand Sahoo (pragyananda)**
    - Added profile feature on mobile top navigation.

- **Saravanan R (Sara2706)**
    - Fixed username update functionality in settings.

- **djnovin**
    - Updated Markdown to include Actix Web Template.

### Patterns, Themes, and Conclusions

1. **Active Collaboration**: The team shows strong collaboration with frequent co-authored commits, indicating a collaborative development environment.

2. **Focus on Documentation**: Numerous updates are related to documentation, reflecting an emphasis on maintaining clear and up-to-date project information.

3. **Template Enhancements**: Several commits focus on adding or updating templates, suggesting ongoing efforts to streamline development processes.

4. **Bug Fixes and Code Quality**: Regular bug fixes and formatting changes indicate a continuous effort to improve code quality and maintainability.

5. **Feature Development**: New features such as profile navigation on mobile and custom override permissions highlight ongoing feature expansion efforts.

6. **Diverse Contributions**: Contributions span across different areas including analytics, ratelimits, UI/UX improvements, and backend optimizations.

Overall, the team is actively engaged in both maintaining existing functionalities and expanding the project's capabilities through new features and improvements.