Contmi is a budget-sharing application designed to help users manage and share their expenses with others. It is an open-source project with a focus on simplicity, privacy, and ease of use. Contmi is built as a progressive web app, allowing it to be accessed on any browser, including mobile devices. The application prioritizes a local-first approach, ensuring that users' data remains on their devices by default. Contmi is free of advertisements and does not have any premium offerings.
- 🔓 Free and Open Source: Contmi is an open-source project, providing transparency and encouraging community contributions.
- ✨ Easy to Use: The application aims to provide a user-friendly interface, making budget management and expense sharing simple and intuitive.
- 🌎 Local/Offline First: Contmi prioritizes storing and processing data locally, allowing users to access their budget information even without an internet connection.
- 🚫 No Ads or Premium Offers: Contmi is free from advertisements and does not offer any premium subscriptions or features.
- ⚙️ Easy to Self-Host: Contmi is designed to be easily self-hosted, giving users full control over their data and allowing customization to fit specific needs.
Contributing is highly recommended. Get in touch!
There are multiple packages in this repo:
- client: React and Vulcan browser frontend
- server: Express server acting as a data synchronization relay between clients
- schema: database schema shared between client and server
Vulcan allows each client device to store and persist a local copy of the app's data in an SQLite database. The server allows clients to synchronize and merge their respective version of the DB, thanks to a CRDT.
We're using Turborepo for monorepo management and pnpm for Node.js package management.
In the project's root, install dependencies for all packages:
pnpm i
And start all the development servers:
pnpm dev
The development client is exposed on your localhost:5173
.
For now, test the code by running:
pnpm lint
pnpm build
pnpm preview