mirror of
https://github.com/BreizhHardware/Site-comptage-heure.git
synced 2026-01-18 16:17:28 +01:00
6218e2bf4e7e7657c8df7c00382acdb3567e2d37
Plateforme de Comptage d'Heures
Une application web moderne pour la gestion des heures travaillées dans un club scolaire ou une organisation similaire. Permet aux membres de saisir leurs heures, aux administrateurs de valider les demandes, et de gérer les utilisateurs et les paramètres du club.
Fonctionnalités
- Authentification sécurisée : Connexion avec NextAuth.js
- Gestion des rôles : Membres, Administrateurs, Super Administrateurs
- Saisie d'heures : Interface intuitive pour ajouter des heures travaillées
- Validation des heures : Système d'approbation par les administrateurs
- Gestion des utilisateurs : Création, suppression et gestion des comptes
- Paramètres du club : Configuration du nom et du logo
- Export de données : Export CSV et Excel des heures validées
- Thème sombre/clair : Support automatique du thème selon les préférences système
- Design responsive : Optimisé pour mobile et desktop
- Notifications : Toasts pour les actions utilisateur
Technologies utilisées
- Framework : Next.js 15 (App Router)
- Langage : TypeScript
- Base de données : SQLite avec Prisma ORM
- Authentification : NextAuth.js
- UI : Tailwind CSS + shadcn/ui + Radix UI
- Gestionnaire de paquets : pnpm
- Déploiement : Compatible Docker
Prérequis
- Node.js 18+
- pnpm
Installation
-
Cloner le repository
git clone https://github.com/breizhhardware/site-comptage-heure.git cd site-comptage-heure -
Installer les dépendances
pnpm install -
Configuration de la base de données
# Appliquer le schéma Prisma pnpx prisma db push # (Optionnel) Générer le client Prisma pnpx prisma generate -
Variables d'environnement
Créer un fichier
.env.localà la racine :NEXTAUTH_SECRET=votre-secret-très-long-et-sécurisé NEXTAUTH_URL=http://localhost:3000 -
Créer un Super Administrateur
node scripts/create-super-admin.js
Utilisation
Démarrage en développement
pnpm dev
Ouvrir http://localhost:3000
Première connexion
- Utilisez les identifiants du Super Administrateur créé
- Configurez le nom et le logo du club dans l'admin
- Créez des comptes pour les administrateurs et membres
Rôles et permissions
- Membre : Peut saisir et consulter ses propres heures
- Administrateur : Peut valider/rejeter les heures de tous, gérer les paramètres
- Super Administrateur : Peut créer des comptes admin/membre, supprimer des utilisateurs
Scripts disponibles
pnpm dev: Serveur de développementpnpm build: Build de productionpnpm start: Serveur de productionpnpm format: Formatage du code avec Prettier
Structure du projet
├── app/ # Pages Next.js (App Router)
│ ├── api/ # Routes API
│ ├── admin/ # Page administration
│ ├── dashboard/ # Tableau de bord
│ ├── login/ # Page de connexion
│ └── layout.tsx # Layout principal
├── components/ # Composants réutilisables
│ ├── ui/ # Composants shadcn/ui
│ └── Header.tsx # Header de l'application
├── lib/ # Utilitaires
│ ├── auth.ts # Configuration NextAuth
│ ├── prisma.ts # Client Prisma
│ └── use-toast.ts # Hook pour les toasts
├── prisma/ # Schéma et migrations Prisma
└── public/ # Assets statiques
API Routes
GET/POST /api/hours: Gestion des heuresPUT /api/hours/[id]: Validation d'une heureDELETE /api/hours/[id]: Suppression d'une heureGET/PUT /api/settings: Paramètres du clubPOST /api/auth/signup: Création d'utilisateurGET /api/export: Export des données
Déploiement
Avec Docker
- Run le container :
docker compose up -d
Créer un Super Administrateur à l'intérieur du container :
docker exec -it <container_id> sh
Puis exécuter (pensez à modifier le nom d'utilisateur et le mot de passe si nécessaire) :
node scripts/create-super-admin.js
Contribution
- Fork le projet
- Créer une branche feature (
git checkout -b feature/nouvelle-fonction) - Commit les changements (
git commit -am 'Ajoute nouvelle fonction') - Push la branche (
git push origin feature/nouvelle-fonction) - Créer une Pull Request
Support
Pour toute question ou problème, ouvrir une issue sur GitHub.
Description
Languages
TypeScript
94.6%
CSS
3.4%
JavaScript
1.7%
Dockerfile
0.3%