A modern, full-stack web application for creating, managing, and downloading professional invoices. Built with performance and scalability in mind.
Invoice Builder helps businesses turn their data into professional invoices with just a few clicks. Perfect for freelancers, small businesses, and finance teams who need reliable invoicing without complexity.
- Create Professional Invoices - Build invoices with customer data, line items, and automatic calculations
- Customer & Sender Management - Store and reuse customer and business information
- Smart Calculations - Automatic totals, taxes, and discounts
- PDF Generation - Download beautiful, print-ready invoices
- Status Tracking - Monitor invoice status from draft to paid
- Performance Optimized - Lightning-fast data loading with 87% faster queries
invoice-builder-app/
├── backend/ # Spring Boot API server
│ ├── src/ # Java source code
│ ├── docs/ # Documentation
│ └── README.md # Backend setup guide
├── frontend/ # React web application
│ └── invoice-builder-react/ # React + Vite setup
├── docker-compose.yml # Main Docker configuration
├── docker-compose.dev.yml # Development overrides
├── docker-compose.prod.yml # Production overrides
├── .env.example # Environment variables template
└── README.md # This file
- Framework: Spring Boot 4.0.2
- Language: Java 21
- Database: PostgreSQL 15
- Build Tool: Maven
- ORM: Spring Data JPA with Hibernate
- Migration: Liquibase
- Testing: JUnit 5, Spring Boot Test
- Framework: React 19.2.0
- Build Tool: Vite 7.2.4
- Language: JavaScript/TypeScript
- Styling: CSS3 (planned: Tailwind CSS)
- Containerization: Docker & Docker Compose
- Database: PostgreSQL 15 in Docker
- Version Control: Git
- Invoice Module - Invoice creation, management, and PDF generation
- Customer Module - Customer data management and relationships
- User Module - User authentication, roles, and access control
- Payment Module - Payment tracking, status, and processing
- Reports Module - Analytics, summaries, and dashboard metrics
- Domain-Driven Design - Clear module boundaries
- API Versioning - Backward-compatible API evolution
- Database Relationships - Proper foreign key constraints
- Security Layers - Module-level access control
- Docker & Docker Compose
- Git
git clone <repository-url>
cd invoice-builder-appcp .env.example .env
# Edit .env with your secure credentialsDevelopment Environment:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --buildProduction Environment:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build- Frontend: http://localhost:3000
- Backend API: http://localhost:8080/api/v1
- Database: localhost:5432 (internal)
- API Documentation: http://localhost:8080/swagger-ui.html
Start All Services:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --buildStart Specific Service:
# Start only backend
docker-compose up backend
# Start only database
docker-compose up postgres
# Start only frontend
docker-compose up frontendRebuild Specific Service:
# Rebuild backend only
docker-compose up --build backend
# Rebuild frontend only
docker-compose up --build frontend
# Force rebuild without cache
docker-compose build --no-cache backendStop Services:
# Stop all services
docker-compose down
# Stop specific service
docker-compose stop backend
# Remove volumes (clean start)
docker-compose down -vView Logs:
# View all logs
docker-compose logs
# Follow specific service logs
docker-compose logs -f backend
# View last 50 lines
docker-compose logs --tail=50 backendDevelopment to Production:
# Stop development
docker-compose down
# Start production
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --buildProduction to Development:
# Stop production
docker-compose down
# Start development
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build- Backend Documentation - API details, setup, architecture, and API versioning
- Performance Benchmark - Performance analysis and optimizations
- API Versioning Guide - API evolution and versioning strategy
- Frontend Documentation - UI components and setup
# Backend tests
docker-compose exec backend ./mvnw test
# Performance benchmarks
docker-compose exec backend ./mvnw test -Dtest=SimplePerformanceTest
# Frontend tests
docker-compose exec frontend npm test- Backend: Lombok for clean code, Spring Boot best practices
- Frontend: ESLint for code quality
- Performance: Optimized database queries with 87% faster loading
Our performance optimizations deliver significant improvements:
| Feature | Improvement | Impact |
|---|---|---|
| Invoice List Loading | 87% faster | Better user experience |
| Memory Usage | 59% reduction | Scalable architecture |
| Database Queries | Optimized projections | Faster response times |
See Performance Benchmark for detailed analysis.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Update documentation
- Submit a pull request
- Documentation: Check README files in each module
- Issues: Report bugs via GitHub Issues
- Performance: See performance benchmark documentation
Built for performance, scalability, and maintainability