Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ jobs:
backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
distribution: graalvm
java-version: 25
cache: gradle
- name: Verify
run: ./gradlew --no-daemon check koverHtmlReport koverVerify
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
container:
image: texlive/texlive:latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Make LaTeX
working-directory: ./Documentation
run: make doc
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/frontend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ jobs:
frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v5
with:
package_json_file: Frontend/package.json
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: pnpm
cache-dependency-path: Frontend/pnpm-lock.yaml
- run: pnpm i
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/gradle-dependency-submission.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
distribution: graalvm
java-version: 25
cache: gradle

- name: Run snapshot action
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/operations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ jobs:
build-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
distribution: graalvm
java-version: 25
cache: gradle
- uses: pnpm/action-setup@v4
- uses: pnpm/action-setup@v5
with:
package_json_file: Frontend/package.json
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: 22
node-version: 24
cache: pnpm
cache-dependency-path: Frontend/pnpm-lock.yaml
- run: pnpm i
Expand All @@ -37,18 +37,18 @@ jobs:
run: ./gradlew --no-daemon shadowJar

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pascalhonegger/jasstracker
Expand All @@ -58,7 +58,7 @@ jobs:
type=semver,pattern={{major}}
type=ref,event=pr
- name: Build and push container images
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
file: DockerfileBuiltLocally
context: .
Expand Down
2 changes: 1 addition & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions .idea/runConfigurations/Postgres_Dev.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 14 additions & 5 deletions Backend/bootstrap/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@ plugins {
application
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.shadow)
alias(libs.plugins.kover)
alias(testLibs.plugins.kover)
}

application {
mainClass.set("io.ktor.server.netty.EngineMain")
mainClass.set("dev.honegger.jasstracker.bootstrap.ApplicationKt")

val isDevelopment: Boolean = project.ext.has("development")
applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
}

kotlin {
jvmToolchain(23)
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of(25))
vendor.set(JvmVendorSpec.GRAAL_VM)
}
}

dependencies {
Expand All @@ -27,7 +30,7 @@ dependencies {
implementation(libs.ktor.server.call.logging)
implementation(libs.ktor.server.content.negotiation)
implementation(libs.ktor.server.cors)
implementation(libs.ktor.server.netty)
implementation(libs.ktor.server.cio)
implementation(libs.ktor.server.auth)
implementation(libs.ktor.server.auth.jwt)
implementation(libs.ktor.server.status.pages)
Expand All @@ -37,12 +40,18 @@ dependencies {
implementation(libs.kotlin.logging)
implementation(libs.slf4j)
implementation(libs.java.jwt)
testImplementation(testLibs.kotlin.test)
testImplementation(testLibs.mockk)
}

tasks.withType<Test> {
useJUnitPlatform()
}

tasks {
shadowJar {
manifest {
attributes(Pair("Main-Class", "io.ktor.server.netty.EngineMain"))
attributes("Main-Class" to "dev.honegger.jasstracker.bootstrap.ApplicationKt")
}
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
@file:OptIn(ExperimentalEncodingApi::class)

package dev.honegger.jasstracker.bootstrap

import dev.honegger.jasstracker.api.endpoints.*
import dev.honegger.jasstracker.bootstrap.plugins.configureAuthentication
import dev.honegger.jasstracker.bootstrap.plugins.configureHTTP
import dev.honegger.jasstracker.bootstrap.plugins.configureStaticRouting
import dev.honegger.jasstracker.bootstrap.plugins.initializeDatabase
import dev.honegger.jasstracker.bootstrap.plugins.*
import dev.honegger.jasstracker.bootstrap.utils.readConfiguration
import dev.honegger.jasstracker.data.repositories.*
import dev.honegger.jasstracker.domain.services.*
import dev.honegger.jasstracker.security.Argon2HashConfig
Expand All @@ -14,15 +14,32 @@ import dev.honegger.jasstracker.security.JwtTokenService
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.routing.*
import io.ktor.server.engine.*
import io.ktor.server.cio.*
import io.ktor.server.config.*
import kotlin.io.encoding.Base64
import kotlin.io.encoding.ExperimentalEncodingApi
import kotlin.time.Duration

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)
fun main() {
embeddedServer(
factory = CIO,
configure = {
connectors += EngineConnectorBuilder().apply {
port = System.getenv("PORT")?.toInt() ?: 8080
}
},
environment = applicationEnvironment {
config = MapApplicationConfig(readConfiguration(System::getenv))
},
module = Application::module,
).start(true)
}

@Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused.
fun Application.module() {
environment.config.apply {
val jwtConfig = JwtConfig(
secret = property("jwt.secret").getString(),
secret = Base64.decode(property("jwt.secret").getString()),
issuer = property("jwt.issuer").getString(),
audience = property("jwt.audience").getString(),
realm = property("jwt.realm").getString(),
Expand Down Expand Up @@ -56,7 +73,6 @@ fun Application.module() {
configureHTTP()
configureStaticRouting()


routing {
route("/api") {
configureAuthenticationEndpoints(playerService)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package dev.honegger.jasstracker.bootstrap.utils

inline fun readConfiguration(getEnvVariable: (name: String) -> String?) = listOf(
"jasstracker.db.url" to (getEnvVariable("DB_URL") ?: "jdbc:postgresql://localhost:5432/jasstracker"),
"jasstracker.db.user" to (getEnvVariable("DB_USER") ?: "jasstracker"),
"jasstracker.db.password" to (getEnvVariable("DB_PASSWORD") ?: "password"),

"jwt.secret" to (getEnvVariable("JWT_SECRET") ?: "z8TxaimeeD3R9EFBCBTLNi6LNlDOOiRuKjb5TYcUEcNNjYDzhbS5StLIB1wqvDPhNoXY66FUvIsQrOykDUbUQg=="),
"jwt.issuer" to (getEnvVariable("JWT_ISSUER") ?: "http://0.0.0.0:8080/"),
"jwt.audience" to (getEnvVariable("JWT_AUDIENCE") ?: "http://0.0.0.0:9090/"),
"jwt.realm" to (getEnvVariable("JWT_REALM") ?: "JassTracker"),
"jwt.expiryTime" to (getEnvVariable("JWT_EXPIRY_TIME") ?: "4h"),

"hash.iterations" to (getEnvVariable("HASH_ITERATIONS") ?: "10"),
"hash.memory" to (getEnvVariable("HASH_MEMORY") ?: "65536"),
"hash.parallelization" to (getEnvVariable("HASH_PARALLELIZATION") ?: "1"),
)
41 changes: 0 additions & 41 deletions Backend/bootstrap/src/main/resources/application.conf

This file was deleted.

Loading
Loading