Application web moderne pour gérer vos devoirs, révisions et examens avec suivi de progression et statistiques détaillées.
- 🔐 Authentification complète (inscription, connexion, déconnexion)
- 📚 Gestion des matières avec couleurs personnalisées
- ✅ Gestion des tâches (devoirs, révisions, examens, projets)
- 📊 Dashboard interactif avec indicateurs verts/rouges
- 📅 Planning hebdomadaire avec vue calendrier
- 📈 Statistiques détaillées avec graphiques Chart.js
- 🔥 Système de streak pour la motivation
- 📱 Design responsive mobile/tablet/desktop
- Frontend: Next.js 15 (App Router), React, TypeScript, Tailwind CSS
- Backend: Firebase (Authentication, Firestore)
- Graphiques: Chart.js + react-chartjs-2
- Dates: date-fns
- Node.js 18+ et npm
- Un compte Firebase (gratuit)
cd studytracknpm install- Aller sur https://console.firebase.google.com/
- Cliquer sur "Ajouter un projet"
- Suivre les étapes (nom du projet, analytics optionnel)
Authentication:
- Dans la console Firebase, aller dans "Authentication"
- Cliquer sur "Commencer"
- Activer "Email/Password" comme méthode de connexion
Firestore Database:
- Dans la console Firebase, aller dans "Firestore Database"
- Cliquer sur "Créer une base de données"
- Choisir "Commencer en mode test" (temporaire)
- Sélectionner une région proche de vous
- Dans la console Firebase, aller dans "Paramètres du projet" (icône engrenage)
- Dans l'onglet "Général", descendre jusqu'à "Vos applications"
- Cliquer sur l'icône
</>pour créer une application web - Donner un nom à votre app (ex: "StudyTrack")
- Copier les valeurs de configuration affichées
Créer un fichier .env.local à la racine du projet :
cp .env.example .env.localÉditer .env.local et remplacer par vos vraies valeurs :
NEXT_PUBLIC_FIREBASE_API_KEY=votre_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=votre_projet.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=votre_projet_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=votre_projet.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=votre_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=votre_app_id- Dans Firestore Database, aller dans l'onglet "Règles"
- Copier le contenu du fichier
firestore.rules - Le coller dans l'éditeur
- Cliquer sur "Publier"
Mode développement :
npm run devL'application sera accessible sur http://localhost:3000
npm run build
npm startnpm install -g firebase-toolsfirebase loginfirebase init hostingRépondre aux questions :
- What do you want to use as your public directory? →
out - Configure as a single-page app? →
Yes - Set up automatic builds? →
No
Ajouter la configuration pour l'export statique :
const nextConfig: NextConfig = {
reactStrictMode: true,
output: 'export',
images: {
unoptimized: true,
},
};npm run build
firebase deployVotre app sera en ligne sur https://votre-projet.web.app
studytrack/
├── app/ # Pages Next.js (App Router)
│ ├── page.tsx # Page d'accueil
│ ├── login/ # Page de connexion
│ ├── signup/ # Page d'inscription
│ ├── dashboard/ # Dashboard principal
│ ├── planning/ # Vue planning
│ ├── stats/ # Page statistiques
│ ├── layout.tsx # Layout principal
│ └── globals.css # Styles globaux
├── components/ # Composants React réutilisables
│ ├── Navbar.tsx # Barre de navigation
│ ├── ProtectedRoute.tsx # Protection des routes
│ ├── StatCard.tsx # Carte de statistique
│ └── TaskCard.tsx # Carte de tâche
├── hooks/ # Hooks React personnalisés
│ └── useAuth.ts # Hook d'authentification
├── lib/ # Logique métier
│ ├── firebase.ts # Configuration Firebase
│ └── firestore/ # Fonctions Firestore
│ ├── users.ts # Gestion des utilisateurs
│ ├── subjects.ts # Gestion des matières
│ └── tasks.ts # Gestion des tâches
├── types/ # Types TypeScript
│ └── index.ts # Interfaces et types
├── utils/ # Utilitaires
│ └── streak.ts # Calcul du streak
├── firestore.rules # Règles de sécurité Firestore
├── .env.example # Exemple de variables d'environnement
└── package.json # Dépendances
{
name: string,
email: string,
createdAt: Timestamp,
streak: number
}{
userId: string,
name: string,
color: string, // Code hex (ex: "#3b82f6")
createdAt: Timestamp
}{
userId: string,
subjectId: string,
title: string,
description: string,
type: "Devoir" | "Révision" | "Examen" | "Projet",
dueDate: Timestamp,
plannedDuration: number, // en minutes
completed: boolean,
completedAt?: Timestamp,
createdAt: Timestamp
}Éditer tailwind.config.ts :
colors: {
primary: "#3b82f6", // Bleu
success: "#10b981", // Vert
warning: "#f59e0b", // Orange
danger: "#ef4444", // Rouge
}Éditer types/index.ts :
export type TaskType = "Devoir" | "Révision" | "Examen" | "Projet" | "NouveauType";- Vérifier que le fichier
.env.localexiste et contient les bonnes clés - Redémarrer le serveur de développement
- Vérifier que les règles Firestore sont bien configurées
- Vérifier que l'utilisateur est bien connecté
rm -rf node_modules package-lock.json
npm installCe projet est open source et disponible sous licence MIT.
Développé avec fun par votre B.I.T
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Bon développement ! 🚀