Budget_NodeJS_Svelte4 Svelte Themes

Budget_nodejs_svelte4

๐Ÿ’ฐ Windsurf Budget - Personal Finance Management

A comprehensive personal budget management application with multilingual support, expense tracking, savings goals, and financial reporting. Built with modular architecture following SOLID principles.

๐ŸŒŸ Key Features

๐Ÿ’ณ Transaction Management

  • โœ… Add/Edit/Delete transactions with validation
  • โœ… Income & expense tracking
  • โœ… Category management with custom icons/colors
  • โœ… Advanced filtering (date, category, type)
  • โœ… Search functionality with pagination
  • โœ… Quick transaction forms

๐ŸŽฏ Savings Goals

  • โœ… Create and manage multiple savings goals
  • โœ… Real-time progress tracking
  • โœ… Contribution management with history
  • โœ… Target date setting with reminders
  • โœ… Progress visualization with charts
  • โœ… Goal activation/deactivation

๐Ÿ“Š Reports & Analytics

  • โœ… Income vs expense trends
  • โœ… Category breakdowns with charts
  • โœ… Monthly/yearly statistics
  • โœ… Balance tracking over time
  • โœ… Export functionality

๐ŸŒ Multilingual Support

  • โœ… Bahasa Indonesia & English
  • โœ… Dynamic language switching
  • โœ… Database-stored preferences
  • โœ… Auto-route detection
  • โœ… Comprehensive translations

๐Ÿ‘ฅ User Management

  • โœ… Secure JWT authentication
  • โœ… User registration & profiles
  • โœ… Language preference storage
  • โœ… Session management

๐Ÿ—๏ธ Tech Stack

Backend Architecture

  • Node.js + Express.js - RESTful API server
  • MySQL + MariaDB - Relational database
  • JWT - Token-based authentication
  • bcryptjs - Password hashing
  • Modular Architecture - SOLID principles, SOC
  • Repository Pattern - Data access layer
  • Service Layer - Business logic separation

Frontend Architecture

  • SvelteKit - Modern web framework
  • Tailwind CSS - Utility-first styling
  • Chart.js - Data visualization
  • Axios - HTTP client
  • Lucide - Icon library
  • Svelte Stores - State management
  • Modular Components - Reusable UI elements

Development Tools

  • ESLint - Code linting
  • Prettier - Code formatting
  • Nodemon - Auto-restart dev server
  • Concurrently - Multi-process management

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+ installed
  • MySQL/MariaDB installed
  • Git (optional)

1. Database Setup

# Clone repository
git clone <repository-url>
cd Windsurf_Budget

# Create database
mysql -u root -p
CREATE DATABASE budget_app;
EXIT;

# Import schema
cd backend
mysql -u root budget_app < database/schema.sql

# Seed with sample data
npm run seed

2. Environment Setup

# Backend (already configured in .env)
cd backend
# Edit .env if needed (DB_HOST, DB_USER, DB_PASSWORD, etc.)

# Frontend
cd ../frontend
# .env already created with API_URL

3. Run Application

# Windows
start-dev.bat

# Linux/Mac
chmod +x start-dev.sh
./start-dev.sh

Option 2: Manual

# Terminal 1 - Backend
cd backend
npm run dev

# Terminal 2 - Frontend
cd frontend
npm run dev

4. Access Application

๐Ÿ‘ค Login Credentials

Sample users created with seed data:

User 1: John Doe

  • Email: john@example.com
  • Password: password123
  • Data: 25+ transactions, 4 savings goals, 8 custom categories

User 2: Jane Smith

  • Email: jane@example.com
  • Password: password123
  • Data: 10+ transactions, 2 savings goals, 4 custom categories

๐Ÿ“Š Features Overview

Transaction Management

  • Add/Edit/Delete transactions with validation
  • Income & expense tracking
  • Category management with custom icons/colors
  • Advanced filtering and search functionality
  • Pagination for large datasets

Savings Goals

  • Create and manage multiple savings goals
  • Real-time progress tracking with visual charts
  • Contribution management with detailed history
  • Target date setting and goal activation

