Une application moderne de pokes à la Meta avec des fonctionnalités temps réel, construite avec une stack TypeScript de pointe.
- 🔔 Notifications Push - Recevez des notifications en temps réel
- 📡 Server-Sent Events - Mises à jour instantanées sans rechargement
- 👥 Système de Poke - Interagissez avec d'autres utilisateurs
- 🏆 Classement - Suivez votre position dans le classement
- 🔍 Recherche d'utilisateurs - Trouvez facilement d'autres personnes
- 🌙 Thème sombre/clair - Interface adaptée à vos préférences
- 📱 PWA - Installation sur mobile et desktop
- 🔐 Authentification sécurisée - Connexion email/mot de passe
- React 19 - Bibliothèque UI moderne
- TypeScript - Typage statique pour la sécurité du code
- TanStack Router - Routage basé sur les fichiers avec sécurité des types
- TailwindCSS - Framework CSS utilitaire-first
- shadcn/ui - Composants UI réutilisables et accessibles
- Zustand - Gestion d'état légère et performante
- Hono - Framework serveur léger et performant
- tRPC - APIs end-to-end avec sécurité des types
- Drizzle ORM - ORM TypeScript-first
- PostgreSQL - Base de données relationnelle robuste
- Redis - Cache et gestion des sessions
- Better Auth - Authentification moderne et sécurisée
- Bun - Runtime JavaScript ultra-rapide
- Turborepo - Monorepo optimisé pour la performance
- Docker - Conteneurisation et déploiement
- Cloner le projet
git clone <votre-repo>
cd pok7
- Installer les dépendances
bun install
- Configuration de l'environnement
cd apps/server
cp .env.example .env
# Éditer .env avec vos variables d'environnement
- Démarrer les services
# Démarrer PostgreSQL et Redis
docker-compose up -d
# Ou utiliser les services locaux si configurés
- Initialiser la base de données
bun db:push
- Lancer l'application
# Démarrer le serveur et le frontend
bun dev
# Ou démarrer séparément
bun dev:server # API sur http://localhost:3000
bun dev:web # Frontend sur http://localhost:3001
pok7/
├── apps/
│ ├── web/ # Application frontend React
│ │ ├── src/
│ │ │ ├── components/ # Composants réutilisables
│ │ │ ├── routes/ # Pages et routage
│ │ │ ├── stores/ # Gestion d'état Zustand
│ │ │ └── utils/ # Utilitaires et helpers
│ │ └── public/ # Assets statiques
│ └── server/ # API backend Hono + tRPC
│ ├── src/
│ │ ├── procedures/ # Procédures tRPC
│ │ ├── routers/ # Routeurs API
│ │ ├── db/ # Schémas et configuration DB
│ │ └── lib/ # Utilitaires serveur
│ └── drizzle.config.ts
├── packages/ # Packages partagés (si applicable)
├── compose.yml # Configuration Docker
└── turbo.json # Configuration Turborepo
- Users - Gestion des utilisateurs et authentification
- Pokes - Système de poke entre utilisateurs
- WebPush - Notifications push
- Leaderboard - Classements et statistiques
# Appliquer les changements de schéma
bun db:push
# Ouvrir l'interface de gestion de la DB
bun db:studio
# Générer des migrations
bun db:generate
# Appliquer les migrations
bun db:migrate
Commande | Description |
---|---|
bun dev |
Démarre tous les services en mode développement |
bun build |
Compile tous les projets |
bun dev:web |
Démarre uniquement le frontend |
bun dev:server |
Démarre uniquement l'API |
bun check-types |
Vérifie les types TypeScript |
bun db:push |
Applique les changements de schéma |
bun db:studio |
Ouvre l'interface de gestion de la DB |
# Base de données
DATABASE_URL="postgresql://user:password@localhost:5432/pok7"
# Redis
REDIS_URL="redis://localhost:6379"
# Authentification
AUTH_SECRET="your-secret-key"
AUTH_URL="http://localhost:3000"
# Notifications Push
VAPID_PUBLIC_KEY="your-vapid-public-key"
VAPID_PRIVATE_KEY="your-vapid-private-key"
# Build de production
bun build
# Démarrage en production
bun start
# Build de l'image
docker build -f apps/server/Containerfile -t pok7-server .
# Exécution
docker run -p 3000:3000 pok7-server
- Fork le projet
- Créer une branche feature (
git checkout -b feature/AmazingFeature
) - Commit vos changements (
git commit -m 'Add some AmazingFeature'
) - Push vers la branche (
git push origin feature/AmazingFeature
) - Ouvrir une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE
pour plus de détails.
Si vous rencontrez des problèmes ou avez des questions :
- Ouvrez une issue
- Consultez la documentation
Développé avec ❤️ et Better-T-Stack