Skip to content

razibit/cashew-desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cashew Desktop 💰

A full-featured budget & expense tracker desktop application built with Electron — inspired by the Cashew mobile app.

Track your spending, manage budgets, set savings goals, and visualize your financial data — all stored locally on your machine with no cloud required.


Features

  • Dashboard — spending overview, recent transactions, and wallet balances at a glance
  • Transactions — add, edit, and filter income/expense entries with category tagging
  • Budgets — set monthly or custom-period spending limits per category with visual progress bars
  • Goals — create savings goals and track progress over time
  • Wallets — manage multiple accounts (cash, bank, credit card, etc.)
  • Categories — fully customizable income and expense categories with icons
  • Statistics — interactive charts (bar, pie, line) powered by Chart.js for spending trends
  • Settings — theme switching (light/dark), currency selection, CSV import/export, and database backup/restore
  • Local-first — all data stored in a local SQLite database via better-sqlite3; nothing leaves your device

Screenshots

Cashew Desktop Demo


Tech Stack

Layer Technology
Shell Electron 31
Database better-sqlite3 (SQLite)
Charts Chart.js 4
Frontend Vanilla JS + CSS (no framework)
Packaging electron-builder

Getting Started

Prerequisites

  • Node.js v18 or later
  • Windows, macOS, or Linux

Installation

# Clone the repository
git clone https://github.com/razibit/cashew-desktop.git
cd cashew-desktop

# Install dependencies
npm install

# Rebuild native modules against Electron's Node.js runtime
npm run rebuild

Run in Development

npm start

To open DevTools automatically:

npm run dev

Build a Distributable

# Windows (.exe installer)
npm run build:win

# macOS (.dmg)
npm run build:mac

# Linux (.AppImage)
npm run build:linux

Built artifacts are output to the dist/ folder.


Project Structure

cashew-desktop/
├── main.js              # Electron main process — window creation, IPC handlers, SQLite
├── preload.js           # contextBridge — securely exposes APIs to the renderer
├── src/
│   ├── index.html       # App shell
│   ├── styles/
│   │   ├── main.css         # Layout and base styles
│   │   ├── themes.css       # Light/dark theme variables
│   │   └── components.css   # Reusable component styles
│   └── js/
│       ├── app.js           # Router and app initialization
│       ├── utils/
│       │   ├── helpers.js   # Shared utility functions
│       │   ├── icons.js     # Icon map
│       │   └── currency.js  # Currency formatting
│       └── components/
│           ├── home.js          # Dashboard
│           ├── transactions.js  # Transaction list & forms
│           ├── budgets.js       # Budget management
│           ├── goals.js         # Savings goals
│           ├── wallets.js       # Wallet accounts
│           ├── categories.js    # Category editor
│           ├── statistics.js    # Charts & analytics
│           └── settings.js      # App settings
└── package.json

Native Module Rebuilds

better-sqlite3 is a native Node.js addon. If you see an error like:

The module was compiled against a different Node.js version

Run the following with Electron closed:

npm run rebuild

This recompiles the native binary against the exact Node.js version bundled inside Electron.


Data & Privacy

All data is stored in a local SQLite database on your machine. No analytics, no telemetry, no network calls. You can back up or restore the database at any time from Settings → Data.


Credits

Inspired by Cashew — the open-source Flutter budget app by @jameskokoska.


License

GPL-3.0

About

Cashew - Budget & Expense Tracker Desktop App. A full-featured budget management application inspired by the Cashew mobile app.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors