If you are brand new, start with START_HERE.md.
Tartsi is a React and TypeScript web application that generates dramatic magic circles made from a geometric symbolic language. The visual language uses a wave-function-collapse-inspired constraint solver to arrange symbols into multiple concentric rings, creating ceremonial diagrams with an alchemical and cosmic aesthetic.
- Live application and docs: GitHub Pages
- Beginner onboarding: START_HERE.md
- Contributor workflow: CONTRIBUTING.md
- Security process: SECURITY.md
The repository is intentionally strict. It includes:
- A typed React application with beginner-focused source comments.
- Unit, component, accessibility, end-to-end, and repository-policy tests.
- API documentation generated from TSDoc comments via TypeDoc.
- A separate serveable documentation site for tutorials and beginner guides.
- A separate DokuWiki layer for wiki-style onboarding and deeper walkthroughs.
- GitHub Actions for linting, type checking, testing, coverage, security scans, dependency review, CodeQL, link checking, documentation builds, and GitHub Pages deployment.
Tartsi is meant to be both a visual toy and a learning project. It combines procedural generation, symbolic design, SVG rendering, strict quality gates, and beginner-friendly documentation in one place so a new developer can explore a real frontend codebase without having to guess how it is supposed to be built, tested, documented, and reviewed.
- Deterministic generation from human-readable seed phrases
- Multiple concentric rings with symmetry-aware symbol placement
- A geometric symbolic language composed of triangles, squares, diamonds, waves, spirals, petals, chevrons, and orbital patterns
- SVG rendering for crisp export quality
- In-app logging plus browser-console logging
- Export of generated circles as SVG
- Automated CI, linting, testing, docs, and deployment badges at the top of this README
- A repository description that explains the generator, the wave-function-collapse-inspired layout system, and the beginner-friendly documentation focus
- A GitHub Pages deployment intended to act as the project front door for demos and documentation
- React + TypeScript for a strict, maintainable UI
- Vite for fast development and static builds
- Vitest + Testing Library + jest-axe for unit, component, and accessibility testing
- Playwright for end-to-end browser validation
- TypeDoc for API documentation
- VitePress for the GitHub Pages documentation site
- DokuWiki for the separate beginner-friendly wiki layer
Run these commands in order:
npm run doctor
npm run setup
npm startWhen you want to build everything:
npm run build:allWhen you want to test everything:
npm run test:all- Node.js 20.19 or newer
- npm 10 or newer
- Python 3.10 or newer for repository policy tests
- Docker Desktop if you want to run the DokuWiki layer locally
npm run setupnpm startnpm run buildnpm run build:allnpm run test:allYou can still call the script files directly if you prefer script-folder entry points:
node ./scripts/build.mjsnpm run quality:verify
python -m pytest tests/test_repository.pydocker compose -f wiki/docker-compose.yml upsrc/: React application source codescripts/: beginner-friendly setup, build, run, and test entry pointsdocumentation-site/: GitHub Pages documentation site powered by VitePresswiki/: DokuWiki content and local serving configurationtests/: repository policy checks that protect project standards.github/workflows/: GitHub automation for quality, security, and documentation
- API reference: generated from source comments using TypeDoc
- Documentation site: beginner tutorials, architecture guides, testing guides, and library references
- Wiki: a browsable DokuWiki knowledge base for step-by-step onboarding
npm run dev: start the application in development modenpm run doctor: check whether the required tools are installednpm run setup: install the JavaScript and Python prerequisitesnpm start: start the development servernpm run build: type-check and build the applicationnpm run build:application: build only the Vite application bundlenpm run build:docs: build the API docs and documentation sitenpm run build:all: build the app, docs, and Pages packagenpm run test: run Vitest with coveragenpm run test:e2e: run Playwright browser testsnpm run test:repository: run the Python repository-policy testsnpm run test:all: run frontend, repository, and end-to-end testsnpm run docs:api: build API docs from TSDoc commentsnpm run docs:site:build: build the VitePress documentation sitenpm run docs:wiki:serve: start the DokuWiki layer with Dockernpm run pages:build: merge the app and documentation outputs for GitHub Pagesnpm run quality:verify: run the main local quality gate
- Want to know what must be installed first? Run
npm run doctor. - Want one command that installs what you need? Run
npm run setup. - Want to start the project? Run
npm start. - Want to build everything? Run
npm run build:all. - Want to test everything? Run
npm run test:all.
scripts/doctor.mjs: check which required tools are installedscripts/setup.mjs: install the JavaScript and Python prerequisitesscripts/start-development.mjs: start the development serverscripts/build.mjs: type-check and build the production appscripts/build-all.mjs: build the app, docs, and Pages outputscripts/build-docs.mjs: build the API docs and VitePress sitescripts/build-pages.mjs: combine the app and docs outputs for GitHub Pagesscripts/test-all.mjs: run the major automated test layers
- Read the documentation site starting at
documentation-site/guide/getting-started.md. - Read the DokuWiki
startpage and its architecture pages. - Open
src/domain/magicCircleLanguage.tsto understand the symbolic language. - Open
src/domain/waveFunctionCollapseEngine.tsto study the solver. - Open
src/components/MagicCircleCanvas.tsxto see how the final SVG is drawn.
- Required status checks from the workflows in
.github/workflows/ - Branch protection on the default branch
- At least one approving review
- CODEOWNERS-based review routing
- Secret scanning and dependency review
- GitHub Pages deployment from reviewed code only