Skip to content

Technologies ​

This chapter provides a comprehensive overview of the technologies used in the Keyla project, including the rationale behind each choice and the role they play in the overall system architecture.

Technology Stack Overview ​

The Keyla project employs a cross-platform technology stack designed to deliver a robust typing test application with offline capabilities. The architecture is divided into three main modules:

  • Backend Module: Scala-based REST API
  • Frontend Module: Kotlin Multiplatform CLI application
  • Documentation Module: VitePress for comprehensive project documentation

Backend Module ​

Scala 3 ​

Purpose: Primary programming language for the backend API service.

HTTP4s ​

Purpose: HTTP server and client library for building RESTful APIs.

Role in Project: Provides the HTTP server infrastructure for the REST API, handling all client-server communication between the CLI and backend.

Tapir ​

Purpose: Type-safe API definition and documentation library.

Key Features:

  • Type-safe endpoint definitions
  • Automatic OpenAPI/Swagger documentation generation
  • Multiple backend integrations (HTTP4s, Akka HTTP, etc.)
  • Request/response validation

Role in Project: Defines the API contracts, generates interactive documentation, and ensures type safety across the entire API surface.

Cats Effect ​

Purpose: Functional programming library for asynchronous and concurrent programming.

Role in Project: Manages asynchronous operations, resource handling, and provides the foundation for functional programming patterns throughout the backend. Used, mainly, to handle the business logics.

JSONiter ​

Purpose: High-performance JSON serialization/deserialization library.

Role in Project: Handles all JSON serialization, ensuring fast data exchange and type safety.

Frontend Module ​

Kotlin Multiplatform ​

Purpose: Cross-platform development framework for the CLI application.

Key Features:

  • Shared business logic across platforms
  • Platform-specific implementations when needed

Role in Project: Enables the CLI to run natively on JVM, Linux, Windows, and macOS while sharing common code and maintaining platform-specific implementations.

Kotter ​

Purpose: Terminal UI library for creating interactive command-line interfaces.

Key Features:

  • Rich text formatting and colors
  • Interactive prompts and menus
  • Real-time UI updates
  • Cross-platform terminal compatibility

Role in Project: Powers the modern terminal interface, providing real-time typing feedback, progress indicators, and interactive menus.

Ktor ​

Purpose: HTTP client library for communicating with the backend API.

Key Features:

  • Multi-platform HTTP client
  • Platform-specific implementations (cURL, WinHttp, Darwin)

Role in Project: Handles all HTTP communication between the CLI and the backend API, with platform-optimized implementations for each target OS.

MongoDB ​

Purpose: NoSQL database for persistent data storage.

Key Features:

  • Flexible document-based data model
  • Local deployment support

Role in Project: Stores user profiles, typing test results, analytics data, and system configuration with support for both local and remote deployments.

Key Features:

  • Synchronous and asynchronous operations
  • Type-safe query building
  • Connection pooling and management
  • BSON document handling

Role in Project: Provides the interface between the Scala backend and MongoDB, handling all database operations and data persistence.

Build and Development Tools ​

SBT ​

Purpose: Build tool for the Scala backend project.

Gradle ​

Purpose: Build tool for the Kotlin Multiplatform CLI project.

Code Quality Tools ​

Scala Tools ​

  • Scalafmt: Automatic code formatting
  • Scalafix: Code linting and refactoring

Kotlin Tools ​

  • KTLint: Kotlin code style checker
  • Detekt: Static code analysis

Documentation Module ​

VitePress ​

Purpose: Static site generator for project documentation.

Key Features:

  • Markdown-based content
  • Vue.js-powered theming
  • GitHub Pages integration

Role in Project: Generates the comprehensive project documentation website, providing an online version of all technical documentation and user guides.

Keyla-TTT Project Report for SPE Exam