Skip to content

basilex/skeleton

Repository files navigation

Skeleton

Enterprise-grade Business Management Platform built with Domain-Driven Design and Hexagonal Architecture

Go Version License

Skeleton is a modular business management platform designed for small and medium businesses — from retail shops and service companies to manufacturing firms. The system adapts to your business model: enable the contexts you need, disable the rest.

  • Retail & Trade: orders, invoices, inventory, catalog, procurements
  • Manufacturing: bills of materials, production orders, work orders, raw material tracking
  • Services: contracts, documents, approvals, time tracking
  • Accounting & Finance: double-entry bookkeeping, journal entries, reconciliation, full reporting

🌍 Languages / Мови / Sprachen

Code Language Flag
en English 🇬🇧
uk Українська 🇺🇦
de Deutsch 🇩🇪

Business context documentation is available in all 3 languages in docs/contexts/. The frontend (Office) supports all 3 languages with runtime switching.


Bounded Contexts

The system is composed of 17 autonomous bounded contexts, each responsible for a cohesive business capability. Contexts communicate exclusively through domain events — no direct imports between contexts.

Business documentation is available in 3 languages: en, uk, de.

Context Capability Docs
Identity Authentication, RBAC, sessions, JWT en
Parties Customers, suppliers, partners, employees, loyalty, credit limits en
Ordering Orders, order lines, quotes, cancellation, status transitions en
Invoicing Invoices, credit notes, payments, installments en
Accounting Chart of accounts, double-entry, journal entries, periods, reconciliation en
Catalog Products, categories, variants, pricing rules en
Inventory Warehouses, stock, movements, reservations, stock takes en
Procurements Purchase orders, goods receipts, supplier ordering en
Manufacturing Bills of materials, production orders, work orders en
Contracts Contract lifecycle, amendments, auto-renewal, approvals en
Documents Templates, signatures, approval workflows en
Reports Dashboard, revenue, accounting reports, analytics en
Notifications Email, templates, preferences, background delivery en
Audit Cross-context action audit trail en
Tasks Background jobs, schedules, retry logic en
Files Upload, processing, storage en
Status Health checks, system info en

Reporting

The Reports context provides 14 built-in reports covering operational and financial analytics:

Report Description
Dashboard Key metrics: revenue, orders, customers, stock alerts
Revenue Revenue trends by day/week/month
Top Customers Customer ranking by purchase volume
Accounts Summary Balances by account type
Low Stock Alerts Items below reorder point
Aging Receivables Overdue invoices grouped by 30/60/90+ days
Customer Acquisition New customers over time
Order Status Order distribution by status
Trial Balance Opening/turnover/closing balances per account
General Ledger Posted journal entries with cursor pagination
Profit & Loss Revenue vs expenses, net profit
Balance Sheet Assets, liabilities, equity snapshot
Cash Flow Operating/investing/financing flows
Tax Report Tax liabilities, payments, amounts due

Documentation

Business Contexts

Detailed business-oriented documentation for each context — what it does, why it matters, and how it works — is available in docs/contexts/ in 3 languages:

docs/contexts/
├── en/    # English
├── uk/    # Українська
└── de/    # Deutsch

Generate PDFs for all or a specific language:

make context-docs        # All languages
make context-docs-en      # English only
make context-docs-uk      # Ukrainian only
make context-docs-de      # German only
# ... etc.

Architecture & Development

Document Description
ARCHITECTURE.md System architecture, CQRS, hexagonal, bounded contexts
BOUNDED_CONTEXTS.md Detailed technical description of each bounded context
CONTEXT_MATURITY.md Context maturity status, gaps, sprint history
RBAC.md Access control model: roles, permissions, matrix, wildcards
EVENT_BUS.md Event bus, cross-context communication
SETUP.md Project setup and running
DEVELOPMENT.md Development workflow, conventions
DATABASE.md DB schema, migrations, ER diagram, conventions
API.md REST API documentation

ADR (Architecture Decision Records)

ADR records in docs/adr/, index — docs/adr/README.md.


Project Structure

skeleton/
├── backend/                    # Go API server
│   ├── cmd/api/               # Entry point + Wire injector
│   ├── internal/              # Bounded contexts (DDD)
│   │   ├── di/               # Wire DI provider sets
│   │   ├── accounting/        # Accounts, transactions, journal entries
│   │   ├── audit/             # Audit trail
│   │   ├── catalog/           # Product catalog
│   │   ├── contracts/         # Contract lifecycle, amendments
│   │   ├── documents/         # Templates, signatures, approvals
│   │   ├── files/             # File uploads, processing
│   │   ├── identity/          # Auth, RBAC, sessions
│   │   ├── inventory/         # Stock, warehouses, movements
│   │   ├── invoicing/         # Invoices, payments, credit notes
│   │   ├── manufacturing/    # BOMs, production orders, work orders
│   │   ├── notifications/    # Email, templates, preferences
│   │   ├── ordering/         # Orders, quotes
│   │   ├── parties/          # Customers, suppliers, partners, employees
│   │   ├── procurements/     # Purchase orders, goods receipts
│   │   ├── reports/          # Dashboard, analytics, accounting reports
│   │   ├── status/           # Health checks, system info
│   │   └── tasks/            # Background jobs, schedules
│   ├── pkg/                   # Shared packages
│   │   ├── eventbus/         # In-memory + Redis event bus
│   │   ├── money/            # Money value object (int64 cents)
│   │   ├── pagination/       # Cursor-based pagination
│   │   ├── apierror/         # RFC 7807 error responses
│   │   └── ...
│   ├── migrations/           # 17 SQL migrations by context
│   └── scripts/seed/         # Seed verification
├── web/                       # Frontend applications
│   ├── office/                # Back-office UI (Angular 21 + PrimeNG 21)
│   └── commerce/              # E-commerce UI (Angular 21 + PrimeNG 21)
├── docs/                      # Documentation
│   ├── contexts/             # Business context docs (9 languages)
│   │   ├── en/              # English
│   │   ├── uk/              # Українська
│   │   ├── de/              # Deutsch
│   │   ├── fr/              # Français
│   │   ├── es/              # Español
│   │   ├── pt/              # Português
│   │   ├── zh/              # 中文
│   │   ├── ko/              # 한국어
│   │   ├── ja/              # 日本語
│   │   └── pdf/             # Generated PDFs
│   └── ...
├── docker-compose.yml         # Development environment
└── Makefile                   # Build automation

