Une application web collaborative pour gérer vos projets et tâches, inspirée de Trello
Taskly est une application web moderne et collaborative pour la gestion de projets et de tâches en équipe. Le projet reproduit les fonctionnalités principales de Trello dans une architecture moderne avec un focus sur :
- ✅ Type-safety end-to-end (TypeScript strict + tRPC)
- ✅ Collaboration temps réel (Firestore listeners)
- ✅ Sécurité robuste (Firebase Auth + permissions granulaires)
- ✅ Performance (denormalization, pagination, caching)
- ✅ UX moderne (Responsive, Dark mode, Drag & drop)
Taskly permet aux équipes d'organiser leur travail via :
- Workspaces : Espaces de travail collaboratifs
- Boards : Tableaux kanban
- Colonnes : Listes de tâches
- Tickets : Cartes avec commentaires, assignations, attachments
| Nom | Rôle | Responsabilités |
|---|---|---|
| Younes Bahri | Lead Developer | Architecture, Backend, DevOps, Coordination |
| Schekina Ahounou | Developer | Frontend, Backend, Firebase, QA |
Établissement : Epitech
Période : Novembre 2025 - Janvier 2026
Contexte : Projet pédagogique de fin d'études
taskly/
├── apps/
│ ├── api/ # Backend NestJS
│ │ ├── src/
│ │ │ ├── board/ # Gestion des tableaux
│ │ │ ├── ticket/ # Gestion des cartes
│ │ │ ├── user/ # Gestion des utilisateurs
│ │ │ ├── workspace/# Gestion des équipes
│ │ │ └── main.ts # Point d'entrée
│ │ └── package.json
│ │
│ └── web/ # Frontend Next.js
│ ├── src/
│ │ ├── app/ # Routes et pages
│ │ ├── auth/ # Authentification
│ │ ├── components/
│ │ └── lib/
│ └── package.json
│
├── packages/ # Packages partagés
│ ├── auth/ # Firebase Auth Guard
│ ├── database/ # Modèles Firestore
│ ├── firebase/ # Firebase config
│ ├── shared/ # Types et permissions
│ ├── trpc/ # Router tRPC
│ └── ui/ # Composants réutilisables
│
└── doc/ # Documentation
Frontend : Next.js 14, React 18, TypeScript, Tailwind CSS, tRPC Client
Backend : NestJS, Express, TypeScript, tRPC Server
Database : Firestore (NoSQL), Firebase Realtime, Security Rules
Auth : Firebase Authentication (JWT), Guards NestJS
Storage : Google Cloud Storage (GCS), Signed URLs
Testing : Vitest, Testing Library
Monorepo : Turborepo, pnpm workspaces
DevOps : Docker, Cloud Build, Cloud Run, GitHub
-
Authentification & Autorisation
- Firebase Auth (email/password)
- JWT verification côté backend
- Guards NestJS pour protection des routes
- Rôles & permissions granulaires (Owner, Admin, Member)
-
Gestion des Workspaces
- Créer/éditer/archiver des workspaces
- Invitation de membres avec tokens sécurisés
- Gestion des rôles
- Historique d'activité
-
Gestion des Tableaux
- CRUD boards avec Swagger docs
- Backgrounds personnalisés (couleurs, gradients, images Unsplash)
- Réordonnancement
-
Gestion des Colonnes
- CRUD colonnes
- Réordonnancement (order-based)
-
Gestion des Tickets
- CRUD tickets
- Drag & drop entre colonnes (transactions Firestore)
- Commentaires avec édition
- Assignations
- Labels par board
- Checklists avec items
- Pièces jointes (GCS avec signed URLs)
- Rappels programmables
- Archivage (soft delete)
-
Collaboration
- Temps réel via Firestore listeners
- Système de notifications
- Historique d'activité complet
- Watchers/Observateurs
-
Documentation
- Swagger/OpenAPI pour REST API
- tRPC type-safe avec introspection
- 2000+ lignes de documentation technique en français
- Node.js 20+ LTS
- pnpm 9.x (ou via Corepack)
- Git
# 1. Cloner le repository
git clone https://github.com/youba/taskly.git
cd taskly
# 2. Activer pnpm (via Corepack)
corepack enable
corepack prepare pnpm@9.12.3 --activate
# 3. Installer les dépendances
pnpm install# Lancer tout (frontend + backend)
pnpm devLes services démarrent sur :
- Frontend :
http://localhost:3000 - Backend :
http://localhost:4000 - API Docs :
http://localhost:4000/docs(Swagger) - Health Check :
http://localhost:4000/health
Variables d'environnement :
# Backend
PORT=4000 # Port du serveur
CORS_ORIGIN=http://localhost:3000 # Origine CORS
NODE_ENV=development # Environnement
# Frontend
NEXT_PUBLIC_API_URL=http://localhost:4000 # URL API# Lancer tous les tests
pnpm test
# Vérifier les types TypeScript
pnpm run typecheck
# Linter le code
pnpm lint
# Mode watch
pnpm test:watch# Builder tous les packages
pnpm build
# Vérifier le build
pnpm run verify
# Déployer (déclenche Cloud Build)
git push origin mainUne documentation complète en français (2000+ lignes) est disponible dans doc/ :
| Document | Contenu | Durée |
|---|---|---|
| doc/SOMMAIRE.md | Guide rapide par rôle | 2 min |
| doc/README.md | Vue d'ensemble | 5 min |
| doc/01_ARCHITECTURE_GLOBALE.md | Architecture complète | 15 min |
| doc/02_FIRESTORE_ARCHITECTURE.md | Database & Collections | 25 min |
| doc/03_SYSTEME_PERMISSIONS.md | Permissions & Sécurité | 20 min |
| doc/04_GESTION_TICKETS.md | Tickets & Opérations | 30 min |
| doc/05_WORKFLOWS_COLLABORATIONS.md | Collaboration temps réel | 25 min |
| doc/CONTRIBUTION_GUIDELINES.md | Guide de contribution | 15 min |
| doc/INDEX.md | Index & FAQ complet | Navigation |
- Frontend Developer : SOMMAIRE → 01 → 04 → 05
- Backend Developer : SOMMAIRE → 01 → 02 → 03 → 04
- DevOps : SOMMAIRE → 01 (déploiement section)
- QA / Tester : SOMMAIRE → 01 → 03 → 04 → 05
Avant de contribuer, lire doc/CONTRIBUTION_GUIDELINES.md.
- Fork le repository
- Créer une branche :
git checkout -b feat/ma-feature - Commiter :
git commit -am 'feat: ajouter ma feature' - Tester :
pnpm test && pnpm run typecheck && pnpm lint - Push :
git push origin feat/ma-feature - Ouvrir une Pull Request
- Tests ajoutés/passants
- Type checking :
pnpm run typecheck✅ - Linting :
pnpm lint✅ - Documentation mise à jour
- Commits au format :
<type>(<scope>): <description>
Trouvé un bug? Ouvrez une GitHub Issue avec :
- Titre : Description en 1 phrase
- Description : Pas à pas pour reproduire
- Comportement attendu/actuel : Différence
- Screenshots : Si applicable
- Environnement : OS, Node version, etc.
- ✅ Architecture monorepo (Turborepo)
- ✅ Backend NestJS + tRPC + Swagger
- ✅ Frontend Next.js + React
- ✅ Authentification Firebase
- ✅ Permissions & rôles
- ✅ Firestore database (13 collections)
- ✅ Tests unitaires (Vitest)
- ✅ Documentation technique complète
- ✅ API Swagger docs
- Webhooks & intégrations externes
- Slack/Teams integration
- Advanced reporting
- Custom automations
- Mobile app (React Native)
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
- Issues : GitHub Issues
- Discussions : GitHub Discussions
- Documentation : doc/
Merci à :
- Firebase pour l'authentification et la database
- NestJS pour le framework backend
- Next.js pour le framework frontend
- Turborepo pour la gestion du monorepo
- Épita pour le contexte pédagogique
Fait avec ❤️ par Younes Bahri & Schekina Ahounou
2025 © Taskly - Tous droits réservés