Suivez vos habitudes quotidiennes, partagez vos progrÚs avec vos amis et restez motivé.
HabitTracker est une application web progressive (PWA) de suivi d'habitudes qui vous permet de créer des routines personnalisées, suivre vos progrÚs et vous motiver entre amis.
- Création de catégories personnalisées (Matin, Journée, Soir, Hebdo, Addiction)
- Habitudes quotidiennes ou hebdomadaires
- Interface intuitive style tableur pour cocher vos habitudes
- Navigation par semaine avec historique complet
- Pourcentage de complétion par jour, semaine, mois, année
- Statistiques par habitude et par catégorie
- Période personnalisée pour des analyses spécifiques
- Visualisation des progrĂšs avec barres de progression
- Configurez un nombre de jokers par période (semaine/mois/année)
- Utilisez un joker pour les jours oĂč vous ne pouvez vraiment pas (maladie, voyage...)
- Les jokers excluent le jour des statistiques (363/363 au lieu de 365)
- Clic droit (PC) ou mode joker (mobile) pour activer
- Recherche d'utilisateurs par pseudo
- Envoi et réception de demandes d'amis
- Notifications de demandes en attente
- Consultation du tracker de vos amis (lecture seule)
- Installation sur mobile et desktop
- Fonctionne hors ligne
- Notifications push (Ă venir)
- Interface responsive
| Technologie | Version | Usage |
|---|---|---|
| Next.js | 14.x | Framework React avec App Router |
| React | 19.x | BibliothĂšque UI |
| TypeScript | 5.x | Typage statique |
| Prisma | 6.x | ORM pour base de données |
| SQLite/PostgreSQL/MySQL | - | Base de données (au choix) |
| TailwindCSS | 3.x | Styles utilitaires |
| bcryptjs | - | Hashage sécurisé des mots de passe |
- Node.js 18+
- npm ou pnpm
- Cloner le repository
git clone https://github.com/votre-username/habittracker.git
cd habittracker- Installer les dépendances
npm install- Configurer l'environnement
# Copier le fichier d'exemple
cp env.example .env- Configurer la base de données
Ăditez le fichier .env selon votre choix de base de donnĂ©es :
| Base de données | Provider Prisma | Exemple DATABASE_URL |
|---|---|---|
| SQLite (défaut) | sqlite |
file:./dev.db |
| PostgreSQL | postgresql |
postgresql://user:pass@localhost:5432/habittracker |
| MySQL | mysql |
mysql://user:pass@localhost:3306/habittracker |
| MariaDB | mysql |
mysql://user:pass@localhost:3306/habittracker |
â ïž Important : Si vous utilisez autre chose que SQLite, modifiez aussi leproviderdansprisma/schema.prisma
Exemple pour PostgreSQL :
// prisma/schema.prisma
datasource db {
provider = "postgresql" // Changer "sqlite" en "postgresql"
url = env("DATABASE_URL")
}- Initialiser la base de données
npm run db:push- Lancer le serveur de développement
npm run dev- Ouvrir l'application
http://localhost:3000
| Service | Base de données | Plan gratuit |
|---|---|---|
| Supabase | PostgreSQL | â 500 MB |
| PlanetScale | MySQL | â 5 GB |
| Railway | PostgreSQL/MySQL | â $5 crĂ©dit |
| Neon | PostgreSQL | â 512 MB |
| Script | Description |
|---|---|
npm run dev |
Lance le serveur de développement |
npm run build |
Compile l'application pour la production |
npm run start |
Lance le serveur de production |
npm run lint |
Vérifie le code avec ESLint |
npm run db:push |
Synchronise le schéma Prisma avec la base |
npm run db:studio |
Ouvre Prisma Studio (interface BDD) |
habittracker/
âââ prisma/
â âââ schema.prisma # SchĂ©ma de la base de donnĂ©es
âââ env.example # Variables d'environnement (template)
âââ public/
â âââ icons/ # IcĂŽnes PWA
â âââ manifest.json # Manifest PWA
â âââ sw.js # Service Worker
âââ src/
â âââ app/
â â âââ api/ # Routes API
â â â âââ auth/ # Authentification
â â â âââ categories/
â â â âââ friends/
â â â âââ habits/
â â â âââ jokers/
â â â âââ user/
â â âââ components/ # Composants React
â â âââ context/ # Contextes (Auth)
â â âââ friends/ # Page amis
â â âââ login/ # Page connexion
â â âââ register/ # Page inscription
â â âââ settings/ # Page paramĂštres
â â âââ tracker/ # Page tracker ami
â â âââ globals.css # Styles globaux
â â âââ layout.tsx # Layout principal
â â âââ page.tsx # Dashboard principal
â âââ lib/
â âââ prisma.ts # Client Prisma
âââ package.json
- Mots de passe hashés avec bcrypt (10 rounds)
- Validation cÎté client et serveur
- Minimum 6 caractĂšres pour les mots de passe
- Protection des routes API
- Connectez votre repository GitHub Ă Vercel
- Configurez les variables d'environnement
- Déployez !
L'application peut ĂȘtre dĂ©ployĂ©e sur n'importe quelle plateforme supportant Node.js :
- Railway
- Render
- Fly.io
- VPS avec PM2
- Notifications push
- Mode sombre/clair
- Export des données (CSV/JSON)
- Graphiques avancés
- Rappels personnalisés
- API publique
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
MIT License - voir le fichier LICENSE pour plus de détails.
Fait avec â€ïž pour vous aider Ă atteindre vos objectifs.