Flowra
A comprehensive chat system with integrated task tracker, help desk functionality, and team support.
π Current Project Status
Version: 1.0.0-beta
Last Updated: 2026-03-05
Overall Progress: ~98% to MVP
Status: March 2026 Release Candidate
Progress by Layer
| Layer |
Status |
Progress |
Files |
Coverage |
| Domain |
β
Complete |
100% |
48 |
90%+ |
| Application |
β
Complete |
100% |
139 |
85%+ |
| Infrastructure |
β
Complete |
100% |
50 |
85%+ |
| Handlers |
β
Complete |
100% |
28 |
80%+ |
| Middleware |
β
Complete |
100% |
14 |
80%+ |
| Services |
β
Complete |
100% |
13 |
80%+ |
| Frontend |
π Mostly Complete |
85% |
~70 |
- |
| Entry Points |
β
Complete |
100% |
6 |
75%+ |
What Works β
- β
Domain Layer: 6 Event-Sourced aggregates, 30+ domain events
- β
Application Layer: 40+ use cases with 85% average coverage
- β
MongoDB Repositories: All 6 repositories with integration tests
- β
Event Store: MongoDB Event Store with optimistic locking
- β
Event Bus: Redis pub/sub for cross-service events
- β
HTTP Handlers: Full REST API with 40+ endpoints
- β
WebSocket: Real-time communication with Hub pattern
- β
Middleware: Auth, CORS, Logging, Recovery, Rate Limiting, Workspace Access
- β
Services: Workspace Access Checker, Chat, Member, Auth services
- β
Keycloak Integration: Full SSO integration (JWT, OAuth, User Sync)
- β
Entry Points: API server, Worker (with User Sync)
- β
E2E Tests: Full coverage of critical flows
- β
API Documentation: OpenAPI 3.1, Postman collection
- β
Tag System Frontend: Human-readable messages, visual grouping, sidebar integration
- β
Tag Processing Test Coverage: Concurrent integration tests + bot-response E2E scenarios
- β
Tag System Load Testing: k6 script/profiles for tag-heavy message flows (
tests/load/tag-system)
- β
Landing Page: Redesigned with distinctive typography, scroll animations, responsive feature grid
- β
Chat=SoT Stabilization: projection-safe typed mutations, strict assignee validation, frontend smoke regression coverage
In Development π
- π Frontend: HTMX + Pico CSS (~85% complete β all core features, settings, enhancements, dark mode, search, file uploads done)
π Quick Start (5 minutes)
Prerequisites
- Go 1.26+
- Docker & Docker Compose
- Make
1. Clone & Setup
git clone https://github.com/lllypuk/flowra.git
cd flowra
make deps
2. Start Full-Stack Runtime
# Starts infra (MongoDB, Redis, Keycloak) + worker + API
make dev
3. Verify
# Health check
curl http://localhost:8080/health
# Expected: {"status":"healthy"}
# API documentation
# Linux
xdg-open http://localhost:8080/docs
# macOS
open http://localhost:8080/docs
4. Test Authentication
Access Keycloak at http://localhost:8090 (admin/admin123) to configure OAuth.
Test user for app login: testuser / test123.
π§ Development Commands
make help # Show all available commands
make dev # Run full-stack development mode (infra + worker + API)
make dev-lite # Run API-only development mode (limited: no worker)
make build # Build binaries
make test # Run all tests
make test-unit # Run unit tests only
make test-integration # Run integration tests (Docker/testcontainers)
make test-e2e # Run E2E API tests
make test-e2e-frontend # Run frontend browser E2E tests (requires running server)
make test-e2e-frontend-smoke # Run focused board+sidebar smoke regression
make test-load-tags # Run k6 tag-system load test (requires k6 + AUTH_TOKEN)
make lint # Run linter and format code
make docker-up # Start Docker services
make docker-down # Stop Docker services
make docker-build # Build production image (flowra:latest)
make docker-prod-up # Start self-hosted production compose stack
make docker-prod-logs # Tail production compose logs
make docker-prod-down # Stop production compose stack
make test-coverage # Generate coverage report
make playwright-install # Install Playwright browsers for frontend tests
make reset-data # Reset local/dev Chat=SoT data collections and recreate indexes
Runtime mode toggles for ./bin/api:
FLOWRA_WORKER=true enables unified API + worker loops in the API process.
FLOWRA_WORKER=false runs API-only mode.
--with-worker / --with-worker=false CLI flag overrides FLOWRA_WORKER.
When switching between branches around the Chat=SoT refactor, run:
make docker-up && make reset-data before make dev to avoid stale
event/read-model shape mismatches.
ποΈ Key Features
- Real-time chat with group and direct message support
- Command system for managing tasks directly from chat
- Task management with state machine for statuses
- Help Desk functionality with SLA tracking
- Keycloak integration for SSO and user management
- HTMX + vanilla JS modules for dynamic UI behavior
- WebSocket for real-time updates
- Event Sourcing for complete change history
- Tag Processing - command processing system via message tags
- Human-readable system messages - "John changed status to In Progress" format
- Real-time UI updates - sidebar actions create visible system messages in chat
π― Domain Models
Chat Aggregate
- Types: Direct message, Group chat, Help Desk ticket
- Operations: Create, AddParticipant, RemoveParticipant, Rename, SetSeverity, SetPriority
Message Aggregate
- Capabilities: Content, attachments, reactions, threading
- Operations: Create, Edit, Delete, AddAttachment, AddReaction
Typed Entities (Chat = SoT)
- Types: Task, Bug, Epic (as typed chat variants)
- State Ownership: status/priority/assignee/due date are written through Chat commands
- Events: business writes emit
chat.* events only
Notification Aggregate
- Types: Task, Chat, Mention, System
- Operations: Create, MarkAsRead, MarkAllAsRead, Delete
User & Workspace Entities
- User: Registration, Profile updates, Admin promotion
- Workspace: Create, Update, Member management
π Documentation
API Documentation
Guides
Architecture & Design
π Technology Stack
Backend
| Technology |
Purpose |
Version |
| Go |
Primary language |
1.26+ |
| Echo |
HTTP framework |
v4 |
| gorilla/websocket |
WebSocket |
Latest |
| MongoDB |
Primary database |
6+ |
| Redis |
Cache/Pub-Sub |
7+ |
| Keycloak |
Authentication |
23+ |
Frontend
| Technology |
Purpose |
Version |
| HTMX |
Dynamic updates |
2+ |
| Pico CSS |
Styling |
v2 |
| Vanilla JS (ES Modules) |
Client interactions |
Built-in |
π Project Structure
.
βββ cmd/ # Application entry points
β βββ api/ # HTTP API server (main, container, routes)
β βββ worker/ # Background worker (user sync)
β
βββ internal/ # Private application code (296 files)
β βββ application/ # Use cases (139 files, 40+ use cases)
β β βββ appcore/ # Shared interfaces
β β βββ chat/ # Chat use cases
β β βββ message/ # Message use cases
β β βββ task/ # Task use cases
β β βββ notification/ # Notification use cases
β β βββ workspace/ # Workspace use cases
β β βββ user/ # User use cases
β βββ domain/ # Domain models (48 files, 6 aggregates)
β β βββ chat/ # Chat aggregate
β β βββ message/ # Message aggregate
β β βββ task/ # Shared task entity state/event contracts (query-side support)
β β βββ user/ # User aggregate
β β βββ workspace/ # Workspace aggregate
β β βββ notification/ # Notification aggregate
β β βββ tag/ # Tag/command system
β βββ infrastructure/ # External dependencies (50 files)
β β βββ repository/ # MongoDB repositories
β β βββ eventstore/ # Event store
β β βββ eventbus/ # Redis event bus
β β βββ websocket/ # WebSocket hub
β β βββ keycloak/ # Keycloak integration
β βββ handler/ # HTTP/WS handlers (28 files)
β βββ middleware/ # HTTP middleware (14 files)
β βββ service/ # Business services (13 files)
β βββ config/ # Configuration
β
βββ web/ # Frontend (~70 files, HTMX + Pico CSS)
β βββ templates/ # HTML templates
β βββ components/ # Reusable components
β βββ static/ # CSS, JS assets
β
βββ tests/ # Test suites
β βββ e2e/ # End-to-end tests (incl. bot response/tag flow scenarios)
β βββ integration/ # Integration tests (incl. concurrent tag processing)
β βββ load/ # Manual load tests (k6 scripts and docs)
β βββ testutil/ # Test utilities (shared Mongo/Keycloak containers)
β βββ mocks/ # Mock implementations
β
βββ docs/ # Documentation
β βββ api/ # API documentation
β βββ deployment/ # Deployment guides
β βββ development/ # Development guides
β
βββ configs/ # Configuration files
βββ docker-compose.yml # Local development services
π Security
- Authentication: Keycloak SSO with JWT tokens
- Authorization: Role-based access control (RBAC)
- Workspace Access: Access verification middleware
- Input Validation: Validation at all levels
- Secure Defaults: Secure default configuration
π§ͺ Testing
# Run all tests
make test
# Run with coverage
make test-coverage
# Run E2E tests
make test-e2e
# Run frontend browser E2E tests
make test-e2e-frontend
# Run focused board+sidebar smoke regression
make test-e2e-frontend-smoke
Test Coverage Targets
| Layer |
Target |
Current |
| Domain |
90% |
β
90%+ |
| Application |
80% |
β
85%+ |
| Infrastructure |
80% |
β
85%+ |
| Handlers |
75% |
β
80%+ |
π Application Access
π Roadmap
β
Completed (March 2026)
- Full domain layer with event sourcing (6 aggregates, 30+ events)
- Complete application layer with use cases (40+ use cases)
- MongoDB repositories with integration tests (6 repositories)
- HTTP handlers for all endpoints (40+ REST endpoints)
- WebSocket real-time communication (Hub pattern)
- Authentication & authorization middleware (7 middleware components)
- Keycloak SSO integration (JWT, OAuth, User Sync)
- Business services (Workspace Access, Chat, Member, Auth)
- E2E test coverage (all critical flows)
- API documentation (OpenAPI 3.1, Postman collection)
- Deployment and development documentation
- Frontend framework setup (HTMX + Pico CSS)
- Landing page with distinctive design (Playfair Display + DM Sans, scroll animations)
- Authentication UI (login, logout, callback)
- Workspace management UI (CRUD + full admin settings)
- Chat UI with real-time messaging, typing indicators, tag autocomplete, mention autocomplete, message editing, reactions
- Board UI with drag-and-drop Kanban, filters, bulk operations, real-time updates
- Notifications UI with real-time updates, improved UX
- User profile & settings page
- Task detail improvements (inline editing, activity timeline)
- Dark mode toggle UI
- Workspace-wide global search
- File uploads (attachments for messages and tasks)
- Chat=SoT hardening for board/sidebar flows:
- projection-safe task chat creation and post-action sync
- unified task action execution path with consistent system messages
- mandatory assignee existence validation in chat write path
- startup warning for legacy read-model collections (
chat_read_model, task_read_model)
- HTMX WebSocket close workaround and chat empty-state first-message fix
π In Progress (March 2026)
- Mobile-responsive polish
- Remaining frontend edge cases
π Coming (March 2026)
- Email notifications
- Performance optimizations
π
Future
- Mobile-friendly PWA
- Slack/Teams integration
- AI-powered features
- Analytics dashboard
π License
MIT License - see LICENSE
Last updated: March 5, 2026