You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This directory contains comprehensive documentation for contributors working on the LiveCodes codebase. Each document covers a specific system or aspect of the application.
New to contributing? Start with the beginner-friendly introduction, including setup instructions, pull request guidelines, and code of conduct.
npm run test# Run all tests (typecheck + lint + unit)
npm run test:unit # Run Jest unit tests only
npm run test:unit -- --testPathPattern="compiler"# Run specific tests
npm run e2e # Run Playwright e2e tests
npm run typecheck:app # TypeScript type check
npm run lint:eslint # ESLint check
npm run fix # Auto-fix all linting issues
Development Workflow
npm run start # Dev server with watch (http://127.0.0.1:8080)
npm run build # Full production build
npm run docs # Start documentation server (http://localhost:3000/docs)
npm run storybook # Start storybook (http://localhost:6006)
Architecture Overview
flowchart TD
subgraph "Core"
A[core.ts<br/>Main Application]
B[config/<br/>Configuration]
C[storage/<br/>Persistence]
D[events/<br/>Event System]
end
subgraph "Editors"
E[monaco.ts]
F[codemirror.ts]
G[codejar.ts]
end
subgraph "Compilation"
H[compiler/<br/>Worker-based]
I[languages/<br/>Language Specs]
J[formatter/<br/>Prettier + Custom]
end
subgraph "UI"
K[UI/<br/>App Controllers]
L[html/<br/>Templates]
M[toolspane/<br/>Console/Tests]
end
subgraph "Services"
N[auth.ts]
O[share.ts]
P[modules.ts]
Q[sandbox.ts]
end
A --> B & C & D
A --> E & F & G
A --> H
H --> I
A --> J
A --> K
K --> L
A --> M
A --> N & O & P & Q
Loading
Key Design Principles
Client-side only - All compilation happens in the browser
Worker-based compilation - Heavy work off main thread
Lazy loading - Compilers and editors loaded on demand
Modular architecture - Factory functions, no classes
Type safety - Strict TypeScript with explicit types