TinySolutions
Developers

Comprehensive app model

Developer map of Tiny Solutions: shipped app, architecture, domain model, deferred surfaces, and final product target.

This is the working model of Tiny Solutions for developers. It names the app we have today, the modules we have partially rebuilt, and the final product target: a multi-agency Early Intervention operating system for service coordination, evaluation, provider work, billing, payroll, reporting, and compliance.

This page is intentionally comprehensive. It can mention roadmap, removed surfaces, module boundaries, and implementation files. It still must not include secrets, credentials, real child data, production environment values, or anything that would weaken HIPAA controls.

Status legend

StatusMeaning
ShippedPresent in the app and backed by real code paths.
PartialReal code exists, but the workflow is not yet the full product surface.
Removed or deferredIt existed as a direction or partial build and was stripped back or postponed.
Final targetIntended end-state capability, not a claim about current availability.
Mermaid diagram

Product in one picture

Tiny Solutions is one application binary that adapts per agency. Every agency gets the core platform. The modules around it turn on only when the agency does that kind of work.

Mermaid diagram

Current shipped app

The current app is the post-ENG-444 base: authentication, agency setup, minimal child records, members and roles, settings, subscription billing, audit, and security. Some deeper concepts have returned as foundations, especially IFSP plans, authorizations, assignment, care team, document handling, and medical info.

AreaStatusCurrent route or code surface
Marketing and public docsShippedsrc/app/(marketing), src/app/docs, content/docs
Auth and account recoveryShippedsrc/app/(auth), convex/auth.ts, convex/authOrchestrator.ts, convex/authRecovery.ts
Agency provisioningShippedconvex/lib/tenantProvisioning.ts, convex/agencyConfigs.ts
HomeShipped as onboarding-onlysrc/app/(dashboard)/home/page.tsx
Children listShippedsrc/app/(dashboard)/children/page.tsx, convex/children.ts
Child recordShippedsrc/app/(dashboard)/children/[childId], child tabs for basic info, medical, insurance, documents, notes, activity
ReferralsShipped core flowsrc/app/(dashboard)/referrals/new/page.tsx, convex/referrals.ts, convex/referralDrafts.ts
Medical infoShippedconvex/medicalInfo.ts, child Medical Info tab
InsuranceShippedconvex/insurance.ts, convex/childInsurancePolicies.ts, child Insurance tab
Documents and notesShippedconvex/documents.ts, convex/notes.ts, child Documents and Notes tabs
Case activity timelineShippedchild record activity surface backed by audit and domain events
Members directoryShippedsrc/app/(dashboard)/members/page.tsx, convex/members.ts
Admin members consoleShippedsrc/app/(dashboard)/settings/members/page.tsx
SettingsShippedagency, billing, security, sessions, SSO, recovery, audit, document types
Subscription billingShippedconvex/billing.ts, convex/billingActions.ts, Stripe
Audit logShippedconvex/audit.ts, convex/lib/withAudit.ts
IFSP plans and authorizationsPartialconvex/ifspPlans.ts, convex/authorizations.ts
Assignment and care teamPartialconvex/assignment.ts, convex/careTeam.ts
Today, payroll, reportsPlaceholder or deferredroutes exist, full workflows are not the final product yet

Architecture model

The app is a full-stack reactive monolith. Next.js owns routes and UI. Convex is the database, server function layer, storage layer, scheduler, and HTTP endpoint host. Better Auth stores identity data in Convex through its adapter. Stripe and Resend are external services with narrow boundaries.

Mermaid diagram

Route and surface map

Mermaid diagram

Domain class model

This is UML-style, but encoded as a Mermaid flowchart so it renders in the docs site. Edge labels carry the multiplicities and relationship meaning.

Mermaid diagram

Child lifecycle

The current model keeps one child record and changes its posture over time. Referral handling is part of the child lifecycle rather than a separate silo.

Mermaid diagram

Member and access lifecycle

Mermaid diagram

Document lifecycle

Documents are file-backed records. The final target keeps the same foundation and adds a richer inbox and library for agency-wide filing work.

Mermaid diagram

Billing lifecycle

Mermaid diagram

Final product dependency map

The end-state product keeps the current core and adds operational modules around the same agency, child, member, file, and audit foundations.

Mermaid diagram

Module status

