Geen omschrijving
  • Astro 76.6%
  • JavaScript 7.6%
  • CSS 7%
  • TypeScript 6.7%
  • Dockerfile 1.2%
  • Andere 0.9%
Zoek een bestand
Fraseneggi 0db5f6435e Natuurlijkere teksten (geen streepjes) en Lighthouse-optimalisatie
Teksten:
- alle gedachtestreepjes (— en –) uit de website gehaald, vervangen door
  natuurlijke interpunctie (komma, punt, dubbele punt, haakjes)
- teksten herschreven naar plattere, minder "AI-achtige" taal
- personenbereik nu "2 tot 4" i.p.v. een streepje

Lighthouse (desktop 100/100/100/100, mobiel 99/100/100/100):
- Prestaties: alle CSS inline (geen render-blocking), hero-afbeelding
  vooraf geladen met exact passende srcset, fijnere responsive breakpoints
  en lagere hero-kwaliteit (onzichtbaar onder de overlay)
- Toegankelijkheid: knop- en footercontrast verhoogd naar WCAG AA
- Best practices: OpenStreetMap-kaart als klik-om-te-laden (geen
  externe verzoeken bij het laden van de pagina)
- SEO: LodgingBusiness structured data (JSON-LD)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 23:45:42 +02:00
public Natuurlijkere teksten (geen streepjes) en Lighthouse-optimalisatie 2026-06-07 23:45:42 +02:00
scripts Toon afbeeldingen in de CMS-editor (preview-kopie van uploads) 2026-06-07 22:43:53 +02:00
src Natuurlijkere teksten (geen streepjes) en Lighthouse-optimalisatie 2026-06-07 23:45:42 +02:00
.dockerignore Bouw moderne Astro-website met DecapCMS, WebP en Coolify-deploy 2026-06-07 21:54:01 +02:00
.env.example Zet productiedomein op https://fraseneggi.je-ma.com 2026-06-07 22:38:33 +02:00
.gitignore Bouw moderne Astro-website met DecapCMS, WebP en Coolify-deploy 2026-06-07 21:54:01 +02:00
.nvmrc Bouw moderne Astro-website met DecapCMS, WebP en Coolify-deploy 2026-06-07 21:54:01 +02:00
astro.config.mjs Natuurlijkere teksten (geen streepjes) en Lighthouse-optimalisatie 2026-06-07 23:45:42 +02:00
docker-compose.yml Zet productiedomein op https://fraseneggi.je-ma.com 2026-06-07 22:38:33 +02:00
Dockerfile Bouw moderne Astro-website met DecapCMS, WebP en Coolify-deploy 2026-06-07 21:54:01 +02:00
package-lock.json Bouw moderne Astro-website met DecapCMS, WebP en Coolify-deploy 2026-06-07 21:54:01 +02:00
package.json Toon afbeeldingen in de CMS-editor (preview-kopie van uploads) 2026-06-07 22:43:53 +02:00
README.md Zet productiedomein op https://fraseneggi.je-ma.com 2026-06-07 22:38:33 +02:00
server.mjs Zet productiedomein op https://fraseneggi.je-ma.com 2026-06-07 22:38:33 +02:00
tsconfig.json Bouw moderne Astro-website met DecapCMS, WebP en Coolify-deploy 2026-06-07 21:54:01 +02:00

Agriturismo Fraseneggi — website

Moderne herbouw van fraseneggi.com: een snelle, statische website gebouwd met Astro, met een lokaal gehoste DecapCMS (zonder CDN) en een Forgejo/Gitea git-backend via PKCE (alleen een Client ID nodig — geen secret).

  • Statische Astro-site, razendsnel
  • 🖼️ Alle afbeeldingen automatisch geoptimaliseerd naar WebP (responsive)
  • 🗂️ DecapCMS lokaal gebundeld (geen CDN), git-backend op Forgejo/Gitea
  • 🧭 Cache instelbaar vanuit het CMS (bewaartijd + cache-versie)
  • 📈 Umami-statistieken instelbaar vanuit het CMS (script-URL + website-ID)
  • 🐳 Eén Dockerfile, klaar om met Coolify uit te rollen

1. Snel starten (lokaal)

Vereist: Node 20.3+ (of 22, zie .nvmrc).

npm install
npm run dev          # site op http://localhost:4321

Lokaal het CMS gebruiken

Het CMS draait op /admin/. Voor lokaal bewerken (zonder Forgejo) start je in een tweede terminal de lokale backend:

npm run cms          # start decap-server (proxy naar je lokale bestanden)

Ga daarna naar http://localhost:4321/admin/ en log in met "Login" (lokale modus). Wijzigingen worden direct naar de bestanden in src/ geschreven.


2. Hoe de afbeeldingen werken (WebP + cache)

  • Geüploade afbeeldingen komen in src/assets/uploads/.
  • Bij het bouwen zet Astro (via sharp) elke afbeelding om naar WebP in meerdere formaten (responsive srcset). De bestanden krijgen een hash in de naam en worden door de server onbeperkt gecachet (immutable).
  • De bewaartijd voor overige bestanden en de cache-versie stel je in via het CMS onder Site-instellingen → Cache & afbeeldingen. De server leest dit en zet de juiste Cache-Control-headers. Verhoog de cache-versie om browsers te dwingen alles opnieuw op te halen.

