Application de prise de notes moderne et puissante
Jema Technology • Fonctionnalités • Installation • Utilisation • Licence
JemaNote est une application de prise de notes Progressive Web App (PWA) développée par Jema Technology. Elle offre une expérience utilisateur fluide avec support du Markdown, synchronisation cloud optionnelle, et de nombreuses fonctionnalités avancées.
- 📝 Éditeur Markdown complet avec prévisualisation en temps réel
- 🎨 Coloration syntaxique avec CodeMirror
- 📐 Support des formules mathématiques (KaTeX)
- 📊 Diagrammes Mermaid intégrés
- 🔗 WikiLinks pour lier vos notes entre elles
- 📁 Système de dossiers pour organiser vos notes
- 🔍 Recherche rapide et puissante (Fuse.js)
- 🗑️ Corbeille avec restauration
- 📅 Vue timeline pour naviguer par date
- 🕸️ Vue graphe pour visualiser les liens entre notes (Cytoscape)
- 🖼️ Vue canvas pour une organisation spatiale (PixiJS)
- 🤖 Intégration IA avec Mistral AI
- 📋 Résumés automatiques
- ✍️ Assistance à la rédaction
- 💾 Stockage local (LocalForage)
- ☁️ Synchronisation cloud optionnelle (Supabase)
- 📱 Mode hors-ligne complet (PWA)
- 🌙 Thème clair/sombre
- 📱 Design responsive (mobile, tablette, desktop)
- ⌨️ Palette de commandes (Cmd/Ctrl + K)
- 🎤 Enregistrement vocal
- Node.js 18+
- npm ou yarn
# Cloner le dépôt
git clone https://github.com/jematechnology/jemanote-pwa.git
cd jemanote-pwa
# Installer les dépendances
npm install
# Lancer en mode développement
npm run dev
# Construire pour la production
npm run buildCopiez le fichier .env.example vers .env et configurez les variables :
# Supabase (optionnel - pour la synchronisation cloud)
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
# Mistral AI (optionnel - pour les fonctionnalités IA)
VITE_MISTRAL_API_KEY=your_mistral_api_key| Raccourci | Action |
|---|---|
Ctrl/Cmd + K |
Ouvrir la palette de commandes |
Ctrl/Cmd + N |
Nouvelle note |
Ctrl/Cmd + S |
Sauvegarder |
Ctrl/Cmd + B |
Texte en gras |
Ctrl/Cmd + I |
Texte en italique |
- Titres (
# H1,## H2, etc.) - Gras et italique
- Listes à puces et numérotées
- Blocs de code avec coloration syntaxique
- Tableaux
- Citations
- Liens et images
- WikiLinks :
[[Nom de la note]] - Formules LaTeX :
$E = mc^2$ - Diagrammes Mermaid
- Frontend: React 18, TypeScript, Vite
- Styling: Tailwind CSS, Radix UI
- Éditeur: CodeMirror 6
- Markdown: react-markdown, remark-gfm, rehype-katex
- Graphes: Cytoscape.js
- Canvas: PixiJS
- Stockage: LocalForage, Supabase
- PWA: vite-plugin-pwa
npm run dev # Serveur de développement
npm run build # Build de production
npm run build:prod # Build optimisé pour production
npm run preview # Prévisualiser le buildnpm run test # Tests unitaires (Vitest)
npm run test:watch # Tests en mode watch
npm run test:coverage # Tests avec couverture
npm run test:e2e # Tests E2E (Playwright)
npm run test:e2e:ui # Tests E2E avec UI
npm run test:all # Tous les tests (lint + types + unit + e2e)
# Script interactif
node scripts/run-tests.jsJemaNote dispose d'une infrastructure de tests complète et professionnelle :
| Type | Outil | Description |
|---|---|---|
| Unitaires | Vitest | Tests rapides pour fonctions, hooks et utilitaires |
| Intégration | Vitest + MSW | Tests des interactions entre modules et API |
| Composants | React Testing Library | Tests des composants React avec interactions |
| E2E | Playwright | Tests de bout en bout sur vrais navigateurs |
| Sécurité | Playwright | Tests XSS, CSP, injection, headers |
| Performance | Lighthouse + Playwright | Audits Lighthouse, taille bundle, mémoire |
| Visuels | Playwright | Tests de régression visuelle |
| Refactoring | Scripts custom | Analyse de complexité, duplication, couplage |
- 📖 Vue d'ensemble - Documentation complète de l'infrastructure
- ✍️ Guide de contribution - Comment écrire des tests
- 🐛 Guide de débogage - Résoudre les problèmes
- 🔄 Guide CI/CD - Intégration continue
Les seuils de couverture actuels :
- Statements: 70%
- Branches: 60%
- Functions: 70%
- Lines: 70%
Voir le rapport de couverture détaillé avec npm run test:coverage.
| Commande | Description |
|---|---|
npm run test |
Tests unitaires |
npm run test:watch |
Tests en mode watch |
npm run test:coverage |
Tests avec couverture |
npm run test:e2e |
Tests E2E |
npm run test:e2e:ui |
Tests E2E avec interface |
npm run test:visual |
Tests de régression visuelle |
npm run test:performance |
Tests de performance |
npm run test:security |
Tests de sécurité |
npm run test:refactoring |
Analyse de qualité du code |
npm run test:all |
Tous les tests qualité |
node scripts/run-tests.js |
Lanceur interactif |
npm run lint # ESLint
npm run lint:fix # ESLint avec auto-fix
npm run type-check # Vérification TypeScript
npm run format # Formatage Prettier
npm run format:check # Vérification formatage
npm run quality # Suite complète de qualité
npm run quality:fix # Suite qualité avec auto-fixnpm run depcheck # Détecter dépendances inutilisées
npm run knip # Détecter code mortCe projet utilise Husky et lint-staged pour exécuter automatiquement :
- ESLint avec auto-fix
- Prettier formatage
- Tests liés aux fichiers modifiés
Les messages de commit doivent suivre la convention Conventional Commits :
<type>(<scope>): <subject>
[optional body]
[optional footer(s)]
Types disponibles : feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Exemples :
git commit -m "feat(notes): add search by tags"
git commit -m "fix(auth): resolve login redirect issue"
git commit -m "docs(readme): update installation instructions"Le workflow GitHub Actions exécute automatiquement :
- Lint et vérification des types
- Tests unitaires avec couverture
- Tests E2E
- Analyse des dépendances
- Audit de sécurité
- Vérification du build
| Outil | Configuration | Description |
|---|---|---|
| ESLint | eslint.config.js |
Linting avec règles React, TypeScript strict, imports, a11y |
| Prettier | .prettierrc |
Formatage cohérent du code |
| TypeScript | tsconfig.app.json |
Mode strict activé |
| Commitlint | commitlint.config.js |
Validation des messages de commit |
| Knip | knip.json |
Détection de code mort |
| Husky | .husky/pre-commit |
Hooks pre-commit |
Le projet utilise TypeScript en mode strict avec les options suivantes activées :
strict: true- Toutes les vérifications strictesnoImplicitAny: true- Interdit les types implicitesanystrictNullChecks: true- Vérification stricte des null/undefinednoUnusedLocals: true- Détecte les variables non utiliséesnoImplicitReturns: true- Vérifie les retours de fonction- Et plus encore...
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit vos changements (
git commit -m 'Add some AmazingFeature') - Push sur la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Ce projet est sous licence GNU Affero General Public License v3.0 (AGPL-3.0).
Voir le fichier LICENSE pour plus de détails.
Jema Technology
- Site web : https://www.jematechnology.fr/
Développé avec ❤️ par Jema Technology © 2025