PWA open source, mobile-first, pour aider à réaliser ses objectifs avec un système de crédits, de conséquences et de responsabilité.
- Nuxt 4 — framework full-stack
- Tailwind CSS — design system app + landing
- Pinia — état client transversal
- TanStack Vue Query — cache et données serveur
- Zod — validation
- GSAP + Lenis — animations landing
- PostgreSQL + Drizzle — base de données
- Redis + BullMQ — files et workers
- Stripe — paiements liés aux conséquences (optionnel)
- Railway — hébergement (web + workers + BDD + Redis)
- Authentification email + mot de passe (sessions HttpOnly) et Google OAuth
- 3 types d’objectifs : ponctuel, récurrent, projet à jalons
- Crédits / dette, streak, classement
- Conséquences configurables (crédits, don associatif, Stripe, preuve obligatoire, etc.)
- Validation par déclaration + preuve + modération admin
- Panel admin (users, modération, cagnottes, audit)
- PWA installable
pnpm install
cp .env.example .env
# Configurer DATABASE_URL, REDIS_URL et SESSION_SECRET
pnpm db:migrate
pnpm db:seed # optionnel : données de démo
pnpm dev # app
pnpm worker # échéances (terminal séparé)
pnpm worker:consequences # file des conséquences (si besoin)Voir .env.example. Ne committez jamais de fichier .env réel.
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL |
REDIS_URL |
Redis |
SESSION_SECRET |
Secret des sessions |
ADMIN_EMAIL / ADMIN_PASSWORD |
Compte admin initial |
APP_URL |
URL publique |
GOOGLE_CLIENT_* |
OAuth Google (optionnel) |
STRIPE_* |
Paiements Stripe (optionnel) |
S3_* |
Stockage des preuves (optionnel) |
| Commande | Rôle |
|---|---|
pnpm dev |
Serveur de développement |
pnpm test |
Tests unitaires |
pnpm lint |
Typecheck Nuxt |
pnpm build:web |
Build production |
pnpm worker |
Worker d’expiration / streaks |
pnpm worker:consequences |
Worker d’exécution des conséquences |
- Connecter le repo GitHub à Railway
- Ajouter PostgreSQL et Redis
- Créer les services à partir du repo :
- web :
node .output/server/index.mjs - worker :
npx tsx server/workers/deadlines.ts - worker:consequences (optionnel) :
npx tsx server/workers/consequences.ts
- web :
- Configurer les variables d’environnement
- Exécuter les migrations SQL
- Le seed admin s’exécute au démarrage si
ADMIN_EMAIL+ADMIN_PASSWORDsont définis
Les contributions sont les bienvenues.
Focus est publié sous licence MIT.
Vous êtes libre d’utiliser, modifier, forker et redistribuer le projet, y compris à des fins commerciales, sous réserve d’inclure la notice de copyright et la licence.