# rikx-beheer Beheerportaal voor de Rikx-methodiek. Beheert de sociaal ondernemers (accounts in de ZRM-platformdatabase) en de projecten van Module 1 (Projects flow). ## Pagina's - `/tenants` — sociaal ondernemers aanmaken, bewerken, verwijderen, auto-inlog (leest/schrijft de platformdatabase via `lib/platform-db.ts`) - `/projecten` — projecten als pipeline (standaard, kolom per status) of tabel (`?weergave=tabel`), met filter op status, Rikx Ronde en zoeken; `/projecten/nieuw` — project toevoegen (naam + status) - `/rondes` — Rikx rondes beheren (label, Rikx waarde, Rikx prijs); een project hoort optioneel bij één ronde (`projects.ronde_id`) - `/projecten/[id]` — projectpagina in stappen: 1 Project plan (velden en keuzelijsten gedefinieerd in `lib/projectPlan.ts`), 2 Rikx calculatie (alleen zichtbaar als de schuif aan staat, `rikx_calculatie_aan`). Uitkomsten worden live berekend met `lib/rikxCalculatie.ts` - Gedeelde kop met navigatie: `app/AppHeader.tsx` (oranje Rikx-balk, menu per module; items zonder pagina tonen "binnenkort") - Huisstijlkleuren als Tailwind-tokens in `app/globals.css`: `rikx-orange`, `rikx-purple` (actief menu-item), `rikx-maroon` (primaire knop). Statuskleuren in `lib/projectStatus.ts` - Conventie: server actions in `actions.ts` per map, geen API-routes (behalve `app/api/auto-login`) ## Stack - Next.js 16 + TypeScript + Tailwind CSS - SQLite via `node:sqlite` (ingebouwd in Node 22, geen extra package) - HMAC-signed sessie-cookie auth (geen externe auth-provider) - Nodemailer voor email-notificaties ## Lokaal draaien ```bash npm install cp .env.example .env.local # Vul SESSION_SECRET in (.env.local) — minimaal 32 tekens willekeurig mkdir -p data npm run dev # http://localhost:3000 # Lokaal de platformdatabase gebruiken: RIKX_PLATFORM_DB_PATH=./data/platform.db ``` ## Admin aanmaken ```bash npm run create-admin maarten@rikx.nl wachtwoord "Maarten" ``` ## Database - Locatie lokaal: `./data/app.db` - Locatie productie: `/data/app.db` (absoluut pad — Next.js standalone doet process.chdir bij start) - Schema: `lib/db.ts` — migraties draaien automatisch bij eerste verbinding - Tabellen: `users`, `projects` (`name`, `status`; statussen in `lib/projectStatus.ts`, standaard `aanvraag`; plus de velden uit de rekenmethode als kolommen; overige project plan-velden als JSON in `project_plan`), `project_expert_scores` (3 experts × 3 criteria, voorlopig handmatig), `rikx_rondes` (Rikx waarde en prijs per ronde; de calculatie haalt ze uit de ronde van het project, prijs standaard waarde / 10) - Rekenmethode: `_doc/Rikx rekenmethode uitleg.xlsx`, tabblad Uitleg. Afwijkingen van de sheet: N-score = ((werk×5)+skills)/6 (sheet mist haakjes), Bonus/Malus `-` = 0,9 en `--` = 0,8 (sheet heeft typefouten) - De oude offerte-tabellen (`clients`, `projects` met `client_id`, `quotes`, `quote_items`) worden bij de migratie verwijderd als ze leeg zijn; met gegevens worden ze hernoemd naar `legacy_*` - Tweede database (alleen-platform): `RIKX_PLATFORM_DB_PATH` (standaard `/rikx-platform-data/app.db`) met `accounts` en `users` van het ZRM-platform ## Infrastructuur (mx-platform.com) - **Platform:** Coolify v4 op mx-platform.com (37.97.203.131) - **Git repo:** https://git.mx-platform.com/admin/rikx-beheer - **Dockerfile:** `/Dockerfile` (Node 22 Alpine, Next.js standalone) - **Port:** 3000 - **URL:** https://beheer.rikxplatform.nl ## Environment variables | Variabele | Standaard | Uitleg | |-----------|-----------|--------| | `SESSION_SECRET` | — | HMAC-secret voor sessie-cookies — per omgeving uniek genereren | | `DB_PATH` | `./data/app.db` | **In productie: `/data/app.db`** (absoluut pad) | | `RIKX_PLATFORM_DB_PATH` | `/rikx-platform-data/app.db` | Database van het ZRM-platform (sociaal ondernemers) | | `NODE_ENV` | `development` | In productie: `production` | | `SMTP_HOST` | — | SMTP server voor email-notificaties | | `SMTP_PORT` | `587` | SMTP poort | | `SMTP_USER` | — | SMTP gebruikersnaam | | `SMTP_PASS` | — | SMTP wachtwoord | | `SMTP_FROM` | `noreply@rikx.nl` | Afzenderadres | ## Auto-deploy Gitea webhook → Coolify. Na elke push naar `main` automatisch live. ## Collega's Wijzigingen alleen via Git. Push naar `main` → automatisch live.