Bernt f967d1a810 feat: Add Ledger Accounts table to DashboardPage
- Add ledgerAccounts state with LedgerAccount type
- Fetch accounts from ledgerApi.accounts()
- Add table with Code, Name, Type, Balance columns
- Color-code positive/negative balances
- Build passes successfully
2026-07-29 20:01:23 +00:00

BOC — Business Operations Center

Domän: boc.aamos.com

Företagets kontrollrum. Inte utveckling — utan verksamheten.

Arkitektur

┌─────────────────────────────────────────────────────────────┐
│                         BOC STACK                           │
├─────────────────────────────────────────────────────────────┤
│  Frontend (HTML/JS/CSS)  │  Mobile-first, extremt enkelt   │
├─────────────────────────────────────────────────────────────┤
│  Go Backend (API Gateway) │  Auth, CRUD, WebSocket, Cron   │
├─────────────────────────────────────────────────────────────┤
│  Redis                    │  Cache, sessions, rate limit   │
├─────────────────────────────────────────────────────────────┤
│  Kafka                    │  Event streaming, audit log    │
├─────────────────────────────────────────────────────────────┤
│  Rust Service (Analytics) │  Rapporter, batch, parallel    │
├─────────────────────────────────────────────────────────────┤
│  C Runtime (IPC)          │  Shared memory, ring buffers   │
├─────────────────────────────────────────────────────────────┤
│  PostgreSQL               │  Fullt schema, migrations      │
└─────────────────────────────────────────────────────────────┘

Moduler

Modul Status Datakälla Automationsmönster
CRM BOC intern Lead-scoring, påminnelser
Sales BOC + aamos-ledger Pipeline-rapporter, forecast
Finance aamos-ledger, bank Moms, fakturapåminnelser, avstämning
HR BOC intern Lönekörning, ledighet, tidrapporter
Legal BOC intern Kontraktsförnyelser, påminnelser
Marketing BOC intern Content-publicering, kampanjer
Support BOC intern Ärendeprioritering, CSAT
Analytics Alla moduler Dashboard, rapporter, trender
Automation Alla moduler Workflows, cron, event-triggers

Teknikstack

Backend (Go)

  • Router: chi/v5
  • Auth: JWT
  • DB: PostgreSQL med migrations
  • Cache: Redis (go-redis)
  • Events: Kafka (segmentio/kafka-go)
  • Log: zerolog
  • WebSocket: gorilla/websocket
  • Automation: Intern motor med cron-support

Cache (Redis)

  • Sessions: Användarsessioner med TTL
  • Rate limiting: Sliding window per endpoint
  • Analytics cache: 5-minuters TTL på metrics
  • Dashboard cache: 1-minuts TTL
  • Pub/Sub: Realtidsnotifikationer

Event Streaming (Kafka)

  • Topics: boc.events, boc.audit, boc.analytics, boc.notifications
  • Producers: Alla CRUD-operationer publicerar events
  • Consumers: Audit log, analytics aggregation, notifications
  • Schema: JSON events med tenant_id, entity_id, timestamp

Analytics (Rust)

  • Framework: axum + tokio
  • Parallel: rayon för batch-processing
  • Cache: dashmap i minnet
  • Rapporter: financial_summary, sales_pipeline, customer_analytics, revenue_forecast, expense_breakdown, cashflow_projection

IPC (C)

  • Shared memory: POSIX shm
  • Ring buffers: Lock-free för hög genomströmning
  • Cache: Inline analytics-cache med TTL

Bygga

# Allt
make build

# Separat
make build-go
make build-rust
make build-c

Kör

Docker (rekommenderat)

make docker-up    # Starta allt
make docker-down  # Stoppa
make docker-logs  # Loggar

Utveckling

# Kräver PostgreSQL på localhost:5432
make dev

Manuellt

# Go backend
cd backend
export PORT=9092
export DB_URL=postgres://boc:boc@localhost:5432/boc?sslmode=disable
export JWT_SECRET=***
./boc

# Rust service
cd rust-service
cargo run --release

# C runtime
cd c-runtime
make

API Endpoints

Auth

  • POST /api/v1/auth/login — Inloggning
  • GET /api/v1/auth/me — Aktuell användare

CRM

  • GET /api/v1/crm/customers — Lista kunder
  • POST /api/v1/crm/customers — Skapa kund
  • GET /api/v1/crm/customers/{id} — Hämta kund
  • PUT /api/v1/crm/customers/{id} — Uppdatera kund
  • DELETE /api/v1/crm/customers/{id} — Ta bort kund
  • GET /api/v1/crm/leads — Lista leads
  • GET /api/v1/crm/pipeline — Pipeline
  • POST /api/v1/crm/interactions — Skapa interaktion

Sales

  • GET /api/v1/sales/deals — Lista deals
  • POST /api/v1/sales/deals — Skapa deal
  • GET /api/v1/sales/deals/{id} — Hämta deal
  • PUT /api/v1/sales/deals/{id} — Uppdatera deal
  • GET /api/v1/sales/mrr — MRR
  • GET /api/v1/sales/arr — ARR
  • GET /api/v1/sales/products — Lista produkter
  • POST /api/v1/sales/products — Skapa produkt

