Repository navigation
v0.0.1
Pre-release
Pre-release
NetCodes v0.0.1 — Première release publique
Application desktop cross-platform pour stocker et organiser des snippets de code, construite avec Electron + React + SQLite.
Structure hiérarchique
Notebooks
- Créer, renommer, supprimer des notebooks (suppression en cascade)
- Icône emoji personnalisable (16 icônes disponibles)
- Réordonner par drag & drop dans la sidebar
- Exporter un notebook entier (Word ou Markdown)
Sections
- Créer, renommer, supprimer des sections dans un notebook
- Couleur personnalisable par section
- Déplacer une section vers un autre notebook
- Réordonner via boutons haut/bas (masqués au repos, sans réservation d'espace)
- Exporter une section (Word ou Markdown)
Pages
- Créer, renommer, supprimer des pages dans une section
- Marquer/démarquer une page en favori
- Déplacer une page vers une autre section
- Réordonner par drag & drop
- Exporter une page (Word ou Markdown)
- Dernière page active restaurée au redémarrage
Blocs de contenu
- Deux types : bloc texte (Markdown) et bloc code (Monaco Editor)
- Titre éditable par bloc
- Réordonner les blocs d'une page par drag & drop
- Copier le contenu dans le presse-papiers
- Supprimer un bloc
- 23 langages supportés : JavaScript, TypeScript, Python, Java, C#, C++, C, Go, Rust, PHP, Ruby, Swift, Kotlin, HTML, CSS, SCSS, JSON, YAML, XML, SQL, Markdown, Shell, Plain Text
Éditeur
Bloc texte
- Saisie en Markdown avec prévisualisation rendue
- Basculement édition / prévisualisation
- Sanitisation XSS via DOMPurify
Bloc code (Monaco Editor)
- Coloration syntaxique via Monaco Editor (thème VS Light)
- Numéros de ligne, code folding
- Sélection du langage via menu déroulant
- Sauvegarde automatique à la perte du focus
Import de fichiers
- Glisser-déposer un fichier sur un bloc texte ou code
- Bouton d'import via explorateur de fichiers
- Détection automatique du langage depuis l'extension (24 mappings : .js, .ts, .py, .java, .cs, .cpp, .c, .go, .rs, .php, .rb, .swift, .kt, .html, .css, .scss, .json, .yaml, .xml, .sql, .md, .sh, .bash, .zsh)
- Détection des fichiers binaires (refus propre)
- Limite de taille : 5 Mo
- Modale de résolution : Remplacer / Ajouter à la suite / Annuler
Export
Formats
- Microsoft Word (.docx) : titres, paragraphes, listes, citations, blocs de code (police Courier New, fond gris)
- Markdown (.md) : en-têtes, fences de code avec langage, formatage inline
Portée de l'export
- Bloc unique → fichier unique
- Page → fichier unique ou dossier (mode split : un fichier par bloc)
- Section → arborescence de dossiers (Section > Pages > Blocs)
- Notebook → arborescence complète (Notebook > Sections > Pages > Blocs)
Modes de layout
- Merged : un fichier par page, tous les blocs combinés
- Split : un fichier par bloc, organisés en sous-dossiers par page
Autres
- Sélection du dossier de destination via dialog natif
- Nommage automatique des fichiers (caractères spéciaux sanitisés)
- Déduplication automatique des noms de fichiers existants
Recherche
- Raccourci clavier : Ctrl+K (Windows/Linux) ou Cmd+K (macOS)
- Recherche full-text sur : noms de notebooks, titres de sections, titres de pages, titres et contenu des blocs
- Résultats groupés par catégorie (Notebooks, Sections, Pages)
- Aperçu des blocs (jusqu'à 100 caractères) avec fil d'Ariane Notebook › Section
- Clic sur un résultat : navigation directe + expansion automatique de la hiérarchie
- REINDEX SQLite au démarrage pour la robustesse
Interface & UX
Layout
- 3 panneaux : Sidebar (notebooks/sections) · Liste des pages · Éditeur
- Largeur de chaque panneau redimensionnable par glisser-déposer
- Largeurs persistées via localStorage
Navigation
- Expansion/réduction des notebooks dans la sidebar (état persisté)
- Sélection automatique de la dernière page active au redémarrage
Modales
- Recherche (Ctrl+K / Cmd+K)
- Déplacer : déplacer une page ou une section avec chemin complet affiché
- Export : choix format + portée + mode layout
- Import fichier : résolution conflit replace/append
- Fermeture universelle via Échap
Raccourcis clavier
| Raccourci | Action |
|---|---|
| Ctrl+K / Cmd+K | Ouvrir la recherche |
| Échap | Fermer les modales |
| Entrée | Valider une édition inline |
| Ctrl+S / Cmd+S | Sauvegarder (Monaco) |
| Ctrl+F / Cmd+F | Rechercher dans l'éditeur (Monaco) |
| Ctrl+H / Cmd+H | Remplacer dans l'éditeur (Monaco) |
| Alt+↑/↓ | Déplacer une ligne (Monaco) |
Base de données & Persistance
- SQLite local via
better-sqlite3 - WAL (Write-Ahead Logging) activé
- Vérification d'intégrité + REINDEX au démarrage
- Suppression en cascade (notebook → sections → pages → blocs)
- Chemin configurable : menu Paramètres → "Choisir la base de données..." (redémarrage requis)
- Chemin par défaut :
{userData}/netcodes.sqlite
Sécurité
contextIsolation: true,nodeIntegration: false- Validation des IDs et positions côté main process (entiers positifs uniquement)
- Sanitisation XSS des contenus Markdown avec DOMPurify
- Aucune clé secrète ni credential dans le code source
Tests
- 55 tests unitaires (Vitest)
- Couverture : toutes les opérations CRUD, suppressions en cascade, gestion des positions, déplacements, favoris, recherche, génération de documents Word
Build & Plateformes
| Plateforme | Format |
|---|---|
| Windows | NSIS installer (.exe) |
| macOS | DMG (.dmg) |
| Linux | AppImage (.AppImage) |
Connu comme non implémenté dans cette version
- Tags : infrastructure DB présente, UI non exposée
- Import en masse (notebooks/sections depuis des fichiers)
- Sauvegarde/restauration intégrée (copie manuelle du fichier SQLite)
- Synchronisation cloud — application 100% locale et hors-ligne
Pourquoi tu regardes ma Signature CC 😏 Je check toujours son travail.
🤖 Generated with Claude Code