- Rewrote Drizzle schema: 20 tables with enums, relations, indexes - Generated migration with DROP TABLE records (v1 EAV removal) - Added passkey auth routes (register/login) - Added requireWorkspaceAccess helper - Added seedDefaultData for Personal workspace + welcome note - Updated SSE endpoint for v2 entities + workspace_id filtering - Created recordActivity helper (insert + pg_notify) - Updated sidebar: Graph replaces Reports, removed Analytics - Updated command palette for v2 entities - Created AGENTS.md with locked contract - Created llm-wiki scaffold (5 stubs) - Added inline AGENT INSTRUCTION comments to all 50 API route files - Fixed globals.css border-border class conflict - Updated database.ts stub for v1 compatibility
43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
# Architecture
|
|
|
|
## System Overview
|
|
|
|
Project E is a full-stack personal productivity OS with realtime collaboration, AI agent integration, and keyboard-driven UI.
|
|
|
|
## Three-Layer Architecture
|
|
|
|
```
|
|
Frontend (Next.js React) → Next.js API Routes (business logic) → PostgreSQL (data store)
|
|
│ │
|
|
│ ├── NOTIFY (on write)
|
|
│ │
|
|
└── SSE (EventSource) ←────────┘
|
|
```
|
|
|
|
## Data Flow
|
|
|
|
1. User action → API route → Drizzle write → `pg.notify()` → SSE endpoint → Zustand store → UI update
|
|
2. External agent → MCP tool call → API route → Drizzle write → `pg.notify()` → SSE → UI update
|
|
3. Worker → webhook delivery / recurring spawn → API route → Drizzle write → `pg.notify()` → SSE → UI update
|
|
|
|
## Container Layout
|
|
|
|
- **project-e-web** — Next.js 15 (App Router), frontend + REST API + MCP + SSE
|
|
- **project-e-db** — PostgreSQL 16, all data + LISTEN/NOTIFY
|
|
- **project-e-worker** — Node.js worker, webhook delivery + recurring spawning + AI dispatch
|
|
|
|
## Monorepo Structure
|
|
|
|
```
|
|
ProjectE/
|
|
├── apps/
|
|
│ ├── web/ # Next.js 15 app
|
|
│ └── worker/ # Node.js worker process
|
|
├── packages/
|
|
│ ├── db/ # Drizzle schema + connection
|
|
│ └── shared/ # Shared types, schemas, constants
|
|
├── docker-compose.yml
|
|
├── AGENTS.md
|
|
└── llm-wiki/
|
|
```
|