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
- Créez un compte sur Convex et un nouveau projet
- Copiez
.env.examplevers.env.localet remplissez les variables :PUBLIC_CONVEX_URL: URL de votre déploiement ConvexCONVEX_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 :