Tip: de seed-foto's per appartement zijn algemene sfeerfoto's. Upload via het CMS gerust echte interieurfoto's per appartement — ze worden automatisch geoptimaliseerd.


3. DecapCMS koppelen aan Forgejo/Gitea (productie)

De CMS-login gebruikt OAuth2 met PKCE: je hebt alleen een Client ID nodig, geen secret en geen aparte OAuth-server.

3a. OAuth2-applicatie aanmaken in Forgejo

  1. Log in op je Forgejo (https://code.securityasaservice.org).
  2. Ga naar Settings → Applications → Manage OAuth2 Applications (of op organisatieniveau onder de organisatie Fraseneggi).
  3. Maak een nieuwe applicatie:
    • Application Name: Fraseneggi CMS
    • Redirect URI: https://fraseneggi.je-ma.com/admin/ (let op de afsluitende slash)
    • Confidential Client: uitgevinkt laten (publieke client → PKCE)
  4. Bewaar en kopieer de Client ID.

3b. Omgevingsvariabelen instellen

Zet deze variabelen (in Coolify of in een lokaal .env, zie .env.example):

Variabele Voorbeeld
SITE_URL https://fraseneggi.je-ma.com
FORGEJO_URL https://code.securityasaservice.org
FORGEJO_REPO Fraseneggi/FraseneggiWebsite
FORGEJO_BRANCH main
DECAP_GITEA_CLIENT_ID (de Client ID uit stap 3a)

De server genereert hiermee /admin/config.ymlzonder opnieuw te bouwen wanneer je de variabelen aanpast. Je hoeft alleen de container te herstarten.

Belangrijk: Forgejo/Gitea moet PKCE ondersteunen (standaard het geval in recente versies). De gebruiker die inlogt moet schrijfrechten op de repo hebben.


4. Umami-statistieken instellen

Umami draait al via Coolify. In het CMS, onder Site-instellingen → Statistieken (Umami):

  1. Zet Statistieken inschakelen aan.
  2. Vul de Script-URL in (bijv. https://umami.jouwdomein.nl/script.js).
  3. Vul de Website-ID in (de UUID uit je Umami-dashboard).

Sla op — het script wordt bij de volgende build in de <head> van elke pagina geladen (lokaal, zonder externe CDN).


5. Uitrollen met Coolify

Twee opties:

Optie A — Dockerfile (aanbevolen)

  1. Maak in Coolify een nieuwe Application op basis van deze git-repository.
  2. Kies build pack Dockerfile.
  3. Zet de omgevingsvariabelen uit stap 3b.
  4. Stel de poort in op 3000.
  5. Koppel je domein en deploy.

Elke git push (ook die vanuit het CMS!) triggert een nieuwe build en deploy. Daardoor worden nieuwe afbeeldingen automatisch naar WebP omgezet en is de site altijd statisch en snel.

Optie B — Docker Compose

Gebruik het meegeleverde docker-compose.yml (Coolify → Docker Compose). Zet dezelfde omgevingsvariabelen.


6. Scripts

Commando Doel
npm run dev Ontwikkelserver (Astro) op poort 4321
npm run cms Lokale DecapCMS-backend (decap-server)
npm run build Bundelt het CMS lokaal + bouwt de statische site naar dist/
npm run preview Bekijkt de statische build lokaal
npm start Productieserver (serveert dist/ met cache + CMS-config)

7. Projectstructuur

.
├── Dockerfile, docker-compose.yml   # deploy
├── server.mjs                       # productieserver (cache + /admin/config.yml)
├── astro.config.mjs
├── public/
│   ├── admin/                       # DecapCMS (index.html, config.yml, lokale bundel)
│   ├── favicon.ico, apple-touch-icon.png
├── scripts/copy-decap.mjs           # kopieert de DecapCMS-bundel (geen CDN)
└── src/
    ├── assets/
    │   ├── brand/logo.png           # logo (behouden van de oude site)
    │   └── uploads/                 # CMS-afbeeldingen → WebP bij build
    ├── components/                  # Header, Footer, kaarten, Hero, Gallery, ...
    ├── content/                     # appartementen, nieuws, activiteiten, omgeving, pagina's
    ├── content.config.ts            # schema's van de content
    ├── data/settings.json           # site-instellingen (via CMS)
    ├── layouts/BaseLayout.astro
    ├── lib/                         # helpers (afbeeldingen, site)
    ├── pages/                       # routes
    └── styles/global.css            # design-systeem

8. Inhoud aanpassen

Alles is bewerkbaar via het CMS op /admin/:

  • Site-instellingen — naam, contact, social, registratienummers, Umami, cache, hero.
  • Pagina's — welkomsttekst, informatie, omgeving-intro, activiteiten-intro, contact/route.
  • Appartementen — 5 verblijven (naam, kleur, prijs, personen, foto's, voorzieningen).
  • Nieuws — blogberichten.
  • Activiteiten & Omgeving — kaartjes met foto en beschrijving.

Technisch staat alles als Markdown/JSON in src/, dus je kunt het ook direct in de repository bewerken.