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