main f6d8405

README.md RawHistoryFolder

Bienvenue

Ce projet sandbox, à but non lucratif, recrée l'ambiance des salons de discussion de l'époque AOL/AIM ; il est accessible à l'adresse : https://pdraim.org.

Technologies utilisées

  • SvelteKit (version 5)
  • Node.js
  • TypeScript
  • Convex (base de données temps réel)
  • XP.css
  • Tailwind CSS

Prérequis

  • Node.js (>=22.13.0)
  • npm ou pnpm pour la gestion des packages

Installation

Clonez le dépôt et installez les dépendances :

npm install
# ou
pnpm install

Lancement du projet

Lancez le projet en mode développement :

npm run dev
# ou
pnpm dev

Le site sera accessible via http://localhost:5173 par défaut.

Contribution

Toute contribution visant à améliorer le réalisme et la qualité du projet est la bienvenue ! Pour contribuer :

  • Forkez ce dépôt
  • Créez une branche pour vos modifications
  • Envoyez une pull request en décrivant clairement vos changements

Base de données

Le projet utilise Convex comme base de données temps réel. Convex gère automatiquement les mises à jour en temps réel des messages et de la liste des utilisateurs.

Configuration locale

  1. Créez un compte sur Convex et un nouveau projet
  2. Copiez .env.example vers .env.local et remplissez les variables :
    • PUBLIC_CONVEX_URL : URL de votre déploiement Convex
    • CONVEX_API_SECRET : Clé secrète pour les appels serveur

Lancer Convex en développement

Dans un terminal séparé, lancez le serveur Convex :

npx convex dev

Cela synchronise automatiquement vos fonctions backend avec Convex et affiche les logs en temps réel.

Dashboard Convex

Vous pouvez visualiser et gérer vos données via le dashboard Convex :

npx convex dashboard

Déploiement

Le site tourne dans une image conteneur Node (adapter-node), écoutant sur le port 3000.

docker build -t pdraim .
docker run --rm -p 3000:3000 --env-file .env.local -e ORIGIN=http://localhost:3000 pdraim

Toutes les variables sont lues au runtime ($env/dynamic/*) : la même image sert en local et en production.

Variable Rôle
PUBLIC_CONVEX_URL, CONVEX_API_SECRET Accès à Convex
PUBLIC_TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY Cloudflare Turnstile
ORIGIN URL publique (ex. https://pdraim.org)
ADDRESS_HEADER (ex. x-real-ip) IP client derrière les reverse proxies
COOKIE_DOMAIN (optionnel) Cookie partagé entre sous-domaines

Documentation et Ressources

Si vous n'avez jamais utilisé Svelte/Kit ou Convex, référez-vous aux documentations officielles :

source
1# Bienvenue
2
3Ce projet _sandbox_, à but non lucratif, recrée l'ambiance des salons de discussion de l'époque AOL/AIM ; il est accessible à l'adresse : https://pdraim.org.
4
5## Technologies utilisées
6
7- SvelteKit (version 5)
8- Node.js
9- TypeScript
10- Convex (base de données temps réel)
11- XP.css
12- Tailwind CSS
13
14## Prérequis
15
16- Node.js (>=22.13.0)
17- npm ou pnpm pour la gestion des packages
18
19## Installation
20
21Clonez le dépôt et installez les dépendances :
22
23```bash
24npm install
25# ou
26pnpm install
27```
28
29## Lancement du projet
30
31Lancez le projet en mode développement :
32
33```bash
34npm run dev
35# ou
36pnpm dev
37```
38
39Le site sera accessible via http://localhost:5173 par défaut.
40
41## Contribution
42
43Toute contribution visant à améliorer le réalisme et la qualité du projet est la bienvenue !
44Pour contribuer :
45
46- Forkez ce dépôt
47- Créez une branche pour vos modifications
48- Envoyez une pull request en décrivant clairement vos changements
49
50## Base de données
51
52Le projet utilise [Convex](https://convex.dev/) comme base de données temps réel. Convex gère automatiquement les mises à jour en temps réel des messages et de la liste des utilisateurs.
53
54### Configuration locale
55
561. Créez un compte sur [Convex](https://convex.dev/) et un nouveau projet
572. Copiez `.env.example` vers `.env.local` et remplissez les variables :
58   - `PUBLIC_CONVEX_URL` : URL de votre déploiement Convex
59   - `CONVEX_API_SECRET` : Clé secrète pour les appels serveur
60
61### Lancer Convex en développement
62
63Dans un terminal séparé, lancez le serveur Convex :
64
65```bash
66npx convex dev
67```
68
69Cela synchronise automatiquement vos fonctions backend avec Convex et affiche les logs en temps réel.
70
71### Dashboard Convex
72
73Vous pouvez visualiser et gérer vos données via le dashboard Convex :
74
75```bash
76npx convex dashboard
77```
78
79## Déploiement
80
81Le site tourne dans une image conteneur Node ([`adapter-node`](https://svelte.dev/docs/kit/adapter-node)), écoutant sur le port `3000`.
82
83```bash
84docker build -t pdraim .
85docker run --rm -p 3000:3000 --env-file .env.local -e ORIGIN=http://localhost:3000 pdraim
86```
87
88Toutes les variables sont lues au runtime (`$env/dynamic/*`) : la même image sert en local et en production.
89
90| Variable                                            | Rôle                                    |
91| --------------------------------------------------- | --------------------------------------- |
92| `PUBLIC_CONVEX_URL`, `CONVEX_API_SECRET`            | Accès à Convex                          |
93| `PUBLIC_TURNSTILE_SITE_KEY`, `TURNSTILE_SECRET_KEY` | Cloudflare Turnstile                    |
94| `ORIGIN`                                            | URL publique (ex. `https://pdraim.org`) |
95| `ADDRESS_HEADER` (ex. `x-real-ip`)                  | IP client derrière les reverse proxies  |
96| `COOKIE_DOMAIN` (optionnel)                         | Cookie partagé entre sous-domaines      |
97
98## Documentation et Ressources
99
100Si vous n'avez jamais utilisé Svelte/Kit ou Convex, référez-vous aux documentations officielles :
101
102- [Documentation de Svelte](https://svelte.dev/docs/)
103- [Documentation de SvelteKit](https://svelte.dev/docs/kit/@sveltejs-kit)
104- [Documentation de Convex](https://docs.convex.dev/)
105- [Convex + Svelte](https://docs.convex.dev/client/svelte)

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 3

Tags 8

↑↓ moveenter openesc close