Skip to main content

Juniro Platform - Codebase Assessment

Comprehensive technical assessment of the Juniro codebase, architecture, implementation status, and recommendations.

Assessment Date: January 17, 2026
Assessor: AI Code Review
Scope: Full codebase review across all repositories Previous Assessment: Archived (see git history)


Executive Summary

LayerStatusNotes
ArchitectureStrongWell-designed, modern stack, clear separation
DocumentationExcellentComprehensive, well-organized, standardized
Backend APIMVP CompleteFunctional routes, 16 tables, not stubs
Design SystemCompleteAll portals migrated, 200+ components
Frontend UIs🟡 UI DoneAll portals deployed but use mock data
Frontend↔API IntegrationCritical GapFrontends not wired to API
Testing🟡 In ProgressDesign system: 14% coverage, portals: 0% E2E
Version ConsistencyStandardizedNode.js 20, Next.js 15, Zod 3 (completed Jan 8)
Agent SystemConsolidatedCentralized in juniro-docs (completed Jan 8)
Monitoring🟡 PartialHealth checks done, logging TODO

Bottom Line: The API and UI are both built. The critical missing piece is wiring the frontends to the API (2-3 weeks effort). Significant improvements in version standardization and agent consolidation since last assessment.


What I Understand from the Code

Product Concept

Juniro is a marketplace platform connecting parents with children's activity providers (sports, arts, STEM, camps). Think "Airbnb for kids activities."

Key Characteristics:

  • Multi-region: US and India with strict data separation
  • Multi-portal: Public website, Parents portal, Providers portal, Admin portal
  • Marketplace model: Commission-based revenue (likely)
  • Pre-launch phase: Currently in waitlist mode with functional CRM, email, analytics

Architecture Overview

Multi-Repository Architecture (Distributed):

  • 15+ separate GitHub repositories organized by function
  • Design system (juniro-design) as single source of truth
  • Backend API (juniro-api) serving all frontends
  • Frontend apps consuming synced design system components
  • Infrastructure automation (juniro-infra) for component syncing
  • Centralized docs (juniro-docs) via Docusaurus
  • Architecture Type: Hybrid Distributed Architecture (not a monorepo)

Tech Stack Highlights:

  • Frontend: Next.js 15, React 18, TypeScript, Tailwind CSS, Storybook
  • Backend: Hono (lightweight), Prisma ORM, PostgreSQL 16+, pgvector
  • Auth: Supabase Auth (JWT validation)
  • AI: Groq (LLM), Together AI (embeddings) - configured but not implemented
  • Payments: Stripe (US), Razorpay (India) - config ready, webhooks TODO
  • Infrastructure: Vercel, GitHub Actions, Docker

Current Status of the Code

Backend API (juniro-api)

Status:MVP Complete - Routes are fully implemented (not stubs)

Implementation Details:

  • Routes: 11 route modules with real database queries

    • activities.ts - Full CRUD with filtering, search, pagination
    • bookings.ts - Complete booking lifecycle with status transitions
    • sessions.ts - Session management with capacity tracking
    • providers.ts - Provider account management
    • reviews.ts - Review and rating system
    • auth.ts - Supabase Auth sync, account deletion
    • me.ts - User profile, children management
    • parents.ts - Parent profile operations
    • categories.ts - Category hierarchy
    • geography.ts - Countries, cities, localities
    • offerings.ts - Activity offerings/pricing
  • Database: 16 tables deployed with Prisma schema

    • User, Parent, Child, Provider, ProviderUser
    • Activity, Offering, Session, Booking
    • Category, Country, City, Locality, Location
    • Review, ProviderReview
  • Architecture Pattern: Business logic in routes (not in services layer)

    • Services directory exists but is empty
    • Logic is inline in route handlers
    • Functional but not ideal for testability/maintainability
  • Documentation: OpenAPI 3.1 + Scalar UI working

    • /docs endpoint for interactive API docs
    • /v1/openapi.json for OpenAPI spec export
  • TODOs: 5 minor items

    • Async job triggers (account deletion, email notifications)
    • Structured logging (currently console.log)
    • Partner API filtering (all routes shown, should filter by tag)
  • Multi-region: Architecture defined and implemented

    • Strict PII separation between US and India
    • home_region is immutable after user creation
    • Users can only write to their home region
  • TypeScript Errors: Pre-existing errors in sessions.ts (not blocking)