Reports & Analytics

  • Interactive charts for income vs expense trends
  • Category breakdowns and spending analysis
  • Monthly/yearly statistics and balance tracking
  • Export functionality for financial data

Multilingual System

  • Bahasa Indonesia & English support
  • Dynamic language switching with persistence
  • Auto-route detection and comprehensive translations
  • Database-stored user preferences

User Experience

  • Responsive design for all devices
  • Modern UI with Tailwind CSS
  • Form validation and error handling
  • Loading states and smooth animations

๐Ÿ”ง Architecture & Development

Backend Structure (Modular Architecture)

backend/
โ”œโ”€โ”€ modules/                    # Feature-based modules
โ”‚   โ”œโ”€โ”€ auth/                   # Authentication (login, register)
โ”‚   โ”‚   โ”œโ”€โ”€ auth.controller.js
โ”‚   โ”‚   โ”œโ”€โ”€ auth.service.js
โ”‚   โ”‚   โ”œโ”€โ”€ auth.repository.js
โ”‚   โ”‚   โ””โ”€โ”€ auth.routes.js
โ”‚   โ”œโ”€โ”€ user/                   # User management
โ”‚   โ”‚   โ”œโ”€โ”€ user.controller.js
โ”‚   โ”‚   โ”œโ”€โ”€ user.service.js
โ”‚   โ”‚   โ”œโ”€โ”€ user.repository.js
โ”‚   โ”‚   โ””โ”€โ”€ user.routes.js
โ”‚   โ”œโ”€โ”€ transaction/            # Transaction CRUD
โ”‚   โ”‚   โ”œโ”€โ”€ transaction.controller.js
โ”‚   โ”‚   โ”œโ”€โ”€ transaction.service.js
โ”‚   โ”‚   โ”œโ”€โ”€ transaction.repository.js
โ”‚   โ”‚   โ””โ”€โ”€ transaction.routes.js
โ”‚   โ”œโ”€โ”€ category/               # Category management
โ”‚   โ”‚   โ”œโ”€โ”€ category.controller.js
โ”‚   โ”‚   โ”œโ”€โ”€ category.service.js
โ”‚   โ”‚   โ”œโ”€โ”€ category.repository.js
โ”‚   โ”‚   โ””โ”€โ”€ category.routes.js
โ”‚   โ”œโ”€โ”€ savings/                # Savings goals
โ”‚   โ”‚   โ”œโ”€โ”€ savings.controller.js
โ”‚   โ”‚   โ”œโ”€โ”€ savings.service.js
โ”‚   โ”‚   โ”œโ”€โ”€ savings.repository.js
โ”‚   โ”‚   โ””โ”€โ”€ savings.routes.js
โ”‚   โ””โ”€โ”€ report/                 # Analytics
โ”‚       โ”œโ”€โ”€ report.controller.js
โ”‚       โ”œโ”€โ”€ report.service.js
โ”‚       โ”œโ”€โ”€ report.repository.js
โ”‚       โ””โ”€โ”€ report.routes.js
โ”œโ”€โ”€ middlewares/                # Cross-cutting concerns
โ”‚   โ”œโ”€โ”€ auth.middleware.js      # JWT validation
โ”‚   โ”œโ”€โ”€ error.middleware.js     # Centralized error handling
โ”‚   โ””โ”€โ”€ validation.middleware.js
โ”œโ”€โ”€ utils/                      # Shared utilities
โ”‚   โ”œโ”€โ”€ logger.js               # Logging utility
โ”‚   โ”œโ”€โ”€ database.js             # DB connection
โ”‚   โ””โ”€โ”€ helpers.js              # Common helpers
โ”œโ”€โ”€ config/                     # Configuration
โ”‚   โ””โ”€โ”€ database.config.js
โ””โ”€โ”€ database/                   # Database setup
    โ”œโ”€โ”€ schema.sql              # Database structure
    โ””โ”€โ”€ seeds.sql               # Sample data

Frontend Structure (Feature-Based)

