source: Klonkt/README.md@ 7bc636b

main
Last change on this file since 7bc636b was 7bc636b, checked in by Robin <robin@…>, 4 months ago

Initial commit — PrutFolio v1 source (pulled from Hetzner /srv/prutfolio)

  • Property mode set to 100644
File size: 3.3 KB
Line 
1# PrutFolio v1
2
3Persoonlijk multi-site platform met editorial-feel content + sociale community.
4Forked van **PrutCMS v9** (PHP, file-based) naar **Node + SQLite + htmx**.
5
6> **Naam-uitleg.** "PrutCMS v9" is en blijft het file-based PHP-product. PrutFolio
7> v1 is een nieuw product met andere DNA: het is geen *publishing tool* maar een
8> *persoonlijk canvas* — content, profiel, sociale interactie en realtime in één.
9
10## Filosofie
11
12- **Editorial feel.** Magazine-typografie (Fraunces + Literata + Plus Jakarta), royale spacing, 8 paletten waaronder Sage / Paper / Ocean / Forest / Stone / Midnight / Sunset / Cream. Light + dark per palette.
13- **App-feel waar het telt.** Geen full page reloads — htmx swaps + (binnenkort) View Transitions. Voelt als app, niet als website.
14- **Server-rendered.** Geen build step, geen SPA-tax. EJS + htmx + minimale Alpine.
15- **Realtime ingebouwd.** WebSocket server zit in `src/websocket/`. SSE als alternatief beschikbaar.
16- **Privacy-first.** Self-hosted fonts, geen third-party requests, geen tracking.
17
18## Roadmap
19
20| Fase | Scope | Status |
21|------|-------|--------|
22| **1.0 — v9-feel** | Homepage, profile-header, feed, post-detail visueel matchen met v9 | 🟡 in progress |
23| **1.1 — auth + posts** | Login / register / post CRUD compleet | ✅ klaar |
24| **1.2 — sociale laag** | Comments, Prutter (DMs zonder E2EE), notifications | ⚪ na 1.0 |
25| **1.3 — app-feel** | View Transitions, optimistic UI, swipe-actions, haptics | ⚪ |
26| **1.4 — bottom-tab nav** | Native-app-stijl navigatie op mobiel, sidebar op desktop | ⚪ |
27| **2.0 — E2EE DMs** | MLS protocol via `@openmls/openmls`, single-device first | ⚪ apart project |
28
29## Quick start
30
31```bash
32npm install
33cp .env.example .env
34# zet SESSION_SECRET op iets random (>=32 chars in production)
35npm run migrate
36npm run dev
37```
38
39Open http://localhost:3000
40
41## Stack
42
43- **Runtime:** Node 20+
44- **Web:** Express + Helmet + express-session
45- **DB:** better-sqlite3 (WAL mode)
46- **Templates:** EJS (server-rendered)
47- **Frontend interactie:** htmx 1.9 (vendored)
48- **Realtime:** ws (WebSocket)
49- **Fonts:** self-hosted variable woff2 (Fraunces / Literata / Plus Jakarta Sans)
50
51## Project structure
52
53```
54src/
55├── server.js # Express bootstrap, routes mounting, WS server
56├── config/ # database, env loading
57├── db/migrations/ # SQLite schema (001-init.sql)
58├── middleware/ # auth, render (htmx-aware), site, rate-limit
59├── routes/ # per-resource Express routers
60├── services/ # domain logic (Prutter, Audio, Theme, Permissions, ...)
61├── views/
62│ ├── shell.ejs # outer document (head, nav, footer)
63│ ├── partials/ # topnav, profile-header, post-card, post-tile
64│ └── pages/ # home, post, account, admin, ...
65├── assets/
66│ ├── css/style.css # v9 stylesheet — palette tokens, components
67│ ├── fonts/ # variable woff2
68│ └── js/ # htmx, audio-player
69└── websocket/ # WS server for realtime (notifications, prutter, presence)
70```
71
72## Migratie van PrutCMS v9
73
74Importer is gepland voor v1.1. Pad: `posts/*.md` + `users.json` + `sites/*/config.json` → SQLite.
75
76## License
77
78Persoonlijk project. Niet bedoeld voor publieke distributie tot verder bericht.
79
80## Deployed via git workflow on 2026-04-30
81
Note: See TracBrowser for help on using the repository browser.