# backend This project was created using the [Ktor Project Generator](https://start.ktor.io). Here are some useful links to get you started: - [Ktor Documentation](https://ktor.io/docs/home.html) - [Ktor GitHub page](https://github.com/ktorio/ktor) - The [Ktor Slack chat](https://app.slack.com/client/T09229ZC6/C0A974TJ9). You'll need to [request an invite](https://surveys.jetbrains.com/s3/kotlin-slack-sign-up) to join. ## Features Here's a list of features included in this project: | Name | Description | |------------------------------------------------------------------------|------------------------------------------------------------------------------------| | [CORS](https://start.ktor.io/p/cors) | Enables Cross-Origin Resource Sharing (CORS) | | [Routing](https://start.ktor.io/p/routing) | Provides a structured routing DSL | | [Authentication](https://start.ktor.io/p/auth) | Provides extension point for handling the Authorization header | | [Request Validation](https://start.ktor.io/p/request-validation) | Adds validation for incoming requests | | [Status Pages](https://start.ktor.io/p/status-pages) | Provides exception handling for routes | | [Call Logging](https://start.ktor.io/p/call-logging) | Logs client requests | | [Content Negotiation](https://start.ktor.io/p/content-negotiation) | Provides automatic content conversion according to Content-Type and Accept headers | | [kotlinx.serialization](https://start.ktor.io/p/kotlinx-serialization) | Handles JSON serialization using kotlinx.serialization library | | [Exposed](https://start.ktor.io/p/exposed) | Adds Exposed database to your application | | [Rate Limiting](https://start.ktor.io/p/ktor-server-rate-limiting) | Manage request rate limiting as you see fit | | [Compression](https://start.ktor.io/p/compression) | Compresses responses using encoding algorithms like GZIP | | [Authentication Basic](https://start.ktor.io/p/auth-basic) | Handles 'Basic' username / password authentication scheme | ## Building & Running To build or run the project, use one of the following tasks: | Task | Description | |-------------------------------|----------------------------------------------------------------------| | `./gradlew test` | Run the tests | | `./gradlew build` | Build everything | | `buildFatJar` | Build an executable JAR of the server with all dependencies included | | `buildImage` | Build the docker image to use with the fat JAR | | `publishImageToLocalRegistry` | Publish the docker image locally | | `run` | Run the server | | `runDocker` | Run using the local docker image | If the server starts successfully, you'll see the following output: ``` 2024-12-04 14:32:45.584 [main] INFO Application - Application started in 0.303 seconds. 2024-12-04 14:32:45.682 [main] INFO Application - Responding at http://0.0.0.0:8080 ```