Design System (juniro-design)

Status:Complete - All portals 100% migrated (November 16, 2025)

Migration Status:

  • Total Components: ~200+ components
  • Total Files: 1000+ files
  • Success Rate: 100%
  • Build Errors: 0

Portal Breakdown:

PortalStatusComponentsNotes
shared-core✅ 100%All base componentsFoundation complete
shared-customer✅ 100%49 componentsFunctionally complete
public✅ 100%All pagesComplete with Pages/ structure
parent-portal✅ 100%56 componentsPhase 6 complete
provider-portal✅ 100%22 componentsPhase 7 complete
admin-portal✅ 100%14 componentsPhase 8 complete

Infrastructure:

  • Two separate Storybooks (Customer & Admin) deployed
  • Automated sync scripts working
  • Component library fully functional

Testing:

  • Coverage: ~14% (lines), 84% (branches), 80% (functions)
  • Test Files: 102 passing, 14 skipped
  • Total Tests: 1,700+ passing
  • Target: 70% coverage

Frontend Applications

Status: 🟡 UI Complete, Using Mock Data

Deployment Status:

PortalURLStatusData Source
Public Websitehttps://juniro.com✅ LiveMock data (waitlist mode)
Parents Portalhttps://juniro-web-parents.vercel.app✅ DeployedMock data (demo mode)
Providers Portalhttps://juniro-web-providers.vercel.app✅ DeployedMock data (demo mode)
Admin Portalhttps://juniro-web-admin.vercel.app✅ DeployedMock data (invite-only)

Critical Gap: Frontends not wired to API

  • All UIs use mock data from @/mocks/ directories
  • API is ready and functional
  • @api-wirer agent pattern defined but work not done
  • Estimated effort: 2-3 weeks to wire all portals

Mock Data Architecture:

  • Well-organized mock data in src/mocks/ directories
  • Used for Storybook stories and demo mode
  • Realistic examples (not "Lorem ipsum")
  • Ready to be replaced with API calls

Infrastructure (juniro-infra)

Status:Active - Design system automation working

  • Design system sync automation active
  • Manual control mode (appropriate for current phase)
  • 150+ components ready for export
  • GitHub Actions workflows configured

Documentation (juniro-docs)

Status:Excellent - Comprehensive and well-organized

  • Product documentation complete
  • Engineering guides comprehensive
  • Design system documentation thorough
  • PLG strategy documented
  • Launch implementation gaps clearly identified
  • Agent documentation centralized and consolidated

Improvements Since Last Assessment (Jan 8, 2026)

✅ Version Standardization (Completed Jan 8)

Before:

  • Node.js: Mixed versions (18, 20, 22)
  • Next.js: Mixed versions (14.x, 15.x)
  • Zod: Mixed versions (3.x, 4.x)

After:

  • ✅ Node.js: Standardized to 20.x across all repos
  • ✅ Next.js: Upgraded all web apps to 15.1.3
  • ✅ Zod: Standardized to 3.24.1 across all repos
  • ✅ CI/CD: Updated all workflows to Node.js 20
  • ✅ Builds: 7 of 8 repos build successfully

Impact: Reduced compatibility issues, easier maintenance, consistent developer experience

✅ Agent System Consolidation (Completed Jan 8)

Before:

  • Agent definitions scattered across repos
  • High duplication (30+ duplicate files)
  • Naming inconsistencies
  • CLAUDE.md inaccuracies

After:

  • ✅ Centralized in juniro-docs/docs/agents/
  • ✅ Shared base agents + domain variants pattern
  • ✅ Lightweight .mdc entry points in repos
  • ✅ Clear hierarchy: CLAUDE.md (repo context) → Agent docs (agent instructions)
  • ✅ Reduced from 30+ duplicates to ~25 consolidated agents

Impact: Single source of truth, easier maintenance, consistent agent behavior


Product Overview

