Files
NowChessSystems/docs/adr/ADR-001-Stack.md
T

2.4 KiB

ADR-001: Technology Stack Selection

Status

Accepted

Context

The "NowChessSystems" project requires a modern, scalable, and maintainable technology stack to support web-based interfaces. The system is designed as a microservice architecture to allow for independent scaling and development of various components (e.g., engine, matchmaking, user management).

Decision

We have decided to use the following technologies for the core system:

Backend

  • Language: Scala 3 for its powerful type system, functional programming capabilities, and seamless JVM integration.
  • Framework: Quarkus with the io.quarkiverse.scala:quarkus-scala3 extension to leverage GraalVM native compilation and fast startup times.
  • Persistence: Hibernate and Jakarta Persistence for standard-based ORM.

Frontend

  • Build Tool: Vite for a fast development experience.
  • Framework: TBD (Evaluation between React, Angular, and Vue).
  • Terminal UI: Lanterna for a text-based user interface (TUI).

DevOps & Infrastructure

  • Orchestration: Kubernetes for container orchestration.
  • GitOps & Delivery: ArgoCD for continuous delivery and Kargo for multi-stage lifecycle management.

AI-Assisted Development

Consequences

Positive

  • High Performance: Quarkus and GraalVM enable low memory footprint and fast startup.
  • Developer Productivity: Scala 3 and AI tools provide a high-level, expressive environment.
  • Robustness: Kubernetes and ArgoCD ensure reliable deployment and scaling.
  • Accessibility: Offering both a TUI and a web interface caters to different user preferences.

Negative / Risks

  • Complexity: Managing a microservices architecture with Kubernetes adds operational overhead.
  • Learning Curve: Scala 3 and the specific Quarkus-Scala integration may require training for new developers.
  • Consistency: Maintaining parity between the TUI and Web frontend functionality.