Commit Graph
36 Commits
Author SHA1 Message Date
javier b2bfb734c6 Documented the alternate locales of the Social Card in the Infrastructure package. 2026-09-04 15:13:29 +02:00
javier a71edd37ab Updated the event tagging for the AnalyticsEvent+Tagging extension in the Infrastructure package to support attribute-capable tags. 2026-09-04 14:57:29 +02:00
javier a9a62e10df Added the site languages to the Structured Data in the Infrastructure package. 2026-09-04 14:43:06 +02:00
javier 0b3ef2890e Updated the Localized HTML Collection response in the Infrastructure package to make Vary: Accept-Language opt-in for localized responses. 2026-09-04 14:39:43 +02:00
javier f0086ee461 Added the alternate locales to the Social Card in the Infrastructure package. 2026-09-04 14:36:22 +02:00
javier 79cfb42fbb Updated the LocalizationMiddleware middleware in the Infrastructure package to read explicit language requests. 2026-08-30 19:03:52 +02:00
javier 8bf6e86ffb Implemented the "tagging()" method for the the AnalyticsEvent+Tagging extension in the Infrastructure package. 2026-08-30 09:15:59 +02:00
javier 4ee1abbd67 Improved the documentation of the README file in the Infrastructure package. 2026-08-30 08:35:06 +02:00
javier 988090a511 Added a configurable site origin to the ConfigReader+Properties extension in the Website library target. 2026-08-25 16:24:03 +02:00
javier 5b2da4eb16 Added the MP4 and WOFF2 cases to the AssetExtension enumeration. 2026-08-25 16:06:05 +02:00
javier 1033cab2af Added an optional founder reference to the Organization node in the Infrastructure package. 2026-08-24 22:37:45 +02:00
javier d8cf1abf6a Changed the default Open Graph locale in the Website library target from en_US to en_NL. 2026-08-24 22:33:13 +02:00
javier eb0a2127f6 Reworded the documentation of the organization identifier helper in the Infrastructure package target. 2026-08-24 22:31:44 +02:00
javier 0ee8368e1a Added the organization identifier helper to the StructuredData type in the Infrastructure package target. 2026-08-24 22:29:00 +02:00
javier c64c8b726d Added the email property to the organization structured data in the Infrastructure package target. 2026-08-24 17:48:31 +02:00
javier fec52b7942 Added the noindex robots tag to the responses on the Health controller in the Website library target. 2026-08-24 17:47:57 +02:00
javier 88bcae9dc9 Added the WebP case to the Asset extensions in the Infrastructure package. 2026-08-24 17:44:43 +02:00
javier f6a77305ac Trailing slash middleware for the Infrastructure package (#53) 2026-08-24 17:33:52 +02:00
javier 1520c44b16 HTTPS redirect middleware for the Infrastructure package (#52) 2026-08-24 17:32:02 +02:00
javier fcfb3f21d5 Added the organization descriptors and a number value to the structured data types in the Infrastructure package. 2026-08-23 10:13:37 +02:00
javier 5422c8466d Merge branch 'setup' into template 2026-08-16 09:09:55 +02:00
javier 091c0f0686 Added an optional per-asset folder to the Asset protocol and the AssetExtension extension in the Infrastructure package. 2026-08-15 23:44:06 +02:00
javier 459002544b Merge branch 'setup' into template 2026-08-15 11:39:26 +02:00
javier 844a85f88c Added the Event type to the Analytics type in the Infrastructure package. 2026-08-15 11:31:59 +02:00
javier 2206d71997 Turned the analytics tracker off by default in the template. 2026-08-13 02:57:47 +02:00
javier 4bb3e9098c Added the session recorder script to the Page protocol in the Infrastructure package. 2026-08-13 01:19:19 +02:00
javier 3bcae4d789 Added the "recorder" flag to the Analytics type in the Infrastructure package. 2026-08-13 01:19:12 +02:00
javier 16acdf0f3d Implemented the analytics preconnect hint on the Page protocol in the Infrastructure package. 2026-08-04 12:19:20 +02:00
javier c603421c28 Implemented the scripts' deferral on the Page protocol in the Infrastructure package. 2026-08-04 12:19:12 +02:00
javier 5c070c2b1a Integrated Analytics into the Infrastructure package (#40)
This PR contains the work done to define the `Analytics` type into the _Infrastructure_ package and also, to integrate this type into its `Page` protocol.

Reviewed-on: rock-n-code/loud-amsterdam#40
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-08-04 11:23:25 +02:00
javier b680ae0689 Structured Data support for the Page protocol in the Infrastructure package (#32)
This PR contains the work done to introduce a `StructuredData` type that pages use to describe themselves to search engines as schema.org JSON-LD, and wires it into the Page protocol so the payload renders automatically in the document head.

Reviewed-on: rock-n-code/loud-amsterdam#32
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-08-01 17:21:16 +00:00
javier 5c9fde9d41 Social Card tweaks in the Infrastructure package. (#30)
This PR contains the work done to address certain tweaks in the newly-introduced _Social Card_ types in the **Infrastructure** package.

Reviewed-on: rock-n-code/loud-amsterdam#30
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-08-01 11:25:36 +00:00
javier efc933d5d0 Extra tags and Social Card integration in the Infrastructure package (#28)
This PR contains the work done to extends the `Page` protocol with the head tags that control search snippets and link previews: a meta description, a canonical URL, and a social card rendered as _Open Graph_ and _Twitter_ meta tags. All three are optional with nil defaults, so existing conformers compile and render unchanged.

Reviewed-on: rock-n-code/loud-amsterdam#28
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-08-01 10:57:29 +00:00
javier ea00b94841 Tweaks and fixes throughout the project (#27)
This PR contains the work done to do a little bit of housekeeping pass across all packages and the Website service.

To provide further details about the work:
* Refreshed the READMEs and source documentation to match the current code;
* Tagged every test case consistently across the Infrastructure, Localization, Persistence, and Website test targets;
* Removed Website middleware tests now covered by Infrastructure's own suite;
* Conformed the `PrepareDB` method to Sendable;
* Relaxes the production Compose DATABASE_TLS default from require to prefer;
* Added Persistence test verifying the prefer posture falls back to plaintext connections.

Reviewed-on: rock-n-code/loud-amsterdam#27
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2026-07-30 06:33:57 +00:00
javier cdded06ba3 Renamed the Web package as Infrastructure (#25)
This PR contains the work done to rename the _Web_ package as _Infrastructure_, to provide a clear naming and purpose to this particular package within the project.

To provide further details about the work:

* Infrastructure
  * Asset fingerprinting: an FNV-1a token derived from the static files directory, appended as ?v= to asset URLs so deploys bust caches; pre-rendered pages also revalidate via weak ETags.
  * New middlewares: fixed-window RateLimitMiddleware (per-client budgets keyed by trusted X-Forwarded-For or remote address) and VaryMiddleware (Accept-Encoding on every response); SecurityHeadersMiddleware now also stamps error responses.
  * Auto-generated HEAD endpoints, cache max-age configuration, and Docker build/Compose refinements.
  * Protocols and scaffolding: Asset/AssetExtension, the Page protocol (viewport, stylesheets, scripts, versioned URLs), and LocalizedRequestContext.
  * Rate limiter's counter store swapped from an actor to a Mutex (no executor hop per request) with amortized batch eviction instead of O(n²) scans under client floods.
  * FingerprintAssets reports unreadable files to a logger instead of silently producing a token that never busts their cache.

Reviewed-on: rock-n-code/loud-amsterdam#25
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2026-07-23 01:04:37 +00:00
javier a868275347 Renamed the Web package as Infrastructure (#24)
Reviewed-on: rock-n-code/loud-amsterdam#24
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2026-07-22 21:26:55 +00:00