source: Klonkt/README.md@ 8453812

main
Last change on this file since 8453812 was 8453812, checked in by roboburr <roboburr@…>, 3 months ago

Branding: 100% PrutCMS/PrutFolio-free — Klonkt as original product

All fork/lineage references (README, package description, server/comments,
PrutFolio-as-noun -> Klonkt-site) removed. Plus a small, mysterious wink
at a certain Bart in CircleFederation.js. Internal package name (prutfolio)
+ PWA id + server paths left untouched (stability).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@…>

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