frontend/src/
โ”œโ”€โ”€ routes/                     # Pages & routing
โ”‚   โ”œโ”€โ”€ (auth)/                 # Authentication pages
โ”‚   โ”‚   โ”œโ”€โ”€ login/
โ”‚   โ”‚   โ””โ”€โ”€ register/
โ”‚   โ”œโ”€โ”€ dashboard/              # Main dashboard
โ”‚   โ”œโ”€โ”€ transactions/           # Transaction pages
โ”‚   โ”‚   โ”œโ”€โ”€ +page.svelte        # List view
โ”‚   โ”‚   โ”œโ”€โ”€ new/                # Create form
โ”‚   โ”‚   โ””โ”€โ”€ [id]/               # Edit/view details
โ”‚   โ”œโ”€โ”€ categories/             # Category management
โ”‚   โ”œโ”€โ”€ savings/                # Savings goals
โ”‚   โ”‚   โ”œโ”€โ”€ +page.svelte        # Goals list
โ”‚   โ”‚   โ”œโ”€โ”€ new/                # Create goal
โ”‚   โ”‚   โ””โ”€โ”€ [id]/               # Goal details & contributions
โ”‚   โ”œโ”€โ”€ reports/                # Analytics pages
โ”‚   โ””โ”€โ”€ settings/               # App settings
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ components/             # Reusable UI components
โ”‚   โ”‚   โ”œโ”€โ”€ ui/                 # Base UI components
โ”‚   โ”‚   โ”œโ”€โ”€ forms/              # Form components
โ”‚   โ”‚   โ””โ”€โ”€ charts/             # Chart components
โ”‚   โ”œโ”€โ”€ services/               # API layer
โ”‚   โ”‚   โ”œโ”€โ”€ auth.api.js
โ”‚   โ”‚   โ”œโ”€โ”€ transactions.api.js
โ”‚   โ”‚   โ”œโ”€โ”€ categories.api.js
โ”‚   โ”‚   โ”œโ”€โ”€ savings.api.js
โ”‚   โ”‚   โ””โ”€โ”€ api.service.js      # Base API client
โ”‚   โ”œโ”€โ”€ stores/                 # State management
โ”‚   โ”‚   โ”œโ”€โ”€ auth.store.js
โ”‚   โ”‚   โ”œโ”€โ”€ transactions.store.js
โ”‚   โ”‚   โ”œโ”€โ”€ categories.store.js
โ”‚   โ”‚   โ””โ”€โ”€ savings.store.js
โ”‚   โ”œโ”€โ”€ translations/           # Multilingual system
โ”‚   โ”‚   โ”œโ”€โ”€ general.js          # Common translations
โ”‚   โ”‚   โ””โ”€โ”€ routes/             # Route-specific translations
โ”‚   โ”‚       โ”œโ”€โ”€ transactions.js
โ”‚   โ”‚       โ”œโ”€โ”€ categories.js
โ”‚   โ”‚       โ”œโ”€โ”€ savings.js
โ”‚   โ”‚       โ””โ”€โ”€ settings.js
โ”‚   โ”œโ”€โ”€ settings/               # App configuration
โ”‚   โ”‚   โ””โ”€โ”€ language.js         # Language management
โ”‚   โ””โ”€โ”€ utils/                  # Helper functions
โ””โ”€โ”€ assets/                     # Static assets

Architecture Principles

  • SOLID Principles: Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion
  • Separation of Concerns (SOC): Clear boundaries between layers
  • Repository Pattern: Data access abstraction
  • Service Layer: Business logic encapsulation
  • Controller Pattern: HTTP request handling
  • Feature-based Structure: Organized by business features

Design Patterns

  • Modular Architecture: Each feature is self-contained
  • Dependency Injection: Loose coupling between components
  • Error Handling: Centralized error management
  • Validation: Input sanitization and validation
  • Authentication: JWT-based stateless auth
  • State Management: Svelte stores for reactive state

๐ŸŒ API Documentation

