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.