Quick Start

git clone + docker-compose

git clone https://github.com/basilex/skeleton.git
cd skeleton

# Start PostgreSQL + Redis
docker-compose up -d

# Apply migrations
for f in backend/migrations/*.up.sql; do
  docker exec -i skeleton-postgres psql -U skeleton -d skeleton < "$f"
done

# Run API
cd backend && go run ./cmd/api/

Default Credentials

  • Email: admin@skeleton.local
  • Password: 03041965
  • Role: super_admin (full access *:*)

API Endpoints

All endpoints require JWT authentication and RBAC permissions. Key routes:

# Auth
POST   /api/v1/auth/login              # Login
POST   /api/v1/auth/register           # Register
POST   /api/v1/auth/refresh            # Refresh token

# Parties
CRUD   /api/v1/customers               # Customers
CRUD   /api/v1/suppliers               # Suppliers

# Ordering
CRUD   /api/v1/orders                  # Orders
POST   /api/v1/orders/:id/lines        # Add order line
POST   /api/v1/orders/:id/cancel       # Cancel order
CRUD   /api/v1/quotes                  # Quotes

# Invoicing
CRUD   /api/v1/invoices                # Invoices
CRUD   /api/v1/credit-notes             # Credit notes

# Accounting
CRUD   /api/v1/accounts                # Chart of accounts
CRUD   /api/v1/journal-entries         # Journal entries
CRUD   /api/v1/accounting-periods       # Accounting periods
CRUD   /api/v1/reconciliations          # Reconciliations

# Catalog
CRUD   /api/v1/catalog/items            # Products
CRUD   /api/v1/catalog/categories       # Categories
CRUD   /api/v1/catalog/variants        # Variants
CRUD   /api/v1/catalog/pricing-rules   # Pricing rules

# Inventory
CRUD   /api/v1/warehouses              # Warehouses
CRUD   /api/v1/stock                   # Stock levels
CRUD   /api/v1/stock-takes              # Stock takes

# Procurement
CRUD   /api/v1/purchase-orders          # Purchase orders
POST   /api/v1/purchase-orders/:id/submit    # Submit PO
POST   /api/v1/purchase-orders/:id/confirm   # Confirm PO
CRUD   /api/v1/goods-receipts           # Goods receipts

# Manufacturing
CRUD   /api/v1/boms                    # Bills of materials
CRUD   /api/v1/production-orders        # Production orders
CRUD   /api/v1/work-orders             # Work orders

# Contracts & Documents
CRUD   /api/v1/contracts                # Contracts
CRUD   /api/v1/documents                # Documents
CRUD   /api/v1/templates                # Document templates

# Reports
GET    /api/v1/reports/dashboard        # Dashboard metrics
GET    /api/v1/reports/trial-balance    # Trial balance
GET    /api/v1/reports/general-ledger   # General ledger
GET    /api/v1/reports/profit-and-loss  # Profit & loss
GET    /api/v1/reports/balance-sheet     # Balance sheet
GET    /api/v1/reports/cash-flow         # Cash flow
GET    /api/v1/reports/tax               # Tax report

Full API documentation: docs/API.md


Design Decisions

Decision Approach
Architecture Hexagonal (ports & adapters) + CQRS
Domain model DDD: aggregates, value objects, domain events
Database PostgreSQL 16+ with pgx driver, golang-migrate
Access control RBAC with wildcards (*:*, users:*, users:read)
Pagination Cursor-based (UUID v7)
Money int64 cents (never float)
DI Google Wire (compile-time)
Event Bus In-memory + Redis (pub/sub)
HTTP Gin with middleware: auth, RBAC, rate limit, recovery

Makefile Commands

make help                 # All commands
make dev                  # Docker-compose up
make backend              # Wire generate + run API
make backend-wire         # Regenerate Wire DI
make test                 # Tests
make test-coverage        # Tests with coverage
make context-docs          # Generate PDFs for all languages
make context-docs-en       # Generate PDFs for English only
make context-docs-clean   # Remove generated PDFs

Full reference: docs/MAKEFILE_REFERENCE.md


License

MIT License — see LICENSE.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors