Compare commits
No commits in common. "ddcc071554900c248a9cac39cfa86598ad7253f9" and "fb5f3c2db348752811ee3c820e62f325faff0eb1" have entirely different histories.
ddcc071554
...
fb5f3c2db3
2 changed files with 18 additions and 23 deletions
39
CLAUDE.md
39
CLAUDE.md
|
|
@ -6,16 +6,16 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||||
|
|
||||||
Sales page for the "Claude Code Workshop" - a hands-on workshop for Dutch entrepreneurs (ZZP/MKB). Built as a static React SPA. All content is in Dutch (nl).
|
Sales page for the "Claude Code Workshop" - a hands-on workshop for Dutch entrepreneurs (ZZP/MKB). Built as a static React SPA. All content is in Dutch (nl).
|
||||||
|
|
||||||
**Workshop details:** zie `src/config/workshop.js` (datum, tijd, locatie, prijs, beschikbare plekken). Niet hardcoden in deze CLAUDE.md - die raakt anders out-of-sync.
|
**Workshop details:** Friday April 3, 2026 | 9:00-14:00 | Utrecht | €399 excl. BTW | Max 8 participants
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run dev # Vite dev server on port 5173
|
npm run dev # Vite dev server on port 5173
|
||||||
npm run build # Production build to dist/
|
npm run build # Production build to dist/
|
||||||
npm run preview # Preview production build (port 4173)
|
npm run preview # Preview production build
|
||||||
npm run lint # ESLint
|
npm run lint # ESLint
|
||||||
./preflight.sh # Pre-push checks (lint + build + asset path validation)
|
./preflight.sh # Pre-deploy checks (lint + build + asset path validation)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
@ -58,23 +58,17 @@ Reusable component classes defined in `src/index.css` using `@layer components`:
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|
||||||
**Auto-deploy via Coolify**: elke `git push` naar `main` triggert Coolify om de Dockerfile te bouwen en de nieuwe nginx-container live te zetten. Geen handmatig deploy-script meer.
|
```bash
|
||||||
|
./deploy.sh # Preflight + build + deploy naar productie (geen passphrase nodig)
|
||||||
|
```
|
||||||
|
|
||||||
Workflow:
|
Deployment flow: `./preflight.sh` → `npm run build` → rsync naar server → `docker cp` naar WordPress container → chown fix
|
||||||
1. `./preflight.sh` lokaal draaien (lint + build + asset path check)
|
|
||||||
2. `git push` (naar `origin/main` → Forgejo)
|
|
||||||
3. Coolify pulled, bouwt `Dockerfile` (multi-stage node→nginx), deployt
|
|
||||||
4. Verifieer op https://workshopclaudecode.nl/
|
|
||||||
|
|
||||||
- **Live URL:** https://workshopclaudecode.nl
|
- **Server:** Hetzner (37.27.183.46) via SSH alias `coolify-deploy`
|
||||||
- **Repo:** `git@git.dutchstack.nl:frankmeeuwsen/workshopclaudecode.git` (SSH push) / `https://forgejo.dutchstack.nl/frankmeeuwsen/workshopclaudecode.git` (HTTPS clone, gebruikt door Coolify) - zie memory `forgejo_urls.md`
|
- **Container:** `wordpress-d0wko4gskokosssogcw8040g`
|
||||||
- **Hosting:** Coolify static-app container op Hetzner (37.27.183.46) via SSH alias `coolify-deploy`
|
- **Pad in container:** `/var/www/html/workshopclaudecode`
|
||||||
- **SSL:** Let's Encrypt automatisch via Traefik (Coolify regelt dit)
|
- **Live URL:** https://frankmeeuwsen.com/workshopclaudecode/
|
||||||
- **Build artefacten in repo:** `Dockerfile` + `nginx.conf` (SPA fallback via try_files) + `.dockerignore`
|
- **SSH key:** `~/.ssh/id_rsa_no_pass` (passphrase-loos, specifiek voor automated deploys)
|
||||||
|
|
||||||
### Legacy redirect
|
|
||||||
|
|
||||||
De oude URL `https://frankmeeuwsen.com/workshopclaudecode/*` 301-redirect naar `https://workshopclaudecode.nl/*` met pad-behoud. Dit zit in een `.htaccess` in de WordPress container (`wordpress-d0wko4gskokosssogcw8040g`, pad `/var/www/html/workshopclaudecode/.htaccess`). Backup van originele htaccess staat als `.htaccess.bak` naast.
|
|
||||||
|
|
||||||
## Actief project: Configuratie centraliseren
|
## Actief project: Configuratie centraliseren
|
||||||
|
|
||||||
|
|
@ -120,9 +114,10 @@ Zie `PRD.md` voor het volledige bouwplan. Korte samenvatting:
|
||||||
|
|
||||||
Vuistregel: als het kan breken, check het. Als het alleen tekst is, niet.
|
Vuistregel: als het kan breken, check het. Als het alleen tekst is, niet.
|
||||||
|
|
||||||
### Static Assets
|
### Static Assets (BELANGRIJK)
|
||||||
- Statische bestanden (afbeeldingen, etc.) staan in `public/`
|
- Statische bestanden (afbeeldingen, etc.) staan in `public/`
|
||||||
- Vite `base` staat op `/` (productie draait op het root domein workshopclaudecode.nl)
|
- **Altijd** `${import.meta.env.BASE_URL}` als prefix gebruiken bij verwijzingen vanuit code
|
||||||
- **Toch** `${import.meta.env.BASE_URL}` als prefix blijven gebruiken — toekomstbestendig en `./preflight.sh` controleert hierop
|
- Reden: productie draait op `/workshopclaudecode/`, niet op `/`
|
||||||
- Voorbeeld: `` src={`${import.meta.env.BASE_URL}foto.jpg`} ``
|
- Voorbeeld: `` src={`${import.meta.env.BASE_URL}foto.jpg`} ``
|
||||||
- Vermijd: `src="/foto.jpg"` (werkt nu wel maar breekt zodra base ooit weer een sub-pad wordt)
|
- NOOIT: `src="/foto.jpg"` (werkt lokaal maar breekt op productie)
|
||||||
|
- `./preflight.sh` detecteert hardcoded paden automatisch
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
export const WORKSHOP_CONFIG = {
|
export const WORKSHOP_CONFIG = {
|
||||||
// Beschikbaarheid
|
// Beschikbaarheid
|
||||||
totalSpots: 8,
|
totalSpots: 8,
|
||||||
availableSpots: 5, // Aantal plekken dat nog beschikbaar is (pas bij verkoop)
|
availableSpots: 8,
|
||||||
isSoldOut: false,
|
isSoldOut: false,
|
||||||
|
|
||||||
// Datum - alle varianten beschrijven dezelfde dag, altijd samen bijwerken
|
// Datum - alle varianten beschrijven dezelfde dag, altijd samen bijwerken
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue