This project is a personal portfolio website built using Kotlin Multiplatform and Compose HTML.
- Kotlin Multiplatform (JS): The project targets Kotlin/JS for the browser using the IR compiler.
- Compose HTML: UI is built using the
compose.htmllibraries, which provide a declarative way to define the DOM and CSS. - Modular UI Components: The UI is structured into discrete, reusable Composable functions found in
de.nilsdruyen.portfolio.components. - State Persistence: Uses
browser.localStorageto persist user preferences like dark mode across sessions. - Root Rendering: The application entry point (
Main.kt) binds the Compose runtime to a<div id="root">in theindex.html.
- Kotlin: Primary programming language.
- JetBrains Compose for Web: Specifically
compose.html.coreandcompose.html.svgfor the frontend. - Kotlinx Coroutines: Used for handling asynchronous tasks if needed.
- Detekt: Integrated for static code analysis and code style enforcement.
- Gradle Versions Plugin: Used for managing and checking for dependency updates.
jsBrowserProductionWebpack: Compiles and bundles the application for production.moveAssets: Copies assets to the distribution directory.moveExecutable: Custom task that assembles the finalindex.html, JS bundles, and assets intobuild/dist/for easy deployment (e.g., to GitHub Pages).ktlintCheck: Runs detekt with a focus on formatting/linting rules../gradlew kotlinUpgradeYarnLock: Updates yarn.lock for current state../gradlew jsBrowserDevelopmentRun: Runs current application and serves it at http://localhost:8080
src/jsMain/kotlin: Contains the main application logic and UI components.src/jsMain/resources: Contains static assets likeindex.htmland images.detekt.yml&detekt-formatting.yml: Configuration for static analysis.