1b269dedd9da3dd8732eb455c9dd3f0b0543fe40
Envelope Budgeting App
A modern web-based envelope budgeting application built with Next.js, TypeScript, and Tailwind CSS. This app helps you manage your finances using the traditional envelope budgeting method in a digital format.
🔒 Privacy-First Design: All your financial data is stored locally on your server in encrypted files. No cloud services, no data sharing, complete control over your information.
Features
- 🔐 Secure Local Storage: File-based storage with AES-GCM encryption
- 👤 User Authentication: Secure sign-up and login with password hashing
- 💰 Envelope Management: Create and manage budget envelopes for different spending categories
- 📊 Visual Progress Tracking: See spending progress with color-coded progress bars
- 💳 Account Management: Support for multiple accounts (checking, savings, credit cards, etc.)
- 📝 Transaction History: Track and view recent transactions
- 📥 Data Input Options:
- Manual Entry: Add individual transactions with amount, description, date, and envelope assignment
- File Import: Import transactions from bank exports (CSV, OFX, QFX, QBO formats)
- ✏️ Transaction Editing: Edit existing transactions with full details
- 🎨 Envelope Creation: Add new budget envelopes with custom colors and allocations
- 💸 Get Paid Feature: Automatically distribute income across envelopes
- 📤 Data Export: Export all data to CSV or JSON formats for backup or analysis
- 📈 Budget Overview: Monitor total allocated, spent, and remaining amounts
- 📱 Responsive Design: Works seamlessly on desktop and mobile devices
Getting Started
Prerequisites
- Node.js 18+ and npm
Installation
- Clone the repository:
git clone <repository-url>
cd budget
- Install dependencies:
npm install
- Create environment file:
cp .env.local.example .env.local
- Generate a secure encryption key:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
- Update
.env.localwith your encryption key:
ENCRYPTION_KEY=your-generated-key-here
- Run the development server:
npm run dev
- Open http://localhost:7654 in your browser.
Storage System
This application uses a local file-based storage system instead of cloud databases:
- All user data stored in
/datadirectory as encrypted JSON files - User credentials hashed with SHA-256
- Budget data encrypted with AES-GCM encryption
- Complete data portability and privacy
For detailed information about the storage system, see FILE_STORAGE.md.
Available Scripts
npm run dev- Start the development server on port 7654npm run build- Build the project for productionnpm run start- Start the production servernpm run lint- Run ESLint for code quality checks
Project Structure
src/
├── app/
│ ├── layout.tsx # Root layout component
│ ├── page.tsx # Main budgeting dashboard
│ └── globals.css # Global styles
public/ # Static assets
Technologies Used
- Next.js 16 - React framework with App Router and API routes
- TypeScript - Type-safe JavaScript
- Tailwind CSS 4 - Utility-first CSS framework
- React 19 - UI library
- Node.js Crypto - Encryption and password hashing
- ESLint - Code linting
How to Use
First Time Setup
- Create Account: Open the app and click "Sign Up" to create your account
- Setup Wizard: Follow the guided setup to:
- Add your first account (checking, savings, etc.)
- Create initial budget envelopes
- Set income allocation rules
- Start Budgeting: Begin tracking your income and expenses
Daily Use
- View Dashboard: The main page shows your budget overview and envelope cards
- Add Transactions:
- Manual Entry: Click "Manual Entry" and fill in transaction details
- File Import: Click "Import from File", select your bank export format, and upload the file
- Get Paid: Use the "Get Paid" feature to record income and automatically distribute to envelopes
- Monitor Envelopes: Each envelope displays allocated amount, spent amount, and remaining balance
- Track Progress: Visual progress bars show spending percentage for each envelope
- View Transactions: Recent transactions are listed with envelope associations
- Manage Accounts: Switch between different accounts to track multiple bank accounts, credit cards, etc.
Data Import
Supported File Formats
- CSV: Comma-separated values with columns: Date, Amount, Description, Category (optional)
- OFX/QFX: Standard bank export formats from most financial institutions
- QBO: QuickBooks Online format
- PDF: Coming soon (statement parsing)
CSV Format Example
Date,Amount,Description,Category
2024-01-15,-25.50,Weekly groceries,Groceries
2024-01-16,-12.00,Gas station,Transportation
2024-01-17,1500.00,Salary deposit,Income
Advanced Features
Transaction Editing
- Click the edit icon (pencil) next to any transaction to modify its details
- Update amount, description, date, and envelope assignment
- Changes automatically update envelope spending calculations
Envelope Management
- Click "Add Envelope" to create new budget categories
- Choose from multiple colors for visual organization
- Set custom budget allocations for each envelope
Data Export
- Export all transactions and envelopes to CSV for spreadsheet analysis
- Export to JSON format for data backup or integration
- Includes complete transaction history and envelope details
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
License
This project is licensed under the MIT License.
Languages
TypeScript
96.3%
Shell
3%
CSS
0.4%
JavaScript
0.2%
Dockerfile
0.1%