East Africa Equity Crowdfunding Platform
# Keza Backend
AI-powered equity crowdfunding platform for East Africa.
Keza enables retail investors to participate in startup and SME equity offerings, with integrated KYC verification, M-Pesa payments, AI-assisted due diligence, and a secondary marketplace for share trading.
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Language | Java 21 |
| Framework | Spring Boot 3.5 |
| Database | PostgreSQL 17 + pgvector |
| Cache | Redis 7 |
| Messaging | RabbitMQ 3.13 |
| Object Storage | MinIO (S3-compatible) |
| AI | Spring AI + Anthropic Claude |
| Build | Maven, JaCoCo |
| Containerization | Docker, Kubernetes |
| CI/CD | GitHub Actions |
## Architecture
Multi-module Maven project following hexagonal (ports & adapters) architecture:
```
keza-backend/
keza-common/ Shared base entities, DTOs, exceptions, enums, utilities
keza-infrastructure/ Security (JWT), audit, Redis, RabbitMQ, S3 configs
keza-user/ Auth, registration, profiles, KYC document management
keza-campaign/ Campaign CRUD, 6-step creation wizard, state machine
keza-investment/ Investment processing, cooling-off period, portfolio
keza-payment/ M-Pesa STK Push, card/bank payment routing
keza-ai/ Chatbot, fraud detection, risk scoring
keza-marketplace/ Secondary market listings, share trading
keza-notification/ Email (SendGrid), SMS (Africa's Talking), push
keza-admin/ User management, due diligence, analytics dashboard
keza-app/ Spring Boot main app, Flyway migrations, assembly
```
Each domain module follows this internal structure:
```
com.keza. /
domain/model/ Entities, value objects
domain/port/in/ Use case interfaces
domain/port/out/ Repository & service interfaces
domain/service/ Domain services
domain/event/ Domain events
application/usecase/ Use case implementations
application/dto/ Request/response DTOs
adapter/in/web/ …