Migrate from Firebase to file-based storage system
- Remove Firebase dependency and all Firebase code - Implement local file-based storage with encryption - Create custom authentication system with password hashing - Add API routes for auth (register/login) and data operations - Create FileStorageService for server-side file I/O - Add AuthService for client-side authentication wrapper - Update all components to use new storage system - Add comprehensive documentation (FILE_STORAGE.md, MIGRATION_SUMMARY.md) - Improve security with AES-GCM encryption and SHA-256 password hashing - Add ErrorBoundary component for better error handling - Fix multiple bugs: date serialization, transaction deletion, envelope calculations
This commit is contained in:
1 parent
174b247c6d
commit
959249ab22
22 files changed
+1538
-1157
No files matched your search
@@ -2,19 +2,25 @@
|
||||
|
||||
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
|
||||
|
||||
- **Envelope Management**: Create and manage budget envelopes for different spending categories
|
||||
- **Visual Progress Tracking**: See spending progress with color-coded progress bars
|
||||
- **Transaction History**: Track and view recent transactions
|
||||
- **Data Input Options**:
|
||||
- **🔐 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
|
||||
- **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
|
||||
- **✏️ 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
|
||||
|
||||
@@ -35,16 +41,42 @@ cd budget
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Run the development server:
|
||||
3. Create environment file:
|
||||
```bash
|
||||
cp .env.local.example .env.local
|
||||
```
|
||||
|
||||
4. Generate a secure encryption key:
|
||||
```bash
|
||||
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
||||
```
|
||||
|
||||
5. Update `.env.local` with your encryption key:
|
||||
```bash
|
||||
ENCRYPTION_KEY=your-generated-key-here
|
||||
```
|
||||
|
||||
6. Run the development server:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
4. Open [http://localhost:7654](http://localhost:7654) in your browser.
|
||||
7. Open [http://localhost:7654](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 `/data` directory 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](./FILE_STORAGE.md).
|
||||
|
||||
## Available Scripts
|
||||
|
||||
- `npm run dev` - Start the development server
|
||||
- `npm run dev` - Start the development server on port 7654
|
||||
- `npm run build` - Build the project for production
|
||||
- `npm run start` - Start the production server
|
||||
- `npm run lint` - Run ESLint for code quality checks
|
||||
@@ -62,21 +94,35 @@ public/ # Static assets
|
||||
|
||||
## Technologies Used
|
||||
|
||||
- **Next.js 16** - React framework with App Router
|
||||
- **Next.js 16** - React framework with App Router and API routes
|
||||
- **TypeScript** - Type-safe JavaScript
|
||||
- **Tailwind CSS** - Utility-first CSS framework
|
||||
- **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
|
||||
|
||||
1. **Create Account**: Open the app and click "Sign Up" to create your account
|
||||
2. **Setup Wizard**: Follow the guided setup to:
|
||||
- Add your first account (checking, savings, etc.)
|
||||
- Create initial budget envelopes
|
||||
- Set income allocation rules
|
||||
3. **Start Budgeting**: Begin tracking your income and expenses
|
||||
|
||||
### Daily Use
|
||||
|
||||
1. **View Dashboard**: The main page shows your budget overview and envelope cards
|
||||
2. **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
|
||||
3. **Monitor Envelopes**: Each envelope displays allocated amount, spent amount, and remaining balance
|
||||
4. **Track Progress**: Visual progress bars show spending percentage for each envelope
|
||||
5. **View Transactions**: Recent transactions are listed with envelope associations
|
||||
6. **Manage Accounts**: Switch between different accounts to track multiple bank accounts, credit cards, etc.
|
||||
|
||||
## Data Import
|
||||
|
||||
|
||||
Reference in new issue
Block a user