Thank you for your interest in contributing! Continuum is a small, focused open-source project and we welcome contributions of all kinds.
Continuum is built around three non-negotiables:
- Local-first — user data must never leave the device unless the user explicitly exports it
- No subscription — the app will always be free and open-source
- Simplicity — envelope budgeting is already a proven method; we don't need to invent new features
Before opening a PR for a new feature, please open an issue first so we can align on whether it fits these principles.
# Clone the repo
git clone https://github.com/continuum-memory/continuum.git
cd continuum
# Install dependencies
npm install
# Start dev server
npm run dev- Tech stack: React 18, TypeScript, Vite, Tailwind CSS, Framer Motion
- State: Local state with
localStoragepersistence — no backend, no database - Routing: React Router v6
- Keep PRs focused — one fix or feature per PR
- Write descriptive commit messages
- Ensure
npm run type-checkpasses before submitting - Add a screenshot or screen recording for UI changes
- TypeScript strict mode is enabled — no
any, no unchecked types - Components go in
src/components/(reusable) orsrc/pages/(route-level) - Shared logic goes in
src/lib/orsrc/hooks/ - Use Tailwind utility classes; avoid custom CSS unless unavoidable
Open a GitHub issue with:
- A clear description of the bug
- Steps to reproduce
- Your browser and OS
By contributing, you agree your contributions will be licensed under the MIT License.