Executive Summary

Overall Portfolio Health
52
/ 100

Portfolio Health Score: C (52/100)

The ReviqueInc portfolio is in a transitional state. revique-web is an actively developed, well-structured modern frontend with CI/CD in place. hptinvoices is a legacy Node.js backend still under active development via Bitbucket-era conventions. The remaining three repositories — hptui, reviqueui-2.0, and reviqueui — are archived mirrors of Bitbucket repositories with no ongoing GitHub workflows. The portfolio is dragged down by absent branch protection, disabled Dependabot, missing documentation, and no automated testing in most repos.

5
Total Repos
2
Active Repos
3
Archived Repos
0/5
Branch Protection
0/5
Dependabot Enabled
1/5
CI/CD Workflows
62
Total TODOs/FIXMEs
7
Open PRs (active)
🔴 Top 5 Critical Issues
  1. No branch protection on any repository

    All 5 repos allow direct force-pushes to default branches. No required reviews, status checks, or admin enforcement.

  2. Dependabot security alerts disabled across all repos

    No automated vulnerability scanning on any repository. Active repos with 48+ npm dependencies are unmonitored.

  3. hptui runs Angular 7 (EOL since April 2020)

    Angular 7 reached end-of-life in April 2020. While archived, it remains referenced and may still be deployed.

  4. hptinvoices CI/CD relies on legacy Bitbucket Pipelines + AWS CodeCommit SSH keys hardcoded in pipeline config

    Exposed IAM username keys in bitbucket-pipelines.yml. No GitHub Actions workflow exists for this repo.

  5. reviqueui-2.0 is an empty repository

    Only contains a .gitignore. The migration from Bitbucket apparently failed — no source code was committed.

🟢 Top 5 Quick Wins
  1. Enable Dependabot on revique-web and hptinvoices

    One-click action in GitHub Settings → Security. Immediately adds automated dependency vulnerability alerts.

  2. Add branch protection to revique-web main/develop/uat

    Require at least 1 PR approval + passing CI checks before merging. Takes ~5 minutes to configure.

  3. Add LICENSE and CONTRIBUTING.md to revique-web

    revique-web has a README but no LICENSE or contributing guide. Critical for internal clarity.

  4. Migrate hptinvoices to GitHub Actions

    Replace the Bitbucket Pipelines YAML with a GitHub Actions workflow. Eliminates the dual-VCS overhead and centralises CI/CD.

  5. Add repo topics/tags to all repositories

    No repository has any GitHub topics. Adding tags (e.g. react, angular, typescript, healthcare) improves discoverability and org tooling.

Repository Comparison Table

Repository Status Language Default Branch Branches Last Push Open PRs Contributors Workflows Branch Protection Dependabot README Tests TODOs Health Score
revique-web ACTIVE JavaScript/TS main 68 2026-05-08 7 0 (anon) 4 workflows NONE DISABLED YES 1 file 39
68
hptinvoices ACTIVE JavaScript develop 100+ 2026-05-04 0 6 0 (Bitbucket only) NONE DISABLED NO 0 15
42
hptui ARCHIVED TypeScript master 40 2024-04-26 0 6 0 NONE N/A YES 138 spec files 34
35
reviqueui-2.0 ARCHIVED/EMPTY None develop 1 2025-07-02 0 1 0 NONE N/A NO 0 0
10
reviqueui ARCHIVED TypeScript develop 21 2025-07-20 0 3 0 NONE N/A NO 0 8
40

revique-web

ACTIVE PRIMARY

Parallel Revique web app — modern React/TypeScript frontend hosted on Cloudflare Workers

