Modern Enterprise Resource Planning (ERP) system built with Domain-Driven Design
Replace multiple SaaS tools with one modular platform: CRM, Orders, Inventory, Billing, Accounting, and Fiscal compliance β designed for Ukrainian and European SMB market.
Manage your entire sales pipeline from lead to customer, track interactions, and grow your business.
- Customer Management β Companies, contacts, segmentation, lifecycle tracking
- Deal Pipeline β Sales opportunities, stages, probability scoring, forecasting
- Interaction History β Calls, meetings, emails, notes with full audit trail
- Sales Analytics β Revenue reports, conversion metrics, team performance
π― For: Sales teams, account managers, customer success
π Documentation: Customer Management Context
Process orders efficiently with automated workflows, real-time tracking, and fulfillment orchestration.
- Order Processing β Multi-channel orders, complex pricing, promotions
- Fulfillment Workflows β Automated state machines: pending β confirmed β processing β fulfilled
- Saga Orchestration β Coordinate inventory, billing, and fiscal operations
- Order Analytics β Sales metrics, fulfillment KPIs, bottleneck detection
π― For: E-commerce, B2B distributors, service businesses
π Documentation: Order Management Context
Track inventory across multiple locations with real-time visibility and automated stock management.
- Multi-Warehouse β Unlimited locations with hierarchical organization
- Product Catalog β SKU management, categories, variants, pricing
- Stock Movements β Receipts, reservations, transfers, adjustments with full audit
- Low Stock Alerts β Automated reorder points, stock forecasting
π― For: Retailers, distributors, manufacturers
π Documentation: Warehouse Context
Generate invoices, track payments, and manage recurring billing with automatic subscription handling.
- Invoice Generation β Automatic from orders, manual creation, templates
- Payment Tracking β Multiple payment methods, partial payments, refunds
- Recurring Billing β Subscriptions, trials, plan upgrades, automatic renewals
- Payment Analytics β Cash flow, aging reports, revenue recognition
π― For: SaaS companies, subscription businesses, B2B services
π Documentation: Billing Context
Complete financial management with chart of accounts, journal entries, and financial reporting.
- Chart of Accounts β Flexible account hierarchy, multi-currency support
- Journal Entries β Double-entry bookkeeping, automatic posting, audit trail
- Cost Centers & Budgets β Department tracking, budget planning, variance analysis
- Financial Reports β Balance sheet, P&L, cash flow, custom reports
π― For: Finance teams, accountants, CFOs
π Documentation: Accounting Context
Connect to bank accounts, import transactions, and automate reconciliation.
- Bank Accounts β Multiple accounts per organization, multi-currency
- Transaction Import β Bank statement parsing, automatic categorization
- Reconciliation β Match transactions with invoices and payments
- Cash Management β Cash position, forecast, treasury operations
π― For: Finance teams, treasury management
π Documentation: Banking Context
Built-in integration with Ukrainian tax authorities and ΠΠ Π Π (fiscal cash registers).
- Checkbox Integration β Automatic receipt generation, fiscal reporting
- ΠΠ Π Π Support β Cash register operations, Z-reports, fiscal documents
- Tax Compliance β VAT tracking, tax reports, electronic submission
- Audit Trail β Complete transaction history for tax audits
π― For: Ukrainian businesses, tax compliance officers
π Documentation: Fiscal Context
Enterprise-grade user management with role-based access control.
- User Management β Users, contacts, profiles, multi-organization support
- Authentication β JWT-based, secure password hashing (Argon2id), MFA-ready
- Authorization β Role-based access control (RBAC), permissions, API keys
- Audit Logging β User actions, security events, compliance tracking
π― For: IT administrators, security teams
π Documentation: Identity Context
Replace expensive ERP systems (SAP, 1C, Bitrix24) with flexible, cost-effective solution:
- E-commerce stores β Integrate with online shops, manage inventory, automate fulfillment
- B2B distributors β Handle complex pricing, track customer relationships, manage warehouses
- Service businesses β Manage projects, track time, invoice clients, recurring billing
Business Value: Market Analysis & ROI
Build custom business solutions on proven foundation:
- SaaS platforms β Use as backend for vertical SaaS products
- Custom ERP β Extend with industry-specific modules
- Integration projects β Connect existing systems via event-driven architecture
Technical Details: Architecture Overview
Purpose-built for Ukrainian business requirements:
- Fiscal compliance β ΠΠ Π Π, Checkbox, tax reporting
- Local banking β Monobank, PrivatBank integration (roadmap)
- Language support β Ukrainian, Russian, English interfaces
- Market opportunity: $45M+ TAM, 180K+ potential customers
Market Strategy: Ukraine Market Analysis
Get Promenade running in 5 minutes:
- Go 1.24+ β Install Go
- Docker β Install Docker
- Make β Usually pre-installed on macOS/Linux
# 1. Clone repository
git clone https://github.com/basilex/promenade.git
cd promenade
# 2. Start PostgreSQL and run migrations
make docker-up
make migrate
# 3. Start API server
make devπ That's it! Server is running at http://localhost:8081
# Health check
curl http://localhost:8081/health
# API documentation (Swagger UI)
open http://localhost:8081/api/docs/index.html- Complete Setup Guide β User registration, authentication, first API calls
- API Documentation β Swagger UI guide, Postman collection
- Development Workflow β Daily commands, testing, debugging
- Postman Examples β Ready-to-use API call examples
Promenade is built on strict DDD principles with 8 bounded contexts that communicate only via events:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Event Bus β
β (Async communication layer) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β β β β
βΌ βΌ βΌ βΌ βΌ βΌ βΌ
βββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ
βIdentity βCustomer β Order β Billing βWarehouseβ Fiscal βAccountingβ
β β Mgmt β Mgmt β β β β & Bank β
βββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ
Own DB Own DB Own DB Own DB Own DB Own DB Own DB
-
Bounded Context Autonomy
- Each context owns its domain model, database schema, and business logic
- No shared database tables between contexts
- Independent deployment and scaling
-
No Cross-Context Imports
- Contexts communicate only through Event Bus
- No direct Go imports between contexts
- Uses Anti-Corruption Layer (ACL) for integration
-
Clean Architecture Layers
- Domain Layer β Aggregates, entities, value objects, business rules
- Application Layer β Use cases, orchestration, transaction boundaries
- Infrastructure Layer β Database, HTTP, event handlers
- Presentation Layer β DTOs, HTTP handlers, API routes
-
Event-Driven Integration
- Domain events published after state changes
- Asynchronous processing with guaranteed delivery
- Saga pattern for distributed transactions
π Learn More:
- Bounded Contexts Deep Dive
- Clean Architecture Explained
- Event-Driven Patterns
- Fulfillment Saga Pattern
Backend Core:
- Language: Go 1.24 β Performance, concurrency, type safety
- Database: PostgreSQL 16+ β ACID compliance, JSON support
- HTTP: Gin framework β High performance, middleware ecosystem
- Auth: JWT (RS256) β Stateless, secure, scalable
Infrastructure:
- Event Bus: In-memory (dev), Redis (production) β 377K events/sec
- Cache: Redis β Session storage, rate limiting
- Migrations: Custom manager β Multi-namespace, rollback support
- Monitoring: Health checks, metrics, structured logging
Development:
- Testing: 4-tier strategy β Unit, smoke, integration, benchmarks
- API Docs: Swagger/OpenAPI 3.0 β Interactive documentation
- Git Hooks: Pre-commit linting, pre-push testing
- CI/CD: GitHub Actions β Automated testing, deployment
π Learn More:
promenade/
βββ cmd/ # Application entry points
β βββ api/ # HTTP API server
β β βββ main.go # Entry point
β β βββ bootstrap.go # Infrastructure setup
β β βββ dependencies.go # Custom DI container
β β βββ server.go # HTTP routing
β βββ migrate/ # Migration runner
β βββ seed/ # Test data seeder
β
βββ internal/ # Private application code
β βββ contexts/ # Bounded contexts (DDD)
β β βββ identity/ # Users, auth, permissions
β β βββ customer-mgmt/ # CRM, deals, interactions
β β βββ order-mgmt/ # Orders, fulfillment
β β βββ billing/ # Invoices, payments
β β βββ warehouse/ # Inventory, products
β β βββ fiscal/ # Cash registers, receipts
β β βββ accounting/ # Chart of accounts, journals
β β βββ banking/ # Bank accounts, reconciliation
β βββ infrastructure/ # Cross-cutting concerns
β βββ database/ # Connection, transactions
β βββ auth/ # JWT, password hashing
β βββ http/ # Middleware, responses
β
βββ pkg/ # Reusable packages
β βββ bus/ # Event Bus (377K events/sec)
β βββ aggregate/ # Base aggregate, change tracking
β βββ jsonstore/ # Type-safe JSON fields
β βββ uuidv7/ # Time-ordered UUIDs
β βββ middleware/ # Auth, CORS, rate limiting
β
βββ migrations/ # Database migrations
β βββ postgres/ # PostgreSQL migrations
β βββ core/ # System tables
β βββ identity/ # Identity context
β βββ customer-mgmt/ # Customer management
β βββ .../ # Other contexts
β
βββ test/ # Test suites
β βββ integration/ # Full workflow tests
β βββ smoke/ # Fast CRUD checks
β βββ benchmark/ # Performance tests
β
βββ docs/ # Documentation
β βββ business/ # Business overviews (8 languages)
β βββ concepts/ # Architecture concepts
β βββ guides/ # Development guides
β βββ deployment/ # Kubernetes, AWS, Docker
β βββ adr/ # Architecture Decision Records
β
βββ config/ # Configuration files
βββ app.postgres-dev.yaml # PostgreSQL development
βββ app.postgres-prod.yaml # PostgreSQL production
βββ .../ # Other configs
Each Bounded Context follows clean architecture:
internal/contexts/{context}/
βββ {aggregate}/ # Domain subdomain
β βββ aggregate/ # Domain entities & business logic
β βββ repository/ # Repository interface
β βββ usecase/ # Application use cases
β βββ adapter/
β β βββ repository/
β β β βββ postgres/ # PostgreSQL implementation
β β βββ http/ # HTTP handlers
β βββ dto/ # Data Transfer Objects
β βββ errors.go # Domain error constants
βββ README.md # Context documentation
π Learn More: Context Structure Guide
Promenade uses 4-tier testing approach for comprehensive quality assurance:
| Level | Count | Speed | Database | Purpose |
|---|---|---|---|---|
| Unit | 200+ | < 1s | β Mock | Business logic, pure functions |
| Smoke | 26 | < 5s | β Real | Basic CRUD, fast feedback loop |
| Integration | 29 | ~30s | β Real | Full workflows, cross-aggregate |
| Benchmark | 15+ | < 10s | β‘ Memory | Performance, regression detection |
# All tests (recommended before commit)
make test
# Individual test levels
make test-unit # Unit tests only (fast)
make test-smoke # Smoke tests (basic CRUD)
make test-integration # Integration tests (full workflows)
make test-benchmark # Performance benchmarks
# Pre-push validation (lint + all tests + build)
make pre-push
# Specific package
go test ./internal/contexts/customer-mgmt/...
go test ./pkg/bus/... -bench=.β All tests passing
- Unit: 200+ tests, 100% passing
- Smoke: 26/26 contexts, < 5s runtime
- Integration: 29/29 tests, full database workflows
- Benchmarks: Event Bus 377K events/sec, UUID 100M/sec
- Unit tests β Next to source files (
*_test.go) - Smoke tests β Mirror structure in
test/smoke/contexts/ - Integration tests β Group by context in
test/integration/contexts/ - Coverage target β 80%+ for critical business logic
π Learn More: Complete Testing Guide
For Decision Makers & Stakeholders
- Business Overview β Platform capabilities, market opportunity, ROI
- Available in: π¬π§ English, πΊπ¦ Ukrainian, πͺπΈ Spanish, π©πͺ German, π«π· French, π΅πΉ Portuguese, π¨π³ Chinese, π―π΅ Japanese
- Ukraine Market Strategy β Market analysis, TAM $45M+, GTM strategy
- Implementation Status β Feature completion, development roadmap
- Deployment Options β Kubernetes, AWS, Docker Compose, monitoring
Getting Started
- Quick Start Guide β 5-minute setup, first API calls
- API Documentation β Swagger UI, Postman collection
- Development Workflow β Daily commands, debugging, troubleshooting
- Contributing Guide β Code standards, PR process, git hooks
Architecture & Patterns
- Clean Architecture β Layers, dependencies, testability
- Bounded Contexts β DDD principles, context isolation
- Event-Driven Architecture β Event Bus, domain events, sagas
- Fulfillment Saga β Distributed transaction orchestration
Development Guides
- Security Patterns β Authentication, authorization, error handling
- Database Strategy β PostgreSQL patterns, migrations, transactions
- Error Handling β Domain errors, HTTP responses, logging
- JSON Fields β Type-safe JSONB handling
- Profiling β CPU/memory profiling, pprof, optimization
Architecture Decision Records
- ADR-0001: Use UUID v7 β Time-ordered UUIDs for better DB performance
- ADR-0002: Use sqlx over GORM β Control, performance, maintainability
- ADR-0003: Use Redis for Caching β Distributed cache strategy
- ADR Template β Template for new ADRs
Each context has detailed README with domain model, use cases, and API examples:
- Identity β Users, authentication, RBAC
- Customer Management β CRM, deals, interactions
- Order Management β Orders, fulfillment workflows
- Billing β Invoices, payments, subscriptions
- Warehouse β Inventory, products, stock movements
- Accounting β Chart of accounts, journal entries
- Banking β Bank accounts, reconciliation
- Fiscal β ΠΠ Π Π, Checkbox integration
Reusable packages with usage examples and benchmarks:
- Event Bus β In-memory & Redis, 377K events/sec
- Aggregates β Base aggregate, change tracking, Touch()
- JSON Store β Type-safe JSONB fields
- UUIDv7 β Time-ordered IDs, 100M/sec generation
- Value Objects β Email, phone, money, address
- Postman Collection β Import-ready API collection
- Customer Management Examples β CRM workflows
- Order Management Examples β Order processing
- Billing Examples β Invoice & payment flows
We welcome contributions! Promenade follows strict code standards to maintain quality.
- Read CONTRIBUTING.md β Code standards, PR process
- Set up git hooks:
make setup-hooksβ Automatic linting and testing - Review Architecture Decision Records β Understand design choices
# 1. Create feature branch
git checkout -b feature/your-feature-name
# 2. Make changes and test
make test # Run all tests
make lint # Check code style
# 3. Pre-push validation (automatic via git hook)
make pre-push # Lint + tests + build
# 4. Commit and push
git add .
git commit -m "feat: add amazing feature"
git push origin feature/your-feature-name- Go β Follow Effective Go and project conventions
- DDD β Respect bounded context boundaries, no cross-context imports
- Testing β Add tests for new features (smoke + integration)
- Documentation β Update README and context docs for public APIs
- Commits β Follow Conventional Commits
High-Priority Areas:
- π Integrations β Payment gateways, shipping providers, accounting systems
- π Localization β UI translations, fiscal compliance for other countries
- π Analytics β Reports, dashboards, data visualization
- π Security β Audit, penetration testing, security hardening
- π± Clients β SDKs for popular languages (Python, PHP, JavaScript)
Good First Issues: Check GitHub Issues
- β 8 bounded contexts with clean architecture
- β Customer Management (CRM)
- β Order Management with fulfillment workflows
- β Warehouse & Inventory
- β Billing & Invoicing
- β Accounting (Chart of Accounts, Journal Entries)
- β Banking Integration
- β Fiscal Compliance (ΠΠ Π Π, Checkbox)
- β Event-driven architecture (377K events/sec)
- β Comprehensive test coverage (200+ tests)
- β API documentation (Swagger/OpenAPI)
- π Multi-tenancy β Organization isolation, data partitioning
- π Frontend β Next.js admin panel, Flutter mobile app
- π Advanced Analytics β BI dashboards, custom reports
- π Monobank Integration β Bank statement import, automatic reconciliation
- π Email/SMS β Transactional notifications, marketing campaigns
- π CRM Enhancements β Marketing automation, lead scoring, pipeline analytics
- π Advanced Billing β Usage-based pricing, revenue recognition, dunning
- π Procurement β Purchase orders, supplier management, receiving
- π Manufacturing β Bill of materials, production orders, shop floor tracking
- π Project Management β Projects, tasks, time tracking, resource planning
- π HR Module β Employees, payroll, attendance, leave management
- π Mobile Apps β iOS/Android native apps with offline support
- π AI/ML β Demand forecasting, churn prediction, smart recommendations
π Full Roadmap: Project Roadmap
MIT License β See LICENSE file for details.
The core Promenade backend API (v0.1.0-dev) is free and open source:
- β Backend API with 11 bounded contexts
- β PostgreSQL database layer (pgx driver)
- β Event-driven architecture
- β Complete documentation and tests
- β Free for commercial and non-commercial use
- β Self-hosted deployment
Advanced features are available under commercial licenses in separate private repositories:
π¨ Promenade UI (promenade-ui - private repository)
- Next.js Admin Panel with modern UI/UX
- Flutter Mobile App (iOS/Android)
- Design system and component library
- White-label customization
- License: Proprietary, paid subscription required
π’ Promenade Enterprise (promenade-enterprise - private repository)
- Multi-tenancy and organization isolation
- Advanced analytics and BI dashboards
- Bank integrations (Monobank, PrivatBank, etc.)
- Advanced billing and subscription management
- Email/SMS notifications
- Priority support and SLA
- License: Proprietary, enterprise agreement required
Community (Free)
- Core backend API (this repo)
- Self-hosted
- Community support
Professional ($99/month)
- Core backend API
- UI/UX (web + mobile)
- Up to 3 organizations
- Email support
Enterprise (Custom)
- Everything in Professional
- Unlimited organizations
- Advanced analytics
- Bank integrations
- Priority support
- Custom development
Contact: alexander.vasilenko@gmail.com for commercial inquiries
Note: This open-core model ensures the core backend remains free and open source, while protecting commercial investments in UI/UX and enterprise features. Commercial modules are kept in private repositories to prevent unauthorized use.
Built with love using:
- Go β Google's systems programming language
- PostgreSQL β World's most advanced open source database
- Gin β High-performance HTTP framework
- Redis β In-memory data structure store
- Swagger β API documentation and testing
Special thanks to the DDD community and all contributors!
- π§ Email: support@promenade.dev
- π¬ Discord: Join our community
- π Issues: GitHub Issues
- π Docs: Documentation Site
- π¦ Twitter: @PromenadeERP
β Star us on GitHub β it helps!
Documentation β’ API Reference β’ Contributing
Made with β€οΈ for Ukrainian businesses