Authentication Endpoints

  • POST /api/auth/login - User authentication
  • POST /api/auth/register - User registration
  • GET /api/auth/profile - Get user profile
  • PUT /api/auth/profile - Update profile
  • POST /api/auth/logout - User logout

Transaction Endpoints

  • GET /api/transactions - List with pagination & filtering
  • POST /api/transactions - Create new transaction
  • GET /api/transactions/:id - Get transaction details
  • PUT /api/transactions/:id - Update transaction
  • DELETE /api/transactions/:id - Delete transaction

Category Endpoints

  • GET /api/categories - List user categories
  • POST /api/categories - Create category
  • PUT /api/categories/:id - Update category
  • DELETE /api/categories/:id - Delete category

Savings Goals Endpoints

  • GET /api/savings - List savings goals
  • POST /api/savings - Create savings goal
  • GET /api/savings/:id - Get goal details
  • PUT /api/savings/:id - Update goal
  • DELETE /api/savings/:id - Delete goal
  • POST /api/savings/:id/contributions - Add contribution
  • GET /api/savings/:id/contributions - Get contribution history
  • DELETE /api/savings/contributions/:id - Delete contribution

Reports Endpoints

  • GET /api/reports/summary - Financial summary
  • GET /api/reports/trends - Income/expense trends
  • GET /api/reports/categories - Category breakdowns
  • GET /api/reports/savings - Savings progress

Settings Endpoints

  • GET /api/settings/language - Get language preference
  • PUT /api/settings/language - Update language preference

๐Ÿงช Testing

Backend Testing

cd backend
npm test

Frontend Testing

cd frontend
npm run check
npm run lint

๐Ÿ“ Database Schema

Tables

  • users - User accounts
  • categories - Transaction categories
  • transactions - Financial transactions
  • savings_goals - Savings targets
  • savings_contributions - Goal contributions

Relationships

  • Users โ†’ Categories (1:N)
  • Users โ†’ Transactions (1:N)
  • Users โ†’ Savings Goals (1:N)
  • Categories โ†’ Transactions (1:N)
  • Savings Goals โ†’ Contributions (1:N)

๐Ÿ”’ Security Features

Authentication & Authorization

  • JWT Tokens: Stateless authentication with expiration
  • Password Hashing: bcryptjs with salt rounds
  • Session Management: Secure token handling
  • Route Protection: Middleware-based access control

Data Protection

  • Input Validation: Comprehensive request validation
  • SQL Injection Prevention: Parameterized queries
  • XSS Protection: Input sanitization and output encoding
  • CORS Configuration: Cross-origin request security
  • Rate Limiting: API abuse prevention

Best Practices

  • Environment Variables: Secure configuration management
  • Error Handling: Non-sensitive error messages
  • Logging: Security event tracking
  • HTTPS Ready: Production deployment ready

๐ŸŒ Multilingual System

Supported Languages

  • Bahasa Indonesia (Default)
  • English

Implementation Features

  • Dynamic Translation: Runtime language switching
  • Route Detection: Automatic language context
  • Database Storage: User preference persistence
  • Fallback System: Graceful degradation
  • Comprehensive Coverage: All UI elements translated

Translation Structure

translations/
โ”œโ”€โ”€ general.js              # Common translations
โ””โ”€โ”€ routes/                 # Route-specific translations
    โ”œโ”€โ”€ transactions.js    # Transaction module
    โ”œโ”€โ”€ categories.js       # Category module
    โ”œโ”€โ”€ savings.js          # Savings module
    โ”œโ”€โ”€ reports.js          # Reports module
    โ””โ”€โ”€ settings.js         # Settings module

Usage Pattern

import { getLabel } from "$lib/settings/language.js";

// Automatic route detection
const title = getLabel("title");

// Manual language specification
const title = getLabel("title", "en");

๐ŸŽจ UI/UX Features

Design System

  • Responsive Design: Mobile-first approach
  • Modern UI: Tailwind CSS utility framework
  • Interactive Charts: Chart.js data visualization
  • Smooth Animations: CSS transitions and Svelte animations
  • Accessibility: Semantic HTML and ARIA labels

