7.6 KiB
7.6 KiB
ByteLyst NoteLett - Project Context
Purpose: This file provides project-specific context for AI coding agents working in this repository.
Companion Repositories (Always Available)
This repository has access to these companion repositories:
-
learning_ai_common_plat - Platform packages (@bytelyst/*)
- Context:
learning_ai_common_plat/REPO_CONTEXT.md - Provides: Shared libraries, configuration, auth, cosmos, telemetry, etc.
- Location:
../learning_ai_common_plat/
- Context:
-
learning_ai_devops_tools - Deployment and operational scripts
- Context:
learning_ai_devops_tools/REPO_CONTEXT.md - Provides: Deployment scripts, GitHub tools, operational automation
- Location:
../learning_ai_devops_tools/
- Context:
Project Overview
ByteLyst NoteLett - Agentic note-taking workspace for notes, tasks, relationships, and workspaces with:
- AI-powered note organization and linking
- Smart Actions with prompt templates
- Cross-product transcript and trail report imports
- MCP (Model Context Protocol) integration for external tools
- Multi-platform support (Web, iOS, Android)
Key Locations
Source Code
- Backend:
backend/- Fastify 5 + TypeScript ESM backend (port 4016) - Web:
web/- Next.js 16 + React 19 web app (port 3045) - Mobile:
mobile/- React Native + Expo companion app - Shared:
shared/- Shared TypeScript utilities
Configuration
- Backend Config:
backend/src/lib/config.ts- Zod-validated env config - Docker Config:
docker-compose.yml- Container orchestration - TypeScript Config:
backend/tsconfig.json,web/tsconfig.json
Documentation
- Product Docs:
docs/PRD.md,docs/ROADMAP.md - Production Readiness:
docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md - UI/UX Migration:
docs/UI_UX_PLATFORM_CORE_ROADMAP.md
Deployment Patterns
Primary Deployment Method
- Script:
learning_ai_devops_tools/deploy-notes.sh - Usage: Always check this script first before attempting custom deployment
- Pattern: Interactive menu with options for cache, force, and health checks
- Features:
- Package publication checks
- --no-cache support
- Health verification
- Dirty checks
Deployment Requirements
- GITEA_NPM_TOKEN: Required for @bytelyst/* package installation
- Network: Access to Gitea registry for package installation
- Build Order: learning_ai_common_plat → this project
MCP Integration
MCP Components
- MCP Tool Contracts:
backend/src/mcp/note-tool-contracts.ts - MCP Tools:
backend/src/mcp/note-tools.ts - MCP Registration:
backend/src/mcp/register-note-tools.ts
MCP Features
- 8 MCP Tools: Note CRUD, search, relationships, artifacts, etc.
- Zod Schemas: Type-safe tool definitions
- Integration: Fastify plugin for automatic registration
MCP Configuration
- Environment Variables:
MCP_SERVER_URL: MCP server endpointMCP_ENABLED: Feature flag (default: true)
Architecture Patterns
Backend Architecture
- Framework: Fastify 5 with TypeScript ESM
- Database: Azure Cosmos DB via @bytelyst/datastore
- Platform Integration: platform-service (port 4003) for auth, flags, telemetry
- Extraction: extraction-service (port 4005) for AI-powered task extraction
- LLM: @bytelyst/llm with retry + timeout hardening
Frontend Architecture
- Framework: Next.js 16 (App Router) + React 19
- State Management: Zustand + localStorage
- UI Components: @bytelyst/ui + custom components
- Styling: TailwindCSS v4 + design tokens (--nl-*)
Mobile Architecture
- Framework: React Native + Expo
- State Management: Zustand + MMKV
- Navigation: Expo Router
- Theme: NoteLystTheme from design tokens
Common Operations
Backend Development
cd backend
npm run dev # Start backend in dev mode
npm run build # Build TypeScript
npm run test # Run tests
Web Development
cd web
npm run dev # Start Next.js dev server
npm run build # Production build (uses --webpack flag)
npm run test # Run Vitest tests
Mobile Development
cd mobile
npm start # Start Expo dev server
Docker Development
docker compose up # Start all containers
docker compose down # Stop all containers
Important Notes
Platform Integration
- platform-service: Used for auth, billing, flags, telemetry, blob storage
- extraction-service: Used for AI-powered task extraction from notes
- Product ID: "notelett" (required for all Cosmos documents)
Feature Flags
- 20 Feature Flags: Core + Smart Actions features
- Client: @bytelyst/feature-flag-client
- Backend: backend/src/lib/feature-flags.ts
Design System
- Tokens: @bytelyst/design-tokens (--nl-* CSS custom properties)
- Components: @bytelyst/ui (Button, Card, Badge, Toast, etc.)
- Never hardcode colors: Always use theme tokens
Testing
Backend Tests
- Framework: Vitest
- Coverage: All modules (notes, workspaces, relationships, tasks, etc.)
- Location:
backend/src/modules/*/test.ts
Web Tests
- Framework: Vitest + Playwright
- Coverage: Components, E2E flows
- Location:
web/src/*.dom.test.tsx,web/e2e/
Mobile Tests
- Framework: Expo Test (planned)
Common Issues and Solutions
Platform Integration Issues
- "platform-service unreachable": Check PLATFORM_SERVICE_URL
- "Feature flag not found": Verify feature flag configuration
- "Telemetry disabled": Check TELEMETRY_ENABLED setting
Deployment Issues
- "Cannot find module @bytelyst/...": Build learning_ai_common_plat packages first
- "Gitea registry unauthorized": Check GITEA_NPM_TOKEN
- "Docker build network error": Ensure proper network access
Development Issues
- Port conflicts: Backend (4016), Web (3045)
- Environment variables: Copy backend/.env.example to backend/.env
- TypeScript errors: Run
npm run buildto see full error messages
Quick Reference
| Task | Command |
|---|---|
| Start development | cd backend && npm run dev |
| Build backend | cd backend && npm run build |
| Build web | cd web && npm run build -- --webpack |
| Deploy | ../learning_ai_devops_tools/deploy-notes.sh |
| Run tests | cd backend && npm run test |
| Docker compose | docker compose up -d |
First Steps for Any Task
-
Check companion repo contexts:
- Read
learning_ai_common_plat/REPO_CONTEXT.mdfor package patterns - Read
learning_ai_devops_tools/REPO_CONTEXT.mdfor deployment patterns
- Read
-
Check deployment scripts:
- Look for
learning_ai_devops_tools/deploy-notes.sh - Don't build custom deployment solutions
- Look for
-
Check project-specific context:
- Product docs:
docs/PRD.md,docs/ROADMAP.md - Production readiness:
docs/PRODUCTION_READINESS_HANDOFF_ROADMAP.md
- Product docs:
-
Verify environment setup:
- Check backend/.env is configured
- Ensure GITEA_NPM_TOKEN is set for deployment
Project-Specific Patterns
Note CRUD Pattern
- Types: Define Zod schemas in
types.ts - Repository: Use @bytelyst/datastore getCollection()
- Routes: Fastify routes with validation
- All documents include
productId: "notelett"
Smart Actions Pattern
- Prompt Templates: Stored in note-prompts module
- Runner: executePrompt() with retry + timeout
- Scheduler: Cron schedules + webhook triggers
- Integration: Web UI for template management
Cross-Product Integration
- Phase 1: Transcript import from LysnrAI
- Phase 3: Trail report import from ActionTrail
- Helpers: backend/src/lib/ecosystem-phase*.ts