Projects Overview
Made Open is a monorepo containing five projects. Each project delivers standalone value and can be developed, tested, and demonstrated independently. Together they form the complete platform.
Monorepo Layout
apps/
├── hub/ Core platform — all backend services
├── web/ Next.js web client — full portal + communication
├── android/ Kotlin Android app — full client + location sensor
└── windows/ Tauri Windows agent — browser automation + data sync
packages/
├── shared/ TypeScript types, Zod schemas, event catalog
└── ai/ AI service library — RAG, LLM routing, workflows
supabase/
├── migrations/ Schema migrations (all entities)
├── functions/ Edge Functions (webhook receivers)
└── seed.sql Dev seed data
Dependency Graph
packages/shared
┌──────┴──────┐
│ │
hub web
│
packages/ai
packages/sharedhas no workspace dependenciespackages/aidepends onpackages/sharedapps/hubdepends onpackages/sharedandpackages/aiapps/webdepends onpackages/sharedapps/androidandapps/windowshave no workspace dependencies (native projects)
Standalone Value Per Project
| Project | Standalone demo |
|---|---|
apps/hub | Start hub, add credentials, sync contacts from MS Graph, see data in Supabase |
apps/web | Open browser, login, see contacts, make a call, send SMS |
apps/android | Install, login, see contacts, make a call, see location streaming |
apps/windows | Install agent, see active app tracking, run a browser automation task |
packages/ai | Point at any Supabase project, ask a natural language question, get a data-grounded answer |
Communication Between Projects
Projects never call each other's code directly. They communicate through shared contracts:
| Channel | Used By |
|---|---|
| Supabase PostgreSQL | Hub writes; web + android read via Supabase JS |
| Supabase Realtime | Hub writes; web + android receive live updates |
| Hub REST API | Web + android call hub for actions (send message, place call, trigger rule) |
Hub /device-events | Android + Windows POST sensor data |
| NATS JetStream | Internal to hub only; not exposed to clients |
packages/shared types | TypeScript contract between hub and web |
Project Health Signals
Each project has its own first testable workflow. If that workflow works end-to-end, the project is healthy:
- hub: MS Graph contacts sync into Supabase →
data.EntityCreatedevent in NATS → audit log entry created - web: Login → contacts visible → make a WebRTC call → call record appears in Supabase
- android: Install → login → see synced contacts → location updates visible in hub
- windows: Active app tracking visible in tray → browser task executes → file appears in hub storage
- packages/ai: Semantic search returns relevant results from Supabase data
Initial Scope
All five projects ship with scoped initial feature sets that expand as additional capabilities are enabled:
| Project | Initial scope |
|---|---|
hub | Full backend: Plugin Manager, all services, MS Graph + Twilio plugins |
web | Contacts, dialer, SMS, credential wallet, basic rule builder |
android | Login, contacts, calls, location streaming |
windows | Active app tracking, basic sync; full browser automation available as an extended capability |
packages/ai | Embedding pipeline active; full agent available when AI credentials are added |
See 04-roadmap/phases.md for the full build breakdown.