Files
blog/docs
davide 1247a2ca07 Add numbered pagination and redesign the IT/EN language switch
Blog and category archives now show a numbered page list (first, last,
current +/-1, collapsing gaps into an ellipsis) instead of only
previous/next — see shared/utils/pagination.ts's paginationRange().

Renders page links via NuxtLink's custom/v-slot API rather than letting
it render its own <a>: RouterLink's built-in active-class/aria-current
detection compares only the route's path, not its query string, so
every ?page=N link was incorrectly marked as the current page.

The language switch now shows both "Italiano / English" at all times,
with the current one as plain non-interactive text and the other as a
link, moved to the header's top-right corner instead of stacked under
the logo.
2026-09-11 14:31:58 +02:00
..
2026-09-11 11:25:14 +02:00

Documentation

Technical documentation for this repository. For setup, deployment and day-to-day commands, see the root README.md; for coding conventions and constraints, see CLAUDE.md. These docs explain the structure and behavior of the system in more depth than either of those.

  • architecture.md — services, routing, request flow, environment variables.
  • content-model.md — PocketBase collections, admin panel, permissions, editorial workflow.
  • frontend.md — Nuxt routes, server (Nitro) endpoints, data flow, SEO.

What this repository is

A blog website with two faces:

  • Public site — anonymous visitors read articles and browse categories. Fully server-rendered, no login, no client-side calls to the CMS.
  • Admin panel — the site owner logs into PocketBase's admin UI (/admin, redirects to /_/) to write, edit and publish articles and categories. This is the only way content changes; there is no other CMS and no public user accounts.

One codebase, two runtime components (Nuxt frontend, PocketBase — CMS and database in one process), fronted by a single Caddy reverse proxy on one domain.