Static file serving support for the Website service (#3)

This PR contains the work done to support the static files serving for the **Website** service, and also included the essential boilerplate assets from the **HTML5 boilerplate** project.

To provide further details about the work done:

* Serving: Added the `FileMiddleware` middlewqare to the router; `path`, `server name`, and `log level` now read from config with defaults.
* Library: Added the `StaticFile` enumeration with a `contentType` property, plus typed config-key/value constants and the `Configuration` dependency on WebsiteCore.
* Assets: Added the **HTML5 boilerplate** (HTML, CSS, JS, icons, manifest, robots) to the *Resources/Static* folder.
* Docker: Stage the Resources directory as read-only.
* Tests: Added a test plan, and a shared Xcode scheme.

Reviewed-on: rock-n-code/loud-amsterdam#3
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit is contained in:
2026-06-27 10:59:32 +00:00
committed by javier
parent 08b210e7c6
commit 7542bc595f
25 changed files with 973 additions and 36 deletions
+8 -2
View File
@@ -36,6 +36,7 @@ let package = Package(
.executableTarget(
name: "Website",
dependencies: [
.byName(name: "WebsiteCore"),
.product(
name: "Configuration",
package: "swift-configuration"
@@ -49,17 +50,22 @@ let package = Package(
),
.target(
name: "WebsiteCore",
dependencies: [],
dependencies: [
.product(
name: "Configuration",
package: "swift-configuration"
),
],
path: "Sources/Library"
),
.testTarget(
name: "WebsiteTests",
dependencies: [
.byName(name: "Website"),
.product(
name: "HummingbirdTesting",
package: "hummingbird"
),
.byName(name: "Website"),
],
path: "Tests/App"
),