Skip to main content

System Architecture

Architecture Principles​

  • Monolith-first: Phase 1 uses modular monolith, no microservices
  • Dependency Inversion: Domain layer does not depend on infrastructure
  • Replaceable Boundaries: Search and storage both have SPI abstractions

Module Structure​

server/
├── skillhub-app/ # Startup, configuration assembly, Controllers
├── skillhub-domain/ # Domain models + domain services + application services
├── skillhub-auth/ # OAuth2 authentication + RBAC + authorization decisions
├── skillhub-search/ # Search SPI + PostgreSQL full-text implementation
├── skillhub-storage/ # Object storage abstraction + LocalFile/S3
└── skillhub-infra/ # JPA, utilities, configuration foundation

Module Dependencies​

app → domain, auth, search, storage, infra
infra → domain
auth → domain
search → domain
storage → (independent)

Tech Stack​

LayerTechnologyVersion
RuntimeJava21
FrameworkSpring Boot3.2.3
DatabasePostgreSQL16.x
Cache/SessionRedis7.x

Deployment Architecture​

┌──────────────┐
│ Browser / CLI│
└──────┬───────┘
│
▼
┌──────────────┐
│ Web/Nginx │
└──────┬───────┘
│ /api/*
▼
┌──────────────┐
│ Spring Boot │
└───┬────┬─────┘
│ │
▼ ▼
PostgreSQL Redis

Next Steps​