Core Value Proposition

  • Parents: Discover and book activities for children
  • Providers: Grow business, manage classes, students, bookings
  • Platform: Marketplace connecting both sides

Key Features (Status)

FeatureAPI StatusUI StatusWired?
Activity discovery/search✅ Done✅ Done❌ Mock data
Booking management✅ Done✅ Done❌ Mock data
Provider onboarding✅ Done✅ Done❌ Mock data
Payment processing🟡 Config ready✅ Done❌ Webhooks TODO
Reviews and ratings✅ Done✅ Done❌ Mock data
AI-powered search❌ Not started❌ Not startedN/A
Multi-region support✅ Done✅ Done✅ Implemented

Roadmap

Immediate (P0 - Critical for MVP)

  1. Wire Frontends to API (2-3 weeks)

    • Add Supabase Auth to all frontends (3 days)
    • Create API client library (2 days)
    • Wire public site search (2 days)
    • Wire activity detail (1 day)
    • Wire booking flow (3 days)
    • Wire parent profile (2 days)
    • Wire children management (2 days)
    • Wire provider dashboard (3 days)
  2. Payment Webhooks (1 week)

    • Stripe webhook handler (3 days)
    • Razorpay webhook handler (3 days)
    • Update booking status on payment (1 day)
    • Wire payment UI to API (2 days)
  3. Booking Confirmation Emails (3 days)

    • Create email templates (1 day)
    • Integrate with booking flow (1 day)
    • Provider notification email (1 day)

Short-term (P1 - Should Have at Launch)

  1. WhatsApp Notifications (India) - Gupshup integration
  2. Admin API Endpoints - Provider verification, market control
  3. Analytics Dashboards - Posthog integration

Medium-term (P2 - Post-Launch)

  1. AI Search - Semantic search with embeddings
  2. Advanced Features - Family calendar, messaging, notifications

Issues of Concern

1. Critical: Frontend-API Disconnect ⚠️

Status: Frontends use mock data, API is ready and functional

Impact: Platform not functional end-to-end

Evidence:

  • Frontend code shows mockActivities, mockSearchActivities imports
  • @api-wirer agent pattern defined but work not done
  • API routes are fully implemented with real database queries

Effort: 2-3 weeks to wire all portals

Recommendation: Highest priority - this is the critical path to launch

2. Architecture: Business Logic in Routes

Status: Services directory is empty, logic is inline in route handlers

Impact: Harder to test, maintain, and reuse business logic

Evidence:

  • src/services/ directory exists but is empty
  • Route handlers contain database queries and business logic
  • Functions like getProviderForUser() are defined in route files

Recommendation: Extract to services layer incrementally (not blocking)

3. Payment Integration Incomplete

Status: Stripe/Razorpay configured but webhooks not implemented

Impact: Cannot process real payments

Effort: 1 week

Recommendation: Complete before launch

4. Missing Async Job System

Status: TODOs for async jobs (account deletion, email notifications)

Impact: Some operations are incomplete

Evidence:

  • // TODO: Trigger async job to: comments in auth.ts and sessions.ts
  • Account deletion marks for deletion but doesn't trigger cleanup

Recommendation: Add job queue (BullMQ, Bull, etc.)

5. Structured Logging Missing

Status: Error logging is TODO

Impact: Harder to debug production issues

Evidence:

  • // Log error (TODO: use structured logging) in error middleware

Recommendation: Add structured logging (Winston, Pino)

6. Testing Coverage Low

Status: Design system: 14% (target: 70%), Portals: 0% E2E (target: 50%)

Impact: Unknown reliability, harder to refactor

Evidence:

  • Design system has 1,700+ passing tests but low line coverage
  • Portal apps have no E2E tests

Recommendation: Establish coverage metrics and targets, add E2E tests

7. Pre-Existing TypeScript Errors

Status: TypeScript errors in juniro-api and juniro-platform

Impact: Build failures, type safety compromised

Evidence:

  • juniro-api/src/routes/sessions.ts: Type mismatches with Hono OpenAPI types
  • juniro-platform: Type errors in repository manager

Recommendation: Fix TypeScript errors (not blocking version standardization)

8. npm Audit Warnings

Status: Multiple repositories have security vulnerabilities

