Thanks for your interest in contributing! This guide will help you get started.
- Fork and clone the repo
- Install dependencies:
pnpm install - Copy
.env.exampleto.envand fill in your values - Set up the database:
cd packages/backend && npx prisma migrate dev - Start dev servers:
pnpm dev
- TypeScript - Strict types, avoid
any - React - Functional components with named exports
- Styling - TailwindCSS only (no inline styles)
- Imports - Use path aliases (
@/,@codeinsight/) - Validation - Zod for all input validation on the backend
Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- Browser/OS info
- Screenshots if applicable
Open an issue describing:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
- Create a branch from
main:git checkout -b feat/my-feature - Make your changes
- Ensure the build passes:
pnpm build - Run tests:
pnpm test - Commit using conventional commits
- Push and open a Pull Request
We use Conventional Commits:
feat: add new visualization for linked lists
fix: correct memory leak in playground mode
refactor: simplify quiz scoring logic
docs: update API documentation
test: add unit tests for user service
chore: update dependencies
packages/
├── frontend/ # React SPA - UI components, state management, visualizers
├── backend/ # Fastify API - routes, services, database access
├── shared/ # Shared TypeScript types and Zod schemas
- Lessons use pre-scripted JSON to drive visualizations (no simulator needed)
- Playground sends user code to language-specific simulators that return execution traces
- Visualizers render execution state (memory, variables, call stack) as interactive diagrams
- Open a Discussion for questions
- Check existing issues before creating new ones
By contributing, you agree that your contributions will be licensed under the MIT License.