Skip to content

JemaOS/jemanote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

145 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JemaNote

JemaNote Logo

Application de prise de notes moderne et puissante

Jema TechnologyFonctionnalitésInstallationUtilisationLicence


📝 Description

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.

✨ Fonctionnalités

Éditeur Markdown

  • 📝 É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

Organisation

  • 📁 Système de dossiers pour organiser vos notes
  • 🔍 Recherche rapide et puissante (Fuse.js)
  • 🗑️ Corbeille avec restauration
  • 📅 Vue timeline pour naviguer par date

Visualisation

  • 🕸️ Vue graphe pour visualiser les liens entre notes (Cytoscape)
  • 🖼️ Vue canvas pour une organisation spatiale (PixiJS)

Intelligence Artificielle

  • 🤖 Intégration IA avec Mistral AI
  • 📋 Résumés automatiques
  • ✍️ Assistance à la rédaction

Synchronisation & Stockage

  • 💾 Stockage local (LocalForage)
  • ☁️ Synchronisation cloud optionnelle (Supabase)
  • 📱 Mode hors-ligne complet (PWA)

Interface

  • 🌙 Thème clair/sombre
  • 📱 Design responsive (mobile, tablette, desktop)
  • ⌨️ Palette de commandes (Cmd/Ctrl + K)
  • 🎤 Enregistrement vocal

🚀 Installation

Prérequis

  • Node.js 18+
  • npm ou yarn

Installation locale

# 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 build

Variables d'environnement

Copiez 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

💻 Utilisation

Raccourcis clavier

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

Syntaxe Markdown supportée

  • 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

🛠️ Technologies

  • 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

📦 Scripts disponibles

Développement

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 build

Tests

npm 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.js

🧪 Infrastructure de Tests

JemaNote dispose d'une infrastructure de tests complète et professionnelle :

Types de tests

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

Documentation des tests

Couverture de code

Coverage

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.

Commandes de test

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

Qualité du code

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-fix

Analyse du code

npm run depcheck         # Détecter dépendances inutilisées
npm run knip             # Détecter code mort

🔒 Qualité et Standards

Pre-commit Hooks

Ce projet utilise Husky et lint-staged pour exécuter automatiquement :

  • ESLint avec auto-fix
  • Prettier formatage
  • Tests liés aux fichiers modifiés

Conventional Commits

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"

CI/CD

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

Configuration des outils

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

TypeScript Strict Mode

Le projet utilise TypeScript en mode strict avec les options suivantes activées :

  • strict: true - Toutes les vérifications strictes
  • noImplicitAny: true - Interdit les types implicites any
  • strictNullChecks: true - Vérification stricte des null/undefined
  • noUnusedLocals: true - Détecte les variables non utilisées
  • noImplicitReturns: true - Vérifie les retours de fonction
  • Et plus encore...

🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à :

  1. Fork le projet
  2. Créer une branche (git checkout -b feature/AmazingFeature)
  3. Commit vos changements (git commit -m 'Add some AmazingFeature')
  4. Push sur la branche (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

📄 Licence

Ce projet est sous licence GNU Affero General Public License v3.0 (AGPL-3.0).

Voir le fichier LICENSE pour plus de détails.

👨‍💻 Auteur

Jema Technology


Développé avec ❤️ par Jema Technology © 2025

Releases

No releases published

Packages

 
 
 

Contributors