Impact: Potential security risks

Evidence:

  • npm audit reports vulnerabilities across multiple repos
  • Not critical but should be addressed

Recommendation: Review and fix security vulnerabilities

9. AI Service Layer Not Implemented

Status: AI architecture documented but not built

Impact: No AI features available

Evidence:

  • Groq + Together AI configured but unused
  • src/services/ai/ marked as TODO in CLAUDE.md

Recommendation: Defer to post-launch (P2)


Single Most Worrisome Fact

The frontends are not connected to the API.

While the API is fully functional (not stubs) and the UIs are built, they use mock data. This is the critical blocker preventing end-to-end functionality and delaying launch. The gap is well-documented with an @api-wirer agent pattern, but the work is not done.

Impact: Platform cannot process real user data or bookings

Effort: 2-3 weeks to wire all portals

Priority: P0 - Critical for MVP launch


Opportunities to Improve

1. Immediate: Wire Frontends to API

Priority: Highest - this is the critical path

Approach:

  • Use the @api-wirer agent pattern already defined
  • Start with public site search and booking flow (highest value)
  • Create shared API client library
  • Add Supabase Auth to all frontends
  • Wire incrementally, test as you go

Estimated: 2-3 weeks

2. Architecture: Extract Services Layer

Priority: Medium - improves maintainability

Approach:

  • Move business logic from routes to services incrementally
  • Start with most complex routes (bookings, activities)
  • Improves testability and reusability

Estimated: 2-3 weeks (can be done in parallel)

3. Testing: Establish Coverage Metrics

Priority: Medium - improves quality

Approach:

  • Set coverage targets (80%+ for API, 70% for design system, 50% E2E for portals)
  • Add coverage reporting to CI/CD
  • Document testing strategy
  • Start with critical paths (bookings, payments)

Estimated: 1 week setup

4. Observability: Add Monitoring

Priority: High - needed for production

Approach:

  • Structured logging (Pino/Winston)
  • Error tracking (Sentry)
  • Performance monitoring (DataDog/New Relic)
  • Health checks (already implemented)

Estimated: 1 week

5. Payment Integration: Complete Webhooks

Priority: P0 - needed for launch

Approach:

  • Implement Stripe webhook handler
  • Implement Razorpay webhook handler
  • Update booking status on payment
  • Wire payment UI to API

Estimated: 1 week

6. Async Jobs: Add Job Queue

Priority: Medium - improves scalability

Approach:

  • Add BullMQ or similar
  • Move async operations to jobs
  • Account deletion, email notifications, etc.

Estimated: 1 week

7. Security: Fix npm Audit Issues

Priority: Medium - reduces risk

Approach:

  • Review all npm audit warnings
  • Update vulnerable dependencies
  • Add security scanning to CI/CD

Estimated: 2-3 days

8. TypeScript: Fix Pre-Existing Errors

Priority: Medium - improves type safety

Approach:

  • Fix Hono OpenAPI type mismatches in sessions.ts
  • Fix repository manager types in juniro-platform
  • Ensure all repos build without errors

Estimated: 1-2 days


How Well Are agents.md and claude.md Defined?

CLAUDE.md Files

Status:Excellent - Present in 9 repositories

Quality Assessment:

  • ✅ Comprehensive, standardized, consistent format
  • ✅ Clear overview and purpose
  • ✅ Tech stack documentation
  • ✅ Architecture diagrams
  • ✅ Commands and workflows
  • ✅ Development guidelines
  • ✅ AI agent references (updated to link to centralized docs)
  • ✅ Ecosystem context (standardized section)
  • ✅ "Never Do This" sections

Strengths:

  • Consistent structure across repos
  • Good ecosystem context
  • Clear agent references (now centralized)
  • Practical development workflows

Recent Improvements:

  • ✅ Agent references updated to link to centralized docs (Jan 8)
  • ✅ Version requirements standardized (Jan 8)

Agent System

Status:Excellent - Centralized and well-organized (Jan 8 consolidation)

Organization:

  • ✅ Centralized in juniro-docs/docs/agents/
  • ✅ Shared base agents + domain variants pattern
  • ✅ Lightweight .mdc entry points in repos
  • ✅ Clear hierarchy and references

