From 5a7beabc9dde84d1f8435562a14f4ce7a917a262 Mon Sep 17 00:00:00 2001 From: Tim Wundenberg Date: Fri, 7 Nov 2025 22:21:31 +0100 Subject: [PATCH] feat: basic dev setup --- .gitignore | 3 + build.gradle | 1 + input.css | 1 + package-lock.json | 1131 +++++++++++++++++ package.json | 15 + .../projektverwaltung/HomeController.java | 14 + src/main/resources/static/favicon.ico | Bin 0 -> 145951 bytes src/main/resources/static/favicon.svg | 4 + src/main/resources/templates/home.html | 13 + 9 files changed, 1182 insertions(+) create mode 100644 input.css create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/main/java/de/wundenbergs/projektverwaltung/HomeController.java create mode 100644 src/main/resources/static/favicon.ico create mode 100644 src/main/resources/static/favicon.svg create mode 100644 src/main/resources/templates/home.html diff --git a/.gitignore b/.gitignore index c2065bc..faeadac 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ out/ ### VS Code ### .vscode/ + +node_modules/ +src/main/resources/static/styles.css diff --git a/build.gradle b/build.gradle index 386f16c..98f5fdd 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,7 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' // testImplementation 'org.springframework.security:spring-security-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + developmentOnly("org.springframework.boot:spring-boot-devtools") } tasks.named('test') { diff --git a/input.css b/input.css new file mode 100644 index 0000000..f1d8c73 --- /dev/null +++ b/input.css @@ -0,0 +1 @@ +@import "tailwindcss"; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1523746 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1131 @@ +{ + "name": "projektverwaltung", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "projektverwaltung", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@tailwindcss/cli": "^4.1.17", + "tailwindcss": "^4.1.17" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/cli": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.17.tgz", + "integrity": "sha512-jUIxcyUNlCC2aNPnyPEWU/L2/ik3pB4fF3auKGXr8AvN3T3OFESVctFKOBoPZQaZJIeUpPn1uCLp0MRxuek8gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.5.1", + "@tailwindcss/node": "4.1.17", + "@tailwindcss/oxide": "4.1.17", + "enhanced-resolve": "^5.18.3", + "mri": "^1.2.0", + "picocolors": "^1.1.1", + "tailwindcss": "4.1.17" + }, + "bin": { + "tailwindcss": "dist/index.mjs" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.17.tgz", + "integrity": "sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.17.tgz", + "integrity": "sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-arm64": "4.1.17", + "@tailwindcss/oxide-darwin-x64": "4.1.17", + "@tailwindcss/oxide-freebsd-x64": "4.1.17", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.17", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.17", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.17", + "@tailwindcss/oxide-linux-x64-musl": "4.1.17", + "@tailwindcss/oxide-wasm32-wasi": "4.1.17", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.17", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.17" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.17.tgz", + "integrity": "sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.17.tgz", + "integrity": "sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.17.tgz", + "integrity": "sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.17.tgz", + "integrity": "sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.17.tgz", + "integrity": "sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.17.tgz", + "integrity": "sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.17.tgz", + "integrity": "sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.17.tgz", + "integrity": "sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.17.tgz", + "integrity": "sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.17.tgz", + "integrity": "sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.6.0", + "@emnapi/runtime": "^1.6.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.7", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.17.tgz", + "integrity": "sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.17.tgz", + "integrity": "sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.17.tgz", + "integrity": "sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6aacdee --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "projektverwaltung", + "version": "1.0.0", + "description": "", + "license": "ISC", + "author": "", + "type": "commonjs", + "scripts": { + "watch": "npx @tailwindcss/cli -i ./input.css -o ./src/main/resources/static/styles.css --watch" + }, + "devDependencies": { + "@tailwindcss/cli": "^4.1.17", + "tailwindcss": "^4.1.17" + } +} diff --git a/src/main/java/de/wundenbergs/projektverwaltung/HomeController.java b/src/main/java/de/wundenbergs/projektverwaltung/HomeController.java new file mode 100644 index 0000000..ad1b701 --- /dev/null +++ b/src/main/java/de/wundenbergs/projektverwaltung/HomeController.java @@ -0,0 +1,14 @@ +package de.wundenbergs.projektverwaltung; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class HomeController { + @GetMapping("/") + public String home(Model model) { + model.addAttribute("message", "Hello Thymeleaf!"); + return "home"; + } +} diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..584aadefd8245e29b9ea9717e2a4d26bdedf2c80 GIT binary patch literal 145951 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 A)&Kwi literal 0 HcmV?d00001 diff --git a/src/main/resources/static/favicon.svg b/src/main/resources/static/favicon.svg new file mode 100644 index 0000000..5a7df7b --- /dev/null +++ b/src/main/resources/static/favicon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html new file mode 100644 index 0000000..39a3db8 --- /dev/null +++ b/src/main/resources/templates/home.html @@ -0,0 +1,13 @@ + + + + + Home + + + +

Placeholder message

+

Test x

+

Test 2

+ +