ModuleCurrent statusFinal target
CoreShippedAgency, auth, members, child root, storage, audit, billing account, docs, settings.
Service coordinationShipped base, partial full workflowReferral intake, child record, notes, documents, transition, discharge, SC work queues.
EvaluationsDeferredMDE assignment, scheduling, evaluation documents, outcomes, evaluator workload.
Services and providersPartial foundationsProvider directory, credentials, authorizations, assignments, capacity, service delivery.
BillingShipped SaaS subscription; claims deferredStripe subscription now; final target adds EI claims billing and remittance work.
PayrollDeferredPay-rate rules, payable activity, payroll exports, reconciliation.
ReportsDeferredCompliance packets, operational reporting, billing reports, payroll reports.
Document operationsShipped child documents; partial inboxFinal target adds document inbox, library, verification queues, and templates.

Developer ownership map

SubsystemPrimary source
Docs sitecontent/docs, src/app/docs, src/components/mdx.tsx, source.config.ts
Navigationsrc/lib/nav-config.ts, src/components/shared/AppSidebar.tsx
App shellsrc/app/(dashboard)/layout.tsx, shared shell components
Authconvex/auth.ts, convex/betterAuth, src/lib/auth.ts, src/lib/authKit.ts
Agency scopeconvex/lib/tenantScope.ts, convex/lib/permissions.ts
Childrenconvex/children.ts, convex/schema/children.ts, src/app/(dashboard)/children
Referralsconvex/referrals.ts, convex/referralDrafts.ts, child/referral routes
Insuranceconvex/insurance.ts, convex/childInsurancePolicies.ts, src/components/insurance
Documentsconvex/documents.ts, convex/files.ts, convex/documentTypes.ts
Notesconvex/notes.ts, convex/notesActions.ts
Medical infoconvex/medicalInfo.ts, child Medical Info components
IFSP and authorizationsconvex/ifspPlans.ts, convex/authorizations.ts
Assignment and care teamconvex/assignment.ts, convex/careTeam.ts
Members and rolesconvex/members.ts, src/components/members, members routes
Billingconvex/billing.ts, convex/billingActions.ts, src/components/billing
Auditconvex/audit.ts, convex/lib/withAudit.ts, settings audit route
Security settingssessions, trusted devices, SSO, recovery, assurance, break-glass modules
Static guardsscripts/check-*.ts, scripts/guards.ts, docs/enforcement.md

Invariants developers must preserve

  1. Public Convex functions use agency-scoped wrappers. Do not expose raw unscoped database reads from public functions.
  2. Audit logs are append-only. Domain writes log through the established audit helpers and never patch, replace, or delete audit rows.
  3. Email contains no PHI. Resend messages use opaque links and generic text.
  4. Convex is the server state path. Dashboard data uses Convex queries and mutations, not ad hoc REST fetches.
  5. Role and capability checks happen on the server. Browser navigation filtering is only a convenience layer.
  6. Files are private storage objects with agency-scoped metadata and signed access paths.
  7. Module visibility is structural. Disabled or deferred modules should be absent or intentionally placeholder-gated, not half-visible as broken workflows.
  8. Public docs can describe architecture and roadmap, but must never publish credentials, secrets, real PHI, or environment-specific private values.

Removed or deferred surfaces

These are not forgotten. They are named so future rebuilds do not rediscover the same scope accidentally.

SurfaceCurrent stateRebuild trigger
Work queue dashboardRemoved; /home is onboarding-onlyRebuild when daily role-specific work queues are ready.
EDI claims billingDeferredRebuild with authorizations, activity, denial handling, and remittance model.
PayrollDeferredRebuild after pay-rate and payable-activity concepts are stable.
Reports hubDeferredRebuild from audit, billing, payroll, and compliance report requirements.
Provider directoryDeferred targetRebuild when provider agencies or service-delivery workflows need it.
Document inbox/libraryPartial targetRebuild when document filing is agency-wide, not only child-local.
Verification queueDeferred targetRebuild when services, billing, or documents require review workflows.
Full clinical tabsDeferredEvaluation, follow-ups, flags, meetings, ongoing care, plans, and authorizations return deliberately.
Caseload conceptRemoved as a standalone conceptRebuild only if assignment plus child-list views are not enough.

How to extend this model

When a new module or concept lands, update this page in the same change set as the implementation. Add it to the module status table, the domain model, and the developer ownership map. If it introduces a new lifecycle, add a state diagram. If it introduces a new agency-visible module, update the final product dependency map and the module gates.