Agent Categories:

  • Shared Agents: @verifier, @ship-check, @design-audit, @api-wirer, @auth-implementer, @security-audit, @reviewer, @seo-audit, @a11y-audit
  • Domain-Specific Agents: @component-builder, @endpoint-builder, @docs-sync, @roadmap-updater, etc.

Strengths:

  • Agents are detailed and actionable
  • Context-aware and repo-specific
  • Cursor IDE integration (.mdc files)
  • Clear mission and ownership boundaries
  • Quality bars defined

Overall Assessment:Excellent - Comprehensive agent system with clear patterns, recently consolidated and improved


Additional Important Observations

Strengths

  1. Well-Architected: Clear separation of concerns, good patterns
  2. Documentation: Comprehensive and well-organized
  3. Modern Stack: Current technologies (Next.js 15, Node.js 20)
  4. Multi-Region: Thoughtful architecture for data separation
  5. Design System: Strong foundation with automation
  6. Type Safety: TypeScript throughout
  7. Standards: Consistent conventions across repos
  8. API Implementation: Routes are functional, not stubs
  9. Version Consistency: Standardized across repos (recent improvement)
  10. Agent System: Centralized and well-organized (recent improvement)

Risks

  1. Scope vs. Resources: Large scope, early implementation
  2. Frontend-API Gap: Critical blocker for launch
  3. Dependencies: Many moving parts (design system, API, multiple frontends)
  4. Multi-Region Complexity: High complexity for early stage
  5. Business Logic Location: In routes instead of services layer
  6. Testing Coverage: Low coverage may hide bugs
  7. Security Vulnerabilities: npm audit warnings need attention

Recommendations

  1. Prioritize: Focus on wiring frontends to API (critical path)
  2. Incremental Delivery: Ship working features incrementally
  3. Testing: Establish testing practices early
  4. Monitoring: Add observability from the start
  5. Services Layer: Extract business logic over time
  6. Payment Integration: Complete webhooks for launch
  7. Security: Address npm audit warnings
  8. TypeScript: Fix pre-existing errors

Architecture Decisions

Good Decisions:

  • ✅ Design system as single source of truth
  • ✅ Multi-region architecture for compliance
  • ✅ OpenAPI-first API design
  • ✅ Infrastructure as code approach
  • ✅ Version standardization (recent)
  • ✅ Agent system consolidation (recent)

Questionable Decisions:

  • ❓ Is multi-region needed at MVP stage?
  • ❓ Business logic in routes (should be in services)

Code Quality Observations:

  • ✅ API routes: Well-structured with proper error handling
  • ✅ Type safety: Strong TypeScript usage (with some errors to fix)
  • ✅ Validation: Zod schemas for request/response validation
  • ✅ Error handling: Custom error classes with proper HTTP status codes
  • ✅ Database queries: Proper Prisma usage with includes and relations

Summary

Overall Assessment

  • Architecture: ✅ Strong foundation, well-designed
  • Documentation: ✅ Excellent
  • Implementation: ✅ API complete, frontends need wiring
  • Version Consistency: ✅ Standardized (recent improvement)
  • Agent System: ✅ Centralized and well-organized (recent improvement)
  • Risk Level: 🟡 Medium (frontend-API gap is the blocker)

Critical Path

  1. Wire frontends to API (2-3 weeks) - HIGHEST PRIORITY
  2. Complete payment webhooks (1 week)
  3. Add booking confirmation emails (3 days)
  4. Fix TypeScript errors (1-2 days)
  5. Address security vulnerabilities (2-3 days)
  6. Establish testing and monitoring
  7. Ship MVP incrementally

Bottom Line

Well-architected platform with strong documentation. The API is functional (not stubs), but frontends are not connected. The frontend-API wiring is the critical blocker. The foundation is solid; execution needs prioritization and focus on the critical path. The @api-wirer agent pattern is well-defined, but the work needs to be done.

Recent Improvements: Version standardization and agent consolidation completed successfully (Jan 8, 2026), demonstrating good engineering practices and maintainability focus.


Last Updated: January 17, 2026
Next Review: After frontend-API wiring is complete