- Astro 84.3%
- CSS 9.2%
- Dockerfile 2.7%
- TypeScript 1.9%
- HTML 1%
- Andere 0.9%
Brands.astro rendert niets meer wanneer de merkenlijst leeg is, i.p.v. een lege sectie te tonen. Werkt automatisch door op zowel de home- als de casual-pagina, en de sectie verschijnt vanzelf weer zodra er merken worden toegevoegd. Lokaal getest: geen Merken-sectie op home/casual, geen console-fouten. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .nvmrc | ||
| astro.config.mjs | ||
| Dockerfile | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Aldino Moda — website
Moderne herbouw van aldinomoda.nl: high-end Italiaanse herenmode in Deventer. Gebouwd met Astro + Tailwind CSS v4, content beheerbaar via Decap CMS met een Forgejo/Gitea-backend, en uitrolbaar via een Dockerfile op Coolify.
Inhoud
- Techniek
- Snel starten (lokaal)
- Content bewerken (Decap CMS)
- Forgejo/Gitea OAuth instellen (ClientID)
- Uitrollen met Coolify
- Automatisch herbouwen bij wijzigingen
- Projectstructuur
Techniek
| Onderdeel | Keuze |
|---|---|
| Framework | Astro 5 (statische output) |
| Styling | Tailwind CSS v4 (@tailwindcss/vite) |
| Content | JSON-bestanden in src/content/, bewerkt via Decap CMS |
| CMS-backend | Forgejo / Gitea (OAuth via PKCE — alleen een ClientID nodig) |
| Hosting | Docker (nginx) op Coolify |
| Fonts | Cormorant Garamond + Inter (Google Fonts) |
Alle teksten en afbeeldingen staan in src/content/ (data) en
public/images/ (beeld). De logo's en foto's van de oorspronkelijke site
zijn behouden.
Snel starten (lokaal)
Vereist: Node.js 20+ (zie .nvmrc).
npm install
npm run dev # http://localhost:4321
De CMS lokaal proberen zonder Git-koppeling (handig om de admin te testen):
# Terminal 1
npm run cms # start decap-server (proxy backend)
# Terminal 2
npm run dev
# open http://localhost:4321/admin/
Dit werkt dankzij local_backend: true in public/admin/config.yml:
wijzigingen worden dan rechtstreeks naar je lokale bestanden geschreven.
Productiebuild lokaal testen:
npm run build # output in dist/
npm run preview
Content bewerken (Decap CMS)
Na uitrol is de beheeromgeving bereikbaar op /admin/ (bijv.
https://aldinomoda.nl/admin/). Je logt in met je Forgejo/Gitea-account.
Beheerbare onderdelen:
- Instellingen — bedrijfsnaam, slogan, logo, contactgegevens, openingstijden, social media, en (optioneel) een Formspree-endpoint voor het contactformulier.
- Pagina's — Home, Over Aldino Moda, Maatpakken, Trouwkostuums, Casual, Accessoires, Contact. Elke pagina heeft eigen velden (hero, teksten, galerij…).
- Merken — de logo's in het merkenoverzicht.
Een opslag-actie in de CMS = een commit in de repo. Met automatische herbouw (zie onder) staat de wijziging binnen ~1 minuut live.
Afbeeldingen die je in de CMS uploadt komen in
public/images/terecht en worden als/images/<bestand>gebruikt.
Forgejo/Gitea OAuth instellen (ClientID)
De Decap-backend voor Forgejo/Gitea gebruikt PKCE: er is géén aparte OAuth-server of secret nodig — alleen een ClientID.
Vereisten: Gitea 1.20+ of Forgejo 1.21.4+ met CORS ingeschakeld.
1. OAuth-applicatie aanmaken
In Forgejo/Gitea: Instellingen → Toepassingen → OAuth2-toepassingen beheren (of via het beheerderspaneel voor een organisatie):
- Application Name:
Aldino Moda CMS - Redirect URI:
https://aldinomoda.nl/admin/(voeg eventueelhttp://localhost:4321/admin/toe voor lokaal testen) - Confidential Client: ⚠️ uitvinken (belangrijk voor PKCE)
Na opslaan krijg je een Client ID. Die heb je nodig.
2. public/admin/config.yml invullen
backend:
name: gitea
repo: <eigenaar>/<repo> # bv. aldino/aldinomoda
branch: main
base_url: https://git.example.com # jouw Forgejo/Gitea-URL
api_root: https://git.example.com/api/v1
app_id: <JOUW-CLIENT-ID> # de ClientID uit stap 1
3. CORS op de Git-server
Forgejo/Gitea moet cross-origin requests vanaf je website toestaan. In
app.ini (sectie [cors]):
[cors]
ENABLED = true
ALLOW_DOMAIN = https://aldinomoda.nl
METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS
Iedereen die in de CMS moet kunnen inloggen, heeft push-rechten op de repo nodig.
Uitrollen met Coolify
- Push deze repo naar je Forgejo/Gitea.
- In Coolify: New Resource → Application → Public/Private Repository, kies deze repo.
- Build Pack: Dockerfile (Coolify detecteert de
Dockerfileautomatisch). - Port:
80(zo serveert nginx in de container). - Build argument / Environment (optioneel maar aanbevolen):
SITE_URL=https://aldinomoda.nl— wordt in de build verwerkt voor canonical-URLs, sitemap en social previews.
- Koppel je domein en laat Coolify het TLS-certificaat regelen.
- Deploy.
De container is een kale nginx die de vooraf gebouwde statische site serveert — licht, snel en zonder runtime-afhankelijkheden.
Lokaal de Docker-build testen:
docker build -t aldino-moda --build-arg SITE_URL=https://aldinomoda.nl . docker run --rm -p 8080:80 aldino-moda # http://localhost:8080
Automatisch herbouwen bij wijzigingen
Omdat de CMS bij opslaan commit naar de repo, wil je dat Coolify dan opnieuw bouwt:
- Zet in Coolify Auto Deploy aan, en
- voeg in Forgejo/Gitea een webhook toe naar de door Coolify gegenereerde deploy-URL (te vinden bij de applicatie onder Webhooks).
Zo verschijnt elke contentwijziging vanzelf op de live site.
Projectstructuur
.
├── public/
│ ├── admin/ # Decap CMS (index.html + config.yml)
│ ├── images/ # logo's + foto's (behouden van de oude site)
│ ├── favicon.svg
│ └── robots.txt
├── src/
│ ├── content/ # bewerkbare content (JSON)
│ │ ├── settings.json
│ │ ├── brands.json
│ │ └── pages/*.json
│ ├── components/ # Header, Footer, Hero, Gallery, …
│ ├── layouts/Base.astro
│ ├── lib/content.ts # data-helpers + navigatie
│ ├── pages/*.astro # routes
│ └── styles/global.css # designsysteem (Tailwind v4 @theme)
├── Dockerfile
├── nginx.conf
└── astro.config.mjs
© 2026 Aldino Moda · Smedenstraat 12, 7411 RC Deventer