Une plateforme collaborative complète et moderne permettant aux équipes de travailler ensemble efficacement avec chat temps réel, gestion de notes, agenda partagé et système de prise de rendez-vous.
- Conversations 1:1 et groupes
- Statuts de présence (en ligne, hors ligne, absent, occupé)
- Indicateurs de lecture
- Pièces jointes et réponses
- Historique des messages
- Notes privées et publiques
- Éditeur Markdown
- Système de versioning
- Recherche plein texte
- Épinglage et favoris
- Tags et organisation
- Calendriers privés et publics
- Événements récurrents
- Invitations et gestion des participants
- Rappels automatiques
- Vue mensuelle interactive
- Proposition de créneaux multiples
- Système de confirmation
- Gestion des disponibilités
- Notifications automatiques
- Centre de notifications in-app
- Support PWA pour notifications push
- Catégorisation par type
- Marquage lu/non lu
- Système de rôles (Owner, Admin, Member, Guest)
- Profils utilisateurs
- Statuts personnalisés
- Recherche de membres
- React 19 avec TypeScript
- Tailwind CSS 4 pour le styling
- tRPC 11 pour l'API type-safe
- Wouter pour le routing
- shadcn/ui pour les composants UI
- date-fns pour la gestion des dates
- PWA avec manifest et service worker
- Node.js avec TypeScript
- Express 4 comme serveur HTTP
- tRPC 11 pour l'API
- Drizzle ORM pour la base de données
- MySQL/TiDB comme base de données
- S3 pour le stockage de fichiers
- Vercel pour le déploiement
- JWT pour l'authentification
- OAuth (Manus Auth) pour la connexion
- Node.js 22+
- pnpm 10+
- Une base de données MySQL/TiDB
- Un bucket S3 (configuré automatiquement avec Manus)
- Cloner le projet
git clone <repository-url>
cd plateforme-collaborative-pro- Installer les dépendances
pnpm install- Configurer les variables d'environnement
Les variables suivantes sont automatiquement injectées par la plateforme Manus :
DATABASE_URL- URL de connexion à la base de donnéesJWT_SECRET- Secret pour les tokens JWTOAUTH_SERVER_URL- URL du serveur OAuthVITE_OAUTH_PORTAL_URL- URL du portail OAuth (frontend)OWNER_OPEN_ID- ID du propriétaireVITE_APP_ID- ID de l'applicationVITE_APP_TITLE- Titre de l'applicationVITE_APP_LOGO- URL du logoBUILT_IN_FORGE_API_URL- URL des APIs internesBUILT_IN_FORGE_API_KEY- Clé API pour les services internes
- Appliquer les migrations de base de données
pnpm db:push- (Optionnel) Générer des données de démonstration
pnpm seedpnpm devL'application sera accessible sur http://localhost:3000
pnpm buildpnpm testpnpm checkplateforme-collaborative-pro/
├── client/ # Application frontend
│ ├── public/ # Fichiers statiques
│ │ └── manifest.json # Manifest PWA
│ └── src/
│ ├── components/ # Composants réutilisables
│ │ ├── ui/ # Composants shadcn/ui
│ │ └── DashboardLayout.tsx
│ ├── pages/ # Pages de l'application
│ │ ├── Home.tsx
│ │ ├── Chat.tsx
│ │ ├── Notes.tsx
│ │ ├── Calendar.tsx
│ │ ├── Appointments.tsx
│ │ ├── Notifications.tsx
│ │ └── Team.tsx
│ ├── lib/
│ │ └── trpc.ts # Client tRPC
│ └── App.tsx # Routing principal
├── server/ # Application backend
│ ├── _core/ # Infrastructure (OAuth, tRPC, etc.)
│ ├── db.ts # Helpers de base de données
│ └── routers.ts # Routeurs tRPC
├── drizzle/ # Schéma et migrations DB
│ └── schema.ts
├── scripts/ # Scripts utilitaires
│ └── seed.ts # Script de seed
└── shared/ # Code partagé frontend/backend
| Rôle | Description | Permissions |
|---|---|---|
| Owner | Créateur de l'organisation | Tous droits (admin + gestion globale) |
| Admin | Gestion opérationnelle | Gestion utilisateurs, modération, quotas |
| Member | Utilisateur standard | Accès complet aux outils collaboratifs |
| Guest | Invité | Lecture seule + participation limitée |
- L'utilisateur clique sur "Se connecter"
- Redirection vers le portail OAuth Manus
- Après authentification, retour avec un token
- Le token est stocké dans un cookie sécurisé
- Chaque requête API vérifie le token via middleware
- users - Utilisateurs de la plateforme
- organizations - Organisations/équipes
- org_memberships - Appartenance aux organisations
- chats - Conversations (1:1 ou groupe)
- chat_members - Membres des conversations
- messages - Messages dans les chats
- notes - Notes privées ou publiques
- note_versions - Historique des versions
- calendars - Calendriers personnels ou partagés
- events - Événements dans les calendriers
- event_attendees - Participants aux événements
- appointment_requests - Demandes de rendez-vous
- appointment_invitees - Invités aux rendez-vous
- notifications - Notifications in-app
- notification_subscriptions - Abonnements push
- availability_slots - Créneaux de disponibilité
- audit_logs - Journaux d'audit
L'API est organisée en modules tRPC :
auth- Authentification et gestion de sessionusers- Gestion des utilisateursorganizations- Gestion des organisationschats- Messagerie temps réelfiles- Upload et gestion de fichiersnotes- Gestion des notescalendars- Gestion des calendriersevents- Gestion des événementsappointments- Prise de rendez-vousavailability- Gestion des disponibilitésnotifications- Centre de notificationsaudit- Journaux d'audit
// Côté client
const { data: notes } = trpc.notes.list.useQuery({
orgId: 1,
isPublic: false,
});
const createNote = trpc.notes.create.useMutation({
onSuccess: () => {
// Rafraîchir la liste
},
});L'application est configurée comme PWA et peut être installée sur :
- Android (Chrome, Edge)
- iOS (Safari)
- Windows (Edge, Chrome)
- macOS (Safari, Chrome)
- Installation sur l'écran d'accueil
- Mode hors ligne (lecture des données en cache)
- Notifications push
- Raccourcis d'application
- Icônes adaptatives
Le projet est configuré pour un déploiement automatique sur Vercel via l'interface Manus. Il suffit de cliquer sur le bouton "Publier" dans l'interface.
- Base de données MySQL/TiDB accessible publiquement
- Variables d'environnement configurées
- Bucket S3 pour le stockage de fichiers
Le build Vercel :
- Compile le frontend avec Vite
- Bundle le backend avec esbuild
- Optimise les assets statiques
- Configure les routes serverless
# Tests unitaires
pnpm test
# Tests avec coverage
pnpm test -- --coverageToutes les actions importantes sont enregistrées dans la table audit_logs :
- Création/modification/suppression de ressources
- Actions administratives
- Connexions et déconnexions
- Changements de permissions
L'application intègre Umami Analytics pour le suivi des métriques :
- Pages vues
- Utilisateurs actifs
- Temps de session
- Parcours utilisateur
- Authentification JWT avec refresh tokens
- Validation des entrées avec Zod
- Protection CSRF via cookies SameSite
- CORS configuré strictement
- Rate limiting sur les endpoints sensibles
- Audit logging complet
- Permissions RBAC sur toutes les ressources
- Export des données utilisateur disponible
- Suppression des données sur demande
- Journalisation des accès
- Consentement pour les cookies
- Créer une branche feature
- Développer et tester localement
- Vérifier avec
pnpm check - Formater avec
pnpm format - Créer une pull request
- TypeScript strict mode
- ESLint + Prettier
- Commits conventionnels
- Tests pour les nouvelles fonctionnalités
Ce projet est sous licence MIT.
Pour toute question ou problème :
- Ouvrir une issue sur GitHub
- Consulter la documentation
- Contacter l'équipe de support
- Intégration Teams/Slack
- Gestion de projets (Kanban)
- Recherche globale unifiée
- Traductions i18n
- API publique pour intégrations tierces
- Webhooks sortants
- Templates de notes avancés
- Synchronisation Google Calendar
- Sondages dans les chats
- Appels vidéo intégrés
Développé avec ❤️ par Manus AI