- API Dockerfile: copy API's package.json (with 'type': 'module')
into runner so Node.js treats .js files as ESM
- docker-compose: change web host port from 3000 to 3001 to
avoid conflict with local dev server
- Remove host port mappings for postgres, redis, meilisearch
(services connect via internal Docker network)
- Remove prisma schema mount in initdb.d (Postgres only runs
.sql/.sh files; .prisma does nothing there)
- Keep api:4000 and web:3000:80 exposed for external access
- API Dockerfile: install all workspace packages with Scope: all 11 workspace projects
Already up to date
Done in 596ms using pnpm v11.15.1 (without filter) so prisma CLI is available
- Web Dockerfile: same fix for consistency
- Copy full apps/ directory during deps stage
Calendar:
- WeekView with hourly grid, event overlays, day headers
- DayView with vertical timeline, 16-hour range
- EventDialog with date/time/color picker and creation flow
- Year and Schedule views fall back to month view
AI & Search:
- AIAssistant wired into TipTap editor toolbar
- SearchBar integrated into app header (global search)
- Knowledge graph container in graph module
Code Splitting:
- Lazy-loaded NotesPage, TasksPage, CalendarPage with Suspense
- Shared main chunk reduced to 392KB (from 1022KB)
- Separate chunks: Notes (557KB), Tasks (53KB), Calendar (34KB)
Collaboration:
- WebSocket client connected to TipTap editor lifecycle
- Auto-connect/disconnect on note selection
- Presence broadcast infrastructure
Frontend → API:
- Editor auto-save with 1.5s debounce and status indicator
- Node service layer for data operations
- Node service layer connecting Zustand stores to REST API
- NotesPage fetches notes from API on mount with loading state
- NoteEditor auto-saves title and content with 1.5s debounce
- Optimistic updates with rollback on API errors
- Fallback to local-only mode when API is unavailable
- Proper save status indicators (Unsaved → Saving → Saved)
BUILDANDRUN.md — developer onboarding guide covering prerequisites,
quick start, CLI commands, scoped package execution, service URLs,
Docker production build, Tauri desktop build, and verification steps.
NEXTSTEP.md — comprehensive assessment of project state across all
6 phases, identifying what is solid vs placeholder, with prioritized
next steps: write tests, wire frontend to API, Prisma migrations,
finish calendar views, wire sync engine, code splitting, i18n.
Phase 4.1: AI Writing Assistant
- GPT-4o integration with OpenAI API (fallback to local parsing)
- Six AI actions: summarize, expand, rewrite, extract actions,
suggest links, smart schedule
- TipTap inline AI assistant panel with streaming-ready architecture
- Apply/dismiss UI for AI suggestions
- Rewrite style selector (concise, formal, simpler, detailed)
Phase 4.2: Natural Language Input
- /api/v1/natural-language endpoint for parsing unstructured text
- AI-powered extraction of type, title, date, priority, participants
- Local regex fallback when no API key configured
- Priority parsing (!1-5) and date detection (tomorrow, next week)
Phase 4.3: Knowledge Graph
- D3.js-ready graph visualization container
- Zoom in/out/fit controls
- Placeholder state with guidance for content creation
- Data model for nodes, links, and groups
Phase 4.4: Semantic Search Infrastructure
- Unified search bar with debounced input (300ms)
- Type-based result icons (note, task, event)
- Search result display with title and content preview
- pgvector and embedding pipeline data model in schema
Phase 2.1: Block-Based Editor
- TipTap/ProseMirror editor with StarterKit extensions
- Rich text toolbar (bold, italic, underline, strikethrough, headings, lists)
- Slash command menu with 9 block types (headings, lists, code, quote, divider)
- Markdown shortcuts and task list support
- Code blocks with lowlight syntax highlighting
Phase 2.2: Note CRUD & Organization
- Note sidebar with search/filter
- Note editor with auto-saving
- Zustand store with localStorage persistence
- API client for CRUD operations
- Optimistic UI updates
Phase 2.3: Full-Text Search
- API endpoint with PostgreSQL ILIKE search
- Frontend search input with result filtering
Phase 2.4: Bidirectional Linking
- Link extension configured in TipTap
- Note list with date formatting and tag display