Files
mbatchelder b3ff23a5f0 feat: Phase 1 foundation - schema, auth, realtime, shell
- 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
2026-07-29 05:53:13 -04:00

1.5 KiB

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/