Finance

  • GET /api/v1/finance/balance — Balansräkning (från aamos-ledger)
  • GET /api/v1/finance/income — Resultaträkning (från aamos-ledger)
  • GET /api/v1/finance/moms — Momsrapport (från aamos-ledger)
  • GET /api/v1/finance/accounts — Konton (från aamos-ledger)
  • GET /api/v1/finance/invoices — Fakturor
  • GET /api/v1/finance/cashflow — Kassaflöde
  • GET /api/v1/finance/budget — Budget
  • POST /api/v1/finance/expenses — Skapa utgift
  • GET /api/v1/finance/expenses — Lista utgifter

HR

  • GET /api/v1/hr/employees — Lista anställda
  • POST /api/v1/hr/employees — Skapa anställd
  • GET /api/v1/hr/employees/{id} — Hämta anställd
  • PUT /api/v1/hr/employees/{id} — Uppdatera anställd
  • GET /api/v1/hr/leaves — Lista ledigheter
  • POST /api/v1/hr/leaves — Skapa ledighet
  • GET /api/v1/hr/timesheets — Lista tidrapporter
  • POST /api/v1/hr/timesheets — Skapa tidrapport
  • GET /api/v1/legal/contracts — Lista kontrakt
  • POST /api/v1/legal/contracts — Skapa kontrakt
  • GET /api/v1/legal/contracts/{id} — Hämta kontrakt
  • PUT /api/v1/legal/contracts/{id} — Uppdatera kontrakt
  • GET /api/v1/legal/reminders — Påminnelser

Marketing

  • GET /api/v1/marketing/campaigns — Lista kampanjer
  • POST /api/v1/marketing/campaigns — Skapa kampanj
  • GET /api/v1/marketing/content — Lista content
  • POST /api/v1/marketing/content — Skapa content

Support

  • GET /api/v1/support/tickets — Lista ärenden
  • POST /api/v1/support/tickets — Skapa ärende
  • GET /api/v1/support/tickets/{id} — Hämta ärende
  • PUT /api/v1/support/tickets/{id} — Uppdatera ärende
  • POST /api/v1/support/tickets/{id}/comments — Lägg till kommentar
  • GET /api/v1/support/csat — CSAT-score

Analytics

  • GET /api/v1/analytics/users — Aktiva användare
  • GET /api/v1/analytics/revenue — Intäkt
  • GET /api/v1/analytics/retention — Retention
  • GET /api/v1/analytics/dashboard — Dashboard-data

Automation

  • GET /api/v1/automation/workflows — Lista workflows
  • POST /api/v1/automation/workflows — Skapa workflow
  • POST /api/v1/automation/workflows/{id}/trigger — Trigga workflow
  • GET /api/v1/automation/jobs — Lista schemalagda jobb
  • POST /api/v1/automation/jobs — Skapa schemalagt jobb
  • GET /api/v1/automation/runs — Lista körningar

WebSocket

  • GET /ws — Realtidsuppdateringar

Rust Service

  • GET /health — Hälsokontroll
  • POST /api/v1/reports/generate — Generera rapport
  • POST /api/v1/analytics/query — Analytics-fråga
  • POST /api/v1/analytics/batch — Batch-analytics

Automation

Schemalagda jobb (cron)

  • Rapportgenerering — Dagligen/veckovis/månadsvis
  • Påminnelser — Kontraktsförnyelser, fakturor
  • Synkronisering — Externa system
  • Städning — Gammal data
  • Backup — Databasbackup

Workflows

  • Event-triggers — Vid skapande/uppdatering av entiteter
  • Schedule-triggers — Cron-baserade
  • Webhook-triggers — Externa händelser
  • Manuella triggers — Via API/UI

Åtgärdstyper

  • send_email — Skicka e-post
  • send_notification — Push-notis
  • create_task — Skapa uppgift
  • update_record — Uppdatera post
  • webhook — Anropa extern URL
  • generate_report — Generera och skicka rapport

Databasschema

Fullt schema med:

  • Multi-tenant (boc_tenants)
  • Audit log (boc_audit_log) — immutable
  • Alla moduler med proper indexes
  • Triggers för updated_at
  • JSONB för flexibla metadata
  • Foreign keys med CASCADE

Se backend/db/migrations/001_initial_schema.sql

Miljövariabler

Variabel Default Beskrivning
PORT 9092 Go backend port
DB_URL postgres://... PostgreSQL connection string
JWT_SECRET change-me... JWT signing secret
AMOS_BASE_URL http://localhost:9000 aamos-ledger URL
MIGRATIONS_DIR ./db/migrations Migration files path
RUST_SERVICE_URL http://localhost:9093 Rust service URL
REDIS_URL redis://localhost:6379 Redis connection string
KAFKA_BROKERS localhost:9092 Comma-separated Kafka brokers

Säkerhet

  • JWT-autentisering på alla endpoints utom /health och /login
  • CORS-konfigurerbart
  • SQL-injection skyddat via parameteriserade queries
  • Audit log på alla förändringar
  • HTTPS i produktion (via nginx)

Roadmap

  • Full integration med aamos-ledger
  • Bank-API koppling (Nordea, Revolut)
  • E-postutskick (SMTP)
  • PDF-generering för fakturor
  • Advanced analytics (Rust)
  • Machine learning för lead-scoring
  • Mobile app (React Native/Flutter)
  • SSO-integration

Licens

Proprietär — Landvex Inc

S
Description
Business Operations Center
Readme 9.8 GiB
Languages
D 34.6%
HTML 28.4%
Go 22.3%
TypeScript 11%
CSS 0.7%
Other 2.9%