Repository layout
lumenstat
apps
packages
patches
deploy
infra
docs
scripts
examples
Why a patch set instead of a fork
Umami is kept as an upstream release plus a short series of patches. Each patch does one thing, has its own switch, and leaves Umami behaving like upstream when the switch is off. That keeps every privacy and anti-inflation change reviewable on its own, and makes an Umami upgrade a matter of rebasing a few small commits instead of merging two diverged codebases.Contributing
- Bugs and requests: open an issue on GitHub, or post on the feedback board if you are not on GitHub.
- Security problems: never in a public issue. Follow the security policy.
- Pull requests: keep them small, run the tests for what you touched (
npm testinapps/writer,pnpm vitest run src/lib/scfinvendor/umami,npm run buildinapps/dashboard), and explain the reason for the change, not only what changed. - Docs: pages live in
docs/. Preview withnpx mint devfrom that folder, and readdocs/AGENTS.mdfor the writing rules.