Language: JavaScript/TypeScript Default Branch: main Branches: 68 Last Push: 2026-05-08 Size: 4,266 KB
1. Repository Overview & Metadata
Active
Status
68
Branches
7
Open PRs
831
Total Files
PropertyValue
FrameworkReact 19 Vite 5 TypeScript 5.5
UI LibraryChakra UI v3 Framer Motion
DeploymentCloudflare Workers Static Assets
Branch Flowfeature/* → develop → uat → main
Created2026-05-01
Last Updated2026-05-08 (today)
Stars1
PrivateYes
Topics/TagsNone configured
WikiDisabled
68 branches is very high for a single repository. Many are Codex-generated feature branches (RWA-549 through RWA-608) and batch branches that should be pruned after merging.
2. CI/CD & Workflows
revique-web is the only repository with GitHub Actions workflows configured. 349 total runs recorded, all recent runs successful.
Workflow FileTriggerTargetStatus
deploy-develop.ymlPush to develop, manualCloudflare develop envActive / Passing
deploy-uat.ymlPush to uat, manual (with ref input)Cloudflare UAT envActive
deploy-production.ymlManual only (requires ref input)Cloudflare productionActive
request-uat-promotion.ymlManual (source/target branch inputs)PR creation + SlackActive

Recent Run Activity (last 20 runs)

Branch Commit Notify
16 runs
100% ✓
Deploy Develop
4 runs
100% ✓
Gap: No automated test runner in CI pipeline. Workflows deploy directly without a lint/test gate. Recommend adding an npm run lint and test step before deploy jobs.
Gap: Production deploy is manual-only (good for safety), but there is no automated smoke test or rollback step configured.
3. Branch Strategy & Pull Requests

The branch strategy follows a trunk-based model: feature/* → develop → uat → main. Codex-generated branches follow the naming convention codex/RWA-XXX-description.

Open Pull Requests (7)

PR #TitleAuthorOpened
#91Batch develop merge 20260508-0544farhan-revique2026-05-08
#90RWA-608: Restore child appointment service listfarhan-revique2026-05-08
#89RWA-607: Autofill appointment duration from selected servicefarhan-revique2026-05-08
#42RWA-568: Open no-show reschedule in appointment drawerfarhan-revique2026-05-07
#41RWA-566: Harden schedule checkout handofffarhan-revique2026-05-07
#25RWA-554: Enable Add Notes savefarhan-revique2026-05-06
#20RWA-549: Add transaction history actionsfarhan-revique2026-05-06
Critical: No branch protection rules on main, develop, or uat. All 30 sampled closed PRs were merged (100% merge rate) — but without required reviews, any collaborator can merge unreviewed code directly to production-bound branches.
PRs #20 and #25 have been open for 2+ days. Consider setting a SLA for PR review turnaround.
4. Security & Dependencies
Dependabot disabled. With 27 runtime dependencies and 21 devDependencies, automated vulnerability scanning is essential and currently absent.

Runtime Dependencies (27)

PackageVersion SpecCategory
react / react-dom^19Core Framework
@chakra-ui/react^3.19.1UI Library
axios^1.9.0HTTP Client
react-router-dom^7.5.2Routing
react-hook-form^7.56.1Forms
dayjs^1.11.13Date/Time
framer-motion^12.9.2Animation
xlsx^0.18.5Excel Export
jspdf / jspdf-autotable^3.0.1 / ^5.0.2PDF Generation
recharts^2.15.3Charts
styled-components^6.4.1CSS-in-JS
react-payment-inputs^1.2.0Payment UI
@react-pdf/renderer^4.3.0PDF Rendering
vite-plugin-pwa^1.0.1PWA Support
Note: xlsx@0.18.5 (SheetJS Community Edition) is known to have had security advisories in older builds. Recommend verifying this is the latest community edition and consider switching to exceljs for AGPL-free licensing.

Secret Scan Results

No hardcoded secrets detected in .js, .ts, .env, or .json files. API keys appear to be properly managed via GitHub Actions environment variables (vars.*).

Code Quality Indicators

  • ESLint configured (eslint.config.js)
  • Prettier configured (via devDependency)
  • lint-staged configured for pre-commit formatting
  • Husky devDependency present (though .husky/ directory not found in shallow clone — verify prepare script runs)
  • TypeScript strict mode via typescript-eslint
  • No unit tests found (only 1 test-related file detected)
  • 39 TODO/FIXME/HACK comments in source code
  • No SECURITY.md policy
5. Code Quality & Documentation

Documentation Files

  • README.md — present and informative
  • CONTRIBUTING.md — missing
  • CHANGELOG.md — missing
  • LICENSE — missing
  • SECURITY.md — missing

Project Structure

  • src/components/pages/ — page components (patient, dashboard, checkout, scheduling, admin)
  • src/components/common/ — shared UI (sidebar, header, listing, datepicker)
  • src/utils/ — hooks, context, API clients, types
  • legacy-admin/ — embedded legacy admin module
  • docs/ — internal documentation directory
  • scripts/ — build/utility scripts

TODO/FIXME/HACK Distribution

39 TODO/FIXME/HACK annotations found in JS/TS source files. These should be tracked as GitHub Issues rather than inline comments to prevent technical debt accumulation.

Recommendations

PriorityAction
HIGHEnable branch protection on main, develop, and uat branches
HIGHEnable Dependabot for npm dependencies
MEDAdd a test step to CI pipeline (even basic lint check gates)
MEDAdd LICENSE file (MIT or Apache recommended for internal clarity)
MEDPrune merged/stale branches — 68 is excessive
LOWAdd repository topics/tags
LOWTrack TODOs as GitHub Issues

hptinvoices

ACTIVE LEGACY

Bitbucket migration mirror — Node.js invoice/billing microservice backend

Language: JavaScript (Node.js) Default Branch: develop Branches: 100+ Last Push: 2026-05-04 Size: 1,342 KB
1. Repository Overview & Metadata
Active
Status
100+
Branches
6
Contributors
267
Total Files
PropertyValue
ArchitectureMulti-module Node.js Lambda microservices (InvoiceAPI, InvoiceHandler, PatientHandler, ProviderHandlerNode, ItemUploadHandlerNode)
Runtime FrameworkExpress.js Serverless (AWS Lambda)
Database ORMObjection.js + Knex (MySQL)
Deployment (legacy)Bitbucket Pipelines → AWS CodeCommit → AWS Lambda
Created2026-05-01 (GitHub mirror)
Last Push2026-05-04
PrivateYes
READMEMissing
Topics/TagsNone
The API hit the 100-branch pagination limit. The actual branch count is ≥100, which indicates significant accumulated technical debt from unmerged/un-deleted branches across multiple contributors.
2. CI/CD & Infrastructure
No GitHub Actions workflows configured. CI/CD is entirely handled by Bitbucket Pipelines pointing to AWS CodeCommit, which is the legacy system prior to GitHub migration.
Security concern in bitbucket-pipelines.yml: IAM SSH username keys (APKAUIBIW26KJXYFA5XZ, APKA5LVLSGVA2DHVLJJC) are hardcoded in the pipeline YAML. While these are SSH key public identifiers (not secrets), they represent exposed AWS IAM account identifiers. The associated private keys should be verified to still be valid/rotated.
Pipeline StageTarget BranchDeployment Target
Master pushmasterAWS CodeCommit (two regions)
Develop pushdevelopAWS CodeCommit (two regions)
UAT pushUATAWS CodeCommit (two regions)
3. Architecture & Dependencies

InvoiceAPI Dependencies

PackagePurpose
expressHTTP server framework
knex + objectionSQL query builder + ORM
mysqlMySQL driver
serverless-httpExpress → Lambda adapter
axiosHTTP client for external APIs
simple-oauth2OAuth2 token management
swagger-jsdoc + swagger-parserAPI documentation
momentDate manipulation (deprecated — migrate to dayjs)
hashidsID obfuscation
camelcase-keysResponse key transformation
Note: moment.js is in the dependency list. Moment.js is in maintenance-only mode and its authors recommend migrating to dayjs or date-fns. Moment adds ~70KB to bundle size.
1 potential secret pattern detected in src/InvoiceAPI/common/helper/CommonHelper.js (line 794) — appears to be a commented-out token assignment. Verify this is harmless and remove the commented code.

File Type Distribution

JavaScript (.js)
233
233
JSON
16
16
SQL
12
12
YAML
4
4
4. Code Quality & Documentation

Missing

  • README.md
  • CONTRIBUTING.md
  • LICENSE
  • SECURITY.md
  • ESLint config
  • Prettier config
  • Automated tests (0 test files)
  • GitHub Actions workflows

Present

  • bitbucket-pipelines.yml (legacy CI)
  • buildspec-node.yml (AWS CodeBuild)
  • .gitignore
  • Swagger API documentation inline
  • SQL migration scripts
15 TODO/FIXME/HACK comments found across JS source files.

Recommendations

PriorityAction
HIGHMigrate CI/CD from Bitbucket Pipelines to GitHub Actions
HIGHAdd README.md documenting architecture, local setup, and deployment
HIGHEnable Dependabot for npm dependencies
HIGHEnable branch protection on develop/master branches
MEDPrune 100+ stale feature branches
MEDReplace moment.js with dayjs
MEDAdd ESLint and Prettier configs
MEDInvestigate and remove commented-out token pattern
LOWAdd unit tests for core invoice calculation logic

hptui

ARCHIVED LEGACY ANGULAR

Bitbucket migration mirror — Angular 7 frontend (HelloPatients legacy admin portal)

Language: TypeScript Default Branch: master Branches: 40 Last Commit: 2024-04-26 Size: 8,468 KB (largest in portfolio)
1. Repository Overview & Metadata
Archived
Status
Angular 7
Framework (EOL)
138
Spec Files
6
Contributors
PropertyValue
FrameworkAngular 7.2.16 Angular CLI 7.3.10
LanguageTypeScript 3.1.8
TestingKarma + Jasmine (138 spec files)
Angular EOLApril 2020 — over 6 years ago
ArchivedYes — read-only on GitHub
Last Activity2024-04-26 (over 1 year ago)
READMEPresent (auto-generated Angular CLI README)
Size8,468 KB — largest in portfolio
Critical: Angular 7 reached end-of-life in April 2020. This means no security patches have been issued by the Angular team for over 6 years. While archived, any running instances of this app represent a significant security risk.
2. Notable Findings

Strengths (Relative to Other Repos)

  • 138 Karma/Jasmine spec files — best test coverage in the portfolio by file count
  • EditorConfig file present
  • 6 contributors — largest contributor base
  • E2E test directory (Protractor)
  • i18n/translation setup (src/assets/i18n/)
  • README.md present

Critical Issues

  • Angular 7 — 6+ years past EOL
  • TypeScript 3.1.8 — severely outdated (current: 5.x)
  • No GitHub Actions CI/CD
  • No branch protection
  • Protractor E2E testing (officially deprecated by Angular team)
  • tslint instead of ESLint (tslint was deprecated in 2019)
  • 34 TODO/FIXME/HACK comments

Secret Scan Results

4 potential secret patterns detected in src/app/services/validation/messages.constant.ts and src/app/common/validation/messages.constant.ts. Both files contain constants named matchPassword and blankPassword — these appear to be validation message strings matching the pattern, not actual credentials. Confirm and document to suppress future alerts.
3. Recommendations
As this repository is archived, recommendations focus on risk mitigation for any running deployments.
PriorityAction
HIGHVerify no active production deployment is running from this codebase
HIGHIf still deployed: plan Angular upgrade path (Angular 7 → Angular 17+ is a major migration)
MEDDocument the archival decision and migration status in the repository description
MEDVerify the password-pattern false positives in messages.constant.ts are genuinely safe
LOWConsider deleting this repository if it is fully superseded by revique-web

reviqueui-2.0

ARCHIVED EMPTY REPO

Bitbucket migration mirror — failed migration, repository contains only a .gitignore

Language: None Default Branch: develop Branches: 1 Last Commit: 2025-07-02 Size: 0 KB
1. Repository Analysis
This repository is essentially empty. It was created on 2026-05-01 as a Bitbucket migration mirror but only contains a .gitignore file. The single commit ("Initial commit") was authored by Rakhee Atri on 2025-07-02, suggesting the migration timestamp may have been re-set during import. No source code was successfully migrated.
1
Total Files
0 KB
Repo Size
1
Contributor
0
TODOs/Issues

What Is/Was reviqueui-2.0?

Based on the naming convention and context from other repos, this was likely an intermediary version of the Revique UI — between the original reviqueui (React/Vite prototype) and the current revique-web production app. The migration appears to have failed silently.

2. Recommendations
PriorityAction
HIGHInvestigate why the source code migration failed and whether the Bitbucket source still exists
MEDEither re-attempt the Bitbucket migration or formally document that this codebase is superseded
MEDConsider deleting this repository to reduce organisational noise, or unarchiving and completing the migration

reviqueui

ARCHIVED PREDECESSOR

Bitbucket migration mirror — React/Vite/TypeScript prototype (predecessor to revique-web)

Language: TypeScript Default Branch: develop Branches: 21 Last Commit: 2025-07-20 Size: 2,295 KB
1. Repository Overview & Metadata
Archived
Status
3
Contributors
21
Branches
143
Total Files
PropertyValue
FrameworkReact (Vite) TypeScript
UI LibraryChakra UI (same stack as revique-web)
Package Namevite-react-typescript-starter — default Vite template name, not renamed
Contributorsprajyot-tote (253 commits), GopalKuchnaya (171), jayshrisonalekar (110)
Last Commit2025-07-20 — "added pwa in the app"
Husky.husky/pre-commitnpx lint-staged
READMEMissing
Tests0 test files
2. Notable Findings

Relationship to revique-web

The reviqueui codebase shares almost identical dependencies with revique-web (same Chakra UI v3, React, Vite, TypeScript, axios, dayjs, react-hook-form setup). This appears to be the direct predecessor — the "vite-react-typescript-starter" prototype that was later productionised as revique-web.

Notably, revique-web's README explicitly states: "based on the newer reviqueui codebase rather than the legacy hptui-2.0 admin application."

Strengths

  • Pre-commit hook configured via Husky (.husky/pre-commit → lint-staged)
  • ESLint configured (eslint.config.js)
  • Prettier in devDependencies
  • PWA support via vite-plugin-pwa
  • Multi-environment build scripts (dev, UAT, prod)

Weaknesses

  • Package name still vite-react-typescript-starter (default template)
  • No README.md
  • No automated tests
  • No GitHub Actions workflows
  • No branch protection
  • 8 TODO/FIXME comments
3. Dependencies

Dependencies are essentially identical to revique-web. This confirms the fork/successor relationship. Key packages:

  • react / react-dom (^19 implied)
  • @chakra-ui/react
  • axios
  • react-router-dom
  • react-hook-form
  • dayjs
  • framer-motion
  • recharts
  • xlsx
  • jspdf + autotable
  • @react-pdf/renderer
  • react-payment-inputs
  • react-datepicker
  • vite-plugin-pwa
4. Recommendations
PriorityAction
MEDFormally document this as the predecessor to revique-web in the repository description
MEDVerify no active deployments reference this archived codebase
LOWConsider deleting once revique-web has superseded all functionality

Consolidated Recommendations

Critical (Address Immediately)

#RepositoryIssueAction
1 All repos No branch protection on any default branch Add required PR reviews + status checks. Enforce admins. Prevent force-push. Start with revique-web.
2 revique-web, hptinvoices Dependabot disabled Enable in Settings → Security → Dependabot. Free feature — no excuse to leave off on active repos.
3 hptinvoices No GitHub Actions; relies on Bitbucket Pipelines Create GitHub Actions workflows mirroring the deploy pipeline. Decommission Bitbucket dependency.
4 hptui Angular 7 — 6+ years past EOL If actively deployed, begin Angular upgrade or full rewrite to revique-web stack. If not deployed, document formally.
5 reviqueui-2.0 Empty repository Recover source from Bitbucket, or delete the repository and document the decision.

High Priority (Address Within 2 Weeks)

#RepositoryAction
6revique-webAdd automated test step to CI pipeline (even a basic ESLint lint gate blocks broken PRs)
7revique-webAdd LICENSE file
8hptinvoicesAdd README.md documenting local setup, deployment, and architecture
9revique-web + hptinvoicesPrune stale branches — 68 and 100+ respectively
10hptinvoicesRemove/investigate commented-out token pattern in CommonHelper.js:794

Medium Priority (Address Within 1 Month)

#RepositoryAction
11All reposAdd GitHub repository topics/tags for discoverability
12revique-webAdd CONTRIBUTING.md and SECURITY.md
13hptinvoicesMigrate from moment.js to dayjs
14hptinvoicesAdd ESLint and Prettier configs
15revique-webConvert 39 TODO/FIXME comments to tracked GitHub Issues
16reviqueuiRename package.json name field from default Vite template name

Low Priority / Long-term

#RepositoryAction
17revique-webIntroduce unit/integration tests using Vitest (natural fit for Vite projects)
18hptinvoicesAdd integration tests for core invoice API endpoints
19hptuiPlan formal decommission or migration if still deployed
20reviqueuiConsider consolidating or deleting once revique-web is complete

Methodology & Limitations

Data Sources

  • GitHub REST API v3 (authenticated read-only access)
  • Local shallow clones (--depth 1) for file-level analysis
  • Static analysis (grep-based pattern matching)

API Endpoints Used

  • GET /repos/ReviqueInc/{name} — basic metadata
  • GET /repos/ReviqueInc/{name}/branches — branch list
  • GET /repos/ReviqueInc/{name}/commits — latest commit info
  • GET /repos/ReviqueInc/{name}/contributors — contributor list
  • GET /repos/ReviqueInc/{name}/contents/.github/workflows — workflow files
  • GET /repos/ReviqueInc/{name}/actions/runs — CI/CD run history
  • GET /repos/ReviqueInc/{name}/issues — open issues
  • GET /repos/ReviqueInc/{name}/pulls — open pull requests
  • GET /repos/ReviqueInc/{name}/branches/{branch}/protection — branch protection
  • GET /repos/ReviqueInc/{name}/dependabot/alerts — security alerts
  • GET /repos/ReviqueInc/{name}/contents/{file} — file existence checks
  • GET /repos/ReviqueInc/{name}/topics — repository topics

Local Analysis Performed

  • File type distribution (find + extension analysis)
  • Test file count (*.test.*, *.spec.*, __tests__)
  • TODO/FIXME/HACK grep across JS/TS source (excluding node_modules)
  • Config file presence (.eslintrc, .prettierrc, .editorconfig, husky)
  • Documentation file presence (README, CONTRIBUTING, LICENSE, SECURITY, CHANGELOG)
  • Secret pattern scanning (iE regex — values redacted, only file paths reported)
  • Directory structure (maxdepth 3)
  • Git commit count via rev-list

Limitations

  • Shallow clone (--depth 1) means commit history metrics show "1 commit" locally — actual commit history is available via API
  • Commit activity statistics endpoint returned computing/no-data for repos — GitHub caches these asynchronously
  • Branch protection check returned "Not Found" for all repos — this indicates protection is NOT configured (the API returns 404 when no protection exists, not an access error)
  • Dependabot alerts: disabled for active repos; unavailable for archived repos
  • revique-web contributors API returned 0 — likely due to the repo being very new and contributor stats still computing, or commits being authored via token identities
  • npm outdated analysis was not run to avoid network overhead in CI; dependency version evaluation was done via package.json inspection