Take control of your personal finances with comprehensive tracking and insights
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
CoinGuard is a self-hostable web application for tracking personal finances - transactions, categories, bank accounts, and the analytics that come from them.
Key features include:
- Transaction Tracking: Record income, expenses and transfers, or import them from a bank export
- Categories: Organize transactions into categories
- Bank Accounts: Track balances across multiple accounts
- Monthly & Yearly Analytics: Break down spending and income over time
- Import Enrichment: Attach categories and descriptions to imported transactions before they're saved
CoinGuard is a pnpm/Turborepo monorepo built with:
CoinGuard is a pnpm workspace managed by Turborepo:
coin-guard/
├── apps/
│ └── web/ # Next.js app (routes, pages, UI logic)
├── packages/
│ ├── db/ # Prisma schema, migrations, and DB client
│ ├── ui/ # Shared component library (Base UI + shadcn)
│ ├── biome-config/ # Shared Biome (lint/format) config
│ └── ts-config/ # Shared TypeScript config
├── docker-compose.yml # Local PostgreSQL for development
└── Dockerfile # Production image for the web app
To get a local copy of CoinGuard up and running, follow these simple steps.
Make sure you have the following installed on your system:
- Node.js (version 20.9 or higher)
- pnpm (via corepack, which ships with Node)
corepack enable - Docker (to run the local PostgreSQL database)
- Clone the repository
git clone https://github.com/StereoPT/coin-guard.git cd coin-guard - Install dependencies
pnpm install
- Create your root env file and fill in the Postgres credentials and
DATABASE_URLcp .env.example .env.local
apps/web/.env.localandpackages/db/.envare symlinks to this root file, so this is the only one you need to edit. - Create the web app's env file
cp apps/web/.env.example apps/web/.env
- Start the local PostgreSQL database
docker compose up -d
- Apply database migrations and generate the Prisma client
pnpm db:migrate pnpm db:generate
- Start the development server
pnpm dev
- Open http://localhost:3000 in your browser to see the application
- Add transactions manually, or import them from a bank export (CSV)
- Organize transactions into categories you create and manage
- Track balances across multiple bank accounts
- During import, enrich each transaction with a category and description before it's saved
- Get a quick snapshot of your financial health, with recent transactions at a glance
- Break down spending and income by category over the month or year
Shipped
- Unified Analytics page (merge Monthly & Yearly views, with flexible date filtering)
- Flexible date filtering on Category Details
- Default bank account
- Grouped Lookup Descriptions
- Delete action for Lookup Logs
Up Next
- Optimistic UI updates
- Loading States
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make CoinGuard better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
StereoPT - @StereoPT - stereopt@gmail.com
Project Link: https://github.com/StereoPT/coin-guard
Special thanks to the following resources and tools that made CoinGuard possible:
