So you want to hack on Luzzle? Welcome! We like text, fast SQL databases, and robust schemas. Here is how we build things around here.
Never forget: the .md files in the archive are the absolute source of truth.
The SQLite database is a disposable, derivative cache. If the database gets
corrupted, deleted, or thrown into the sun, we should be able to reconstruct the
entire state in seconds just by parsing the Markdown files again.
All parsing, schema validation, and storage operations must happen within
@luzzle/core. Never implement low-level filesystem or piece parsing in other
packages. Keep core generic, and let other packages import and reuse its
abstractions.
We write tests for everything.
- Coverage Targets: Code coverage should not go down. Always check
vitestreports and keep coverage at 100% (or very near it) where required. - CI Checks: Before pushing or committing, ensure you get
lint,build, andtestpassing locally.
Don't commit fixes until they are actually verified to work. Especially when working with Docker configs, Nginx caches, and worker job runners, run them locally, verify they perform correctly, and only then write your commit.
After any commit, follow up with documentation updates to keep the docs fresh, accurate and evolving in pace with codebase changes.
If you are working on the Web ecosystem (the explorer, worker, proxy, and other web helpers), please refer to the Web Development Standards for web-specific rules.