Enterprise-grade Business Management System built with Domain-Driven Design (DDD) and Hexagonal Architecture
Production-ready CRM system for business automation including:
- π§Ύ Invoicing & Billing - Invoice generation, payment tracking
- π¦ Inventory Management - Stock control, warehouses, reservations
- π₯ Party Management - Customers, suppliers, contacts
- π° Accounting - Chart of accounts, transactions, double-entry
- π Order Management - Sales orders, purchase orders
- π Document Management - PDF generation, signatures
- π File Management - Upload, processing, storage
- π Notifications - Email, SMS, push, in-app
- Architecture - System architecture and bounded contexts
- Setup Guide - Installation and configuration
- Development - Development workflow
- Database - Schema and migrations
- API Reference - REST API documentation
- Go 1.25+
- Node.js 20+ (24+ recommended)
- PostgreSQL 16+
- Redis 7+
- Docker & Docker Compose (optional)
# Clone repository
git clone https://github.com/basilex/skeleton.git
cd skeleton
# Start all services
make dev
# Services:
# - PostgreSQL: localhost:5432
# - Redis: localhost:6379
# - Backend API: localhost:8080
# - Frontend: localhost:3000# 1. Install dependencies
make install
# 2. Start database services
make db-up
# 3. Run migrations
make db-migrate
# 4. Seed database (optional)
make db-seed
# 5. Start backend (terminal 1)
make backend
# 6. Start frontend (terminal 2)
make frontendAfter running make db-seed:
- Email:
admin@skeleton.local - Password:
Admin1234! - Role:
super_admin
skeleton/
βββ backend/ # Go API server
β βββ cmd/api/ # Application entry point + Wire injector
β βββ internal/ # Bounded contexts (DDD)
β β βββ di/ # Wire DI provider sets & Dependencies struct
β β βββ accounting/ # Chart of accounts, transactions
β β βββ audit/ # Audit logging
β β βββ catalog/ # Products & services catalog
β β βββ documents/ # Document generation & signatures
β β βββ files/ # File upload & processing
β β βββ identity/ # Users, roles, permissions, sessions
β β βββ inventory/ # Warehouses, stock, movements
β β βββ invoicing/ # Invoices & payments
β β βββ notifications/ # Multi-channel notifications
β β βββ ordering/ # Sales & purchase orders
β β βββ parties/ # Customers, suppliers, partners
β β βββ status/ # Build info, health checks
β β βββ tasks/ # Background jobs
β βββ pkg/ # Shared packages
β β βββ cache/ # Redis/memory cache abstraction
β β βββ config/ # Configuration management
β β βββ eventbus/ # Event bus (memory/Redis)
β β βββ middleware/ # HTTP middleware
β β βββ money/ # Money value object (int64 cents)
β β βββ ratelimit/ # Rate limiting (token bucket/sliding window)
β β βββ transaction/ # Transaction manager
β β βββ uuid/ # UUID v7 generation
β βββ scripts/ # Database scripts
β β βββ seed/ # Seed sample data
β β βββ migrate/ # Migration tool
β βββ migrations/ # SQL migrations (52 tables)
β βββ tests/ # Integration tests
β βββ go.mod
βββ frontend/ # Next.js 16 application
β βββ app/ # App Router pages
β βββ components/ # React components
β β βββ ui/ # shadcn/ui components
β β βββ domain/ # Business components
β βββ lib/ # Utilities
β β βββ api/ # API client & endpoints
β βββ public/ # Static assets
β βββ package.json
βββ shared/ # Shared code between frontend/backend
β βββ types/ # TypeScript types
β βββ money.ts # Money class (matches Go)
β βββ api.ts # API types for all contexts
βββ scripts/ # Operational scripts
β βββ docker/ # Build scripts
β βββ deploy/ # Deploy scripts
β βββ ...
βββ docs/ # Documentation
βββ .github/workflows/ # CI/CD pipelines
βββ docker-compose.yml # Docker services
βββ Makefile # Development commands
βββ go.work # Go workspace
The system follows DDD principles with Bounded Contexts:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Layer (Gin) β
β REST endpoints β DTOs β Application Services β Domain β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Bounded Contexts β
βββββββββββββββββββ¬ββββββββββββββββββ¬ββββββββββββββββββββββββββ€
β Identity β Parties β Invoicing β
β - Users β - Customers β - Invoices β
β - Roles β - Suppliers β - Payments β
β - Sessions β - Partners β - Lines β
βββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββββββββββ€
β Accounting β Inventory β Ordering β
β - Accounts β - Warehouses β - Orders β
β - Transactions β - Stock β - Lines β
β - Journal β - Movements β - Status β
βββββββββββββββββββΌββββββββββββββββββΌββββββββββββββββββββββββββ€
β Catalog β Documents β Files β
β - Items β - Templates β - Upload β
β - Categories β - Signatures β - Processing β
βββββββββββββββββββ΄ββββββββββββββββββ΄ββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Infrastructure Layer β
β PostgreSQL β Redis β Email β SMS β Storage β Events β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- DDD: Bounded contexts, aggregates, domain events
- Hexagonal Architecture: Ports & adapters
- CQRS: Command Query Responsibility Segregation
- Event Sourcing: Domain events for cross-context communication
- Repository Pattern: Data access abstraction
- Value Objects: Money (int64 cents), Email, Phone
- Framework: Gin (HTTP router)
- Database: PostgreSQL 16+ with pgx driver
- Cache/Sessions: Redis 7+
- DI: Google Wire (compile-time dependency injection)
- Architecture: DDD + Hexagonal + CQRS
- Framework: Next.js 16 (App Router)
- Language: TypeScript 5
- UI: shadcn/ui + Tailwind CSS
- State: React Context + SWR
- Forms: React Hook Form + Zod
- Containerization: Docker + Docker Compose
- CI/CD: GitHub Actions
- Database Migrations: Custom SQL migrations
- Monitoring: Health checks, structured logging
make help # Show all commands
# Development
make dev # Start all services (Docker)
make backend # Wire generate + start backend server
make backend-wire # Regenerate Wire DI code (cmd/api/wire_gen.go)
make backend-build # Wire generate + compile binary with ldflags
# Database
make db-up # Start PostgreSQL + Redis
make db-migrate # Run migrations
make db-seed # Seed sample data
make db-shell # PostgreSQL CLI
# Testing
make test # Backend tests
make test-coverage # With coverage report
# Build (Docker)
make build # Build all Docker images
make build-backend # Build backend image (Wire + ldflags)
make build-frontend # Build frontend imagePOST /api/v1/auth/register # Register new user
POST /api/v1/auth/login # Login
POST /api/v1/auth/refresh # Refresh token
POST /api/v1/auth/logout # Logout
GET /api/v1/auth/me # Current user profile# Customers
GET /api/v1/customers # List customers
POST /api/v1/customers # Create customer
GET /api/v1/customers/:id # Get customer
PUT /api/v1/customers/:id # Update customer
# Invoices
GET /api/v1/invoices # List invoices
POST /api/v1/invoices # Create invoice
GET /api/v1/invoices/:id # Get invoice
POST /api/v1/invoices/:id/send # Send invoice
POST /api/v1/invoices/:id/payments # Record payment
# Orders
GET /api/v1/orders # List orders
POST /api/v1/orders # Create order
GET /api/v1/orders/:id # Get order
PATCH /api/v1/orders/:id/status # Update status
# Inventory
GET /api/v1/warehouses # List warehouses
POST /api/v1/warehouses # Create warehouse
GET /api/v1/stock # List stock
POST /api/v1/stock/adjust # Adjust stock
# Accounting
GET /api/v1/accounts # Chart of accounts
POST /api/v1/accounts # Create account
POST /api/v1/transactions # Record transactionFull API Reference: docs/API.md
# Run all tests
make test
# Run with coverage
make test-coverage
# Run integration tests
make test-integration
# Run specific package
cd backend && go test ./internal/invoicing/...# Run tests
cd frontend && npm test
# Run e2e tests
cd frontend && npm run test:e2eAutomatic deployment via GitHub Actions:
- Push to
devβ Deploy to staging - Push to
mainβ Deploy to production
# Build Docker images
./scripts/docker/build-all.sh v1.0.0
# Deploy to staging
./scripts/deploy/deploy-staging.sh
# Deploy to production
./scripts/deploy/deploy-production.sh- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'feat: add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
This project follows Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentationrefactor:- Code refactoringtest:- Testschore:- Maintenance
MIT License - see LICENSE for details.
- Issues: GitHub Issues
- Email: support@skeleton.local
- Docs: Documentation
- β Monorepo structure (backend + frontend)
- β 9 bounded contexts
- β Money value object (int64 cents)
- β PostgreSQL + Redis
- β REST API (150+ endpoints)
- β Next.js 16 frontend
- β Docker + CI/CD
- β³ Real-time WebSocket notifications
- β³ File upload (S3, MinIO)
- β³ Email templates
- β³ PDF generation
- β³ Multi-tenant support
- β³ GraphQL API
- β³ Event sourcing
- β³ Microservices architecture
- β³ Kubernetes deployment
Built with β€οΈ using Domain-Driven Design and Hexagonal Architecture