Skip to content
Snippets Groups Projects

chrishatton.org homepage

Abstract

This homepage acts as an online résumé for Chris Hatton; with technical features showcasing his full-stack development abilities.

Technology

The site is a Client/Server Application built to the following stack:

  • Kotlin language throughout
  • Ktor back-end
  • Kotlin Multiplatform front-ends:
    • JVM for Desktop
    • WASM/JS for Browser
  • Front end UI implemented with Compose Multiplatform
  • Communication between front/back-end is effected at a high-level using kotlinx.rpc remote procedure calls, sitting atop Ktor Server/Client.

The repository houses a single Gradle project that defines all the above.

Continuous Integration

  • The project resides in Chris's own self-hosted GitLab instance which includes a CI/CD runner on Ubuntu Linux.

Environment Variable configuration

The build of the project is configurable by several environment variables. These are below, along with their default values.

Defaults values are expected to apply when running in a Development Environment.

Explicit definitions are expected to be made in a CI/CD environment, these prepare the build for production.

Variable Consumed by Description Default CI/CD value (Production)
HOMEPAGE_SERVER_IS_SECURE_PROTOCOLS Client project Controls whether to use HTTP/WS (false) or HTTPS/WSS (true) false true
HOMEPAGE_SERVER_HOST Client project Host portion of URLs that address the server 127.0.0.1* chrishatton.org
HOMEPAGE_SERVER_PORT Client project Port to use in URLs that address the server 8080 443
HOMEPAGE_DOWNLOAD_PATH Server project Path for server to serve static, downloadable content from /downloads /downloads

(* The default for HOMEPAGE_SERVER_HOST will need to be 10.0.2.2 for any future Android target)

See the build.gradle.kts files of :client and :server Gradle projects for where these environment variables are accessed and applied to the build, using BuildKonfig.