A privacy-first credit card expense tracker with smart NLP entry, multi-card billing cycle management, 6 color themes, and deep analytics β built entirely offline with no cloud dependencies.
π Your financial data never leaves your machine. No cloud. No API calls. No telemetry. Just you and your SQLite database.
|
|
- Node.js 18+ (download)
- npm 9+ (comes with Node.js)
# Clone the repository
git clone https://github.com/CmdShiftExecute/Personal-Projects.git
cd Personal-Projects/cardpulse
# Install dependencies
npm install
# Start the development server
npm run devOpen http://localhost:3000 β you'll be guided through PIN setup on first launch.
| Step | What Happens |
|---|---|
| 1οΈβ£ | Database auto-created with categories, labels, keyword rules |
| 2οΈβ£ | Create your PIN (4β6 digits, bcrypt-hashed) |
| 3οΈβ£ | Dashboard loads β add your first transaction via Quick Add |
| 4οΈβ£ | Explore Analytics once you have a few transactions |
π‘ Tip: The PIN can be disabled from Settings > Security if you're running locally. See the Getting Started guide for details.
For detailed information, refer to the guides in the docs/ folder:
| Document | Target Audience | Description |
|---|---|---|
| π Getting Started | New Users | Installation, first run, PIN setup, your first transaction |
| π Dashboard Guide | All Users | Every dashboard section explained with interactions |
| βοΈ Transaction Entry | All Users | NLP quick-add, manual entry, learning, bulk operations |
| π³ Card Management | All Users | Credit cards, billing cycles, aliases, utilization |
| π¦ EMI Tracker | All Users | Installment plans, auto-generation, progress tracking |
| π Analytics Deep Dive | All Users | All 7 analytics tabs in detail |
| π― Budgets | All Users | Setting and tracking monthly spending limits |
| βοΈ Settings Reference | All Users | All 8 settings sections (themes, currency, backup, etc.) |
| π₯ Export Reports | All Users | XLSX export format and options |
| ποΈ Architecture Overview | Developers | Tech stack, DB schema, API routes, system design |
| π’ Deployment Guide | Developers | Local dev, production, VPS, SQLite considerations |
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Next.js 14 (App Router) | Full-stack React with API routes |
| Language | TypeScript (strict mode) | Type safety for financial data |
| Styling | Tailwind CSS 3.4 | Utility-first with CSS variable themes |
| Database | SQLite via better-sqlite3 |
Zero config, local-first, single file |
| ORM | Drizzle ORM | Lightweight, type-safe, SQLite-native |
| Charts | Recharts | Composable React-native charting |
| NLP/Matching | Fuse.js + custom rules | Offline fuzzy matching, no LLM |
| Export | ExcelJS | Styled XLSX with formatting |
| Animations | Framer Motion | Subtle micro-interactions |
| Icons | Lucide React | Clean, consistent iconography |
| Fonts | Inter + JetBrains Mono | Via next/font/google |
cardpulse/
βββ π src/app/ # Pages + API routes
β βββ dashboard/ # Main dashboard
β βββ transactions/ # Transaction list + entry
β βββ cards/ # Card management
β βββ emis/ # EMI tracker
β βββ analytics/ # 7-tab analytics
β βββ budgets/ # Budget management
β βββ settings/ # 8-section settings
β βββ api/ # 19 API endpoints
β
βββ π src/components/ # React components
β βββ ui/ # Reusable primitives
β βββ layout/ # Sidebar, header, ticker
β βββ providers/ # Theme context
β βββ dashboard/ # Dashboard sections
β βββ analytics/ # Charts and insight cards
β βββ ... # Cards, EMIs, budgets, etc.
β
βββ π src/lib/ # Core logic
β βββ db/ # Schema, seed, queries
β βββ nlp/ # 4-stage NLP parser
β βββ export/ # XLSX generator
β βββ format.ts # Currency/date formatting
β βββ cycle-utils.ts # Billing cycle math
β βββ chart-utils.ts # Shared chart helpers
β
βββ π docs/ # Documentation (11 guides)
βββ π data/ # SQLite database (gitignored)
βββ π drizzle/ # Generated migrations
| Variable | Default | Description |
|---|---|---|
DB_PATH |
./data/cardpulse.db |
Path to the SQLite database file |
Set in .env.local:
DB_PATH=./data/cardpulse.dbNo other environment variables needed. No API keys, no cloud services.
All settings are configurable from the Settings page:
| Setting | Default | Options |
|---|---|---|
| Currency | AED | AED, USD, EUR, GBP, INR, SAR, ... |
| Date Format | DD/MM | DD/MM, MM/DD |
| Number Format | 1,234.56 | comma_period, period_comma |
| Theme | Sage | Sage, Midnight, Cyberpunk, Molten, Mono, Terminal |
| Color Mode | Dark | Dark, Light |
| PIN | Enabled | Enable/Disable/Change |
| Metric | Count |
|---|---|
| π Pages | 9 (Dashboard, Transactions, Cards, EMIs, Analytics, Budgets, Settings, Lock, Setup) |
| π API Routes | 19 (CRUD + analytics + exports + NLP + auth + settings) |
| π§© Components | 70+ (UI primitives, page sections, charts, forms) |
| ποΈ DB Tables | 11 (cards, transactions, categories, subcategories, labels, keyword_rules, emis, budgets, settings, cycle_payments, transaction_labels) |
| π Keyword Rules | 91 pre-seeded (popular merchants, banks, services) |
| π·οΈ Labels | 25 system labels + unlimited custom |
| π Categories | 11 main β 68 subcategories |
| π¨ Themes | 6 themes Γ 2 modes = 12 combinations |
CardPulse is a personal project built as a portfolio piece. Contributions, suggestions, and bug reports are welcome! Feel free to open an issue or submit a pull request.
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β and π³ in Dubai, UAE
CardPulse v2.0 β developed across 14+ sessions using Claude Code as an AI pair programmer.