User Experience

  • Form Validation: Real-time validation feedback
  • Loading States: Skeleton loaders and spinners
  • Error Handling: User-friendly error messages
  • Navigation: Intuitive routing and breadcrumbs
  • Feedback: Success notifications and confirmations

Performance Features

  • Lazy Loading: Component-level code splitting
  • Optimized Queries: Efficient database operations
  • Caching Strategy: Response caching for better performance
  • Bundle Optimization: Tree shaking and minification

๐Ÿ“ˆ Performance & Scalability

Optimization Techniques

  • Database Indexing: Optimized query performance
  • Pagination: Efficient handling of large datasets
  • Connection Pooling: Database connection management
  • Static Asset Optimization: Image and file compression

Scalability Considerations

  • Modular Architecture: Easy feature additions
  • API Versioning: Backward compatibility
  • State Management: Efficient data flow
  • Component Reusability: DRY principle implementation

๐Ÿš€ Deployment Guide

Development Environment

# Quick start with automatic scripts
./start-dev.sh        # Linux/Mac
start-dev.bat         # Windows

# Manual development setup
npm run dev:backend   # Terminal 1
npm run dev:frontend  # Terminal 2

Production Deployment

# Backend production
cd backend
npm run build
npm start

# Frontend production
cd frontend
npm run build
npm run preview

Environment Configuration

# Backend (.env)
NODE_ENV=production
DB_HOST=your-db-host
DB_USER=your-db-user
DB_PASSWORD=your-db-password
DB_NAME=budget_app
JWT_SECRET=your-jwt-secret
FRONTEND_URL=https://your-domain.com

# Frontend (.env)
VITE_API_URL=https://your-api-domain.com/api

Docker Support (Optional)

# Dockerfile configuration available
docker-compose up -d  # Full stack deployment

๐Ÿค Contributing Guidelines

Development Workflow

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Submit Pull Request

Code Standards

  • ESLint: Follow linting rules
  • Prettier: Consistent code formatting
  • Modular Structure: Maintain architecture patterns
  • Testing: Add tests for new features
  • Documentation: Update README and code comments

Branch Naming

  • feature/ - New features
  • bugfix/ - Bug fixes
  • hotfix/ - Critical fixes
  • docs/ - Documentation updates

๐Ÿ†˜ Troubleshooting

Common Issues & Solutions

Database Connection Issues

# Check MySQL/MariaDB status
sudo systemctl status mysql

# Verify database exists
mysql -u root -p -e "SHOW DATABASES;"

# Recreate database
mysql -u root -p -e "DROP DATABASE IF EXISTS budget_app; CREATE DATABASE budget_app;"

CORS Problems

# Check environment variables
echo $FRONTEND_URL
echo $VITE_API_URL

# Verify backend CORS configuration
# Check backend/middlewares/auth.middleware.js

Authentication Issues

# Reset seed data
cd backend
npm run seed

# Check JWT secret
echo $JWT_SECRET

Frontend Build Issues

# Clear node modules
rm -rf node_modules package-lock.json
npm install

# Check for TypeScript errors
npm run check

Getting Help

  • Console Logs: Check browser and server logs
  • Network Tab: Verify API calls in browser dev tools
  • Database Logs: Check MySQL error logs
  • GitHub Issues: Create detailed issue reports

๐Ÿ“ž Support & Contact

Project Information

  • Version: 2.0.0 (Multilingual Release)
  • License: MIT License
  • Node.js: 18+ required
  • Database: MySQL/MariaDB 8.0+

Contributors Welcome!

  • ๐Ÿ› Bug Reports: Help us improve
  • ๐Ÿ’ก Feature Requests: Suggest improvements
  • ๐Ÿ“ Documentation: Help with docs
  • ๐ŸŒ Translations: Add new languages

๐ŸŽ‰ Happy Budgeting with Windsurf Budget! ๐Ÿ’ฐ๐Ÿ“Š

Built with โค๏ธ using modern web technologies and best practices

Top categories

Loading Svelte Themes