Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Looma

Looma

Looma est une application de bureau local-first pour organiser ses projets de tricot, crochet et crochet tunisien.

Elle centralise le stock de laine, les patrons, les documents, les images de projets et les statistiques d'utilisation, sans compte utilisateur ni service distant obligatoire. Les données restent sur la machine, dans une base SQLite et un dossier de documents local.

Looma est construit avec Avalonia UI et vise Windows, macOS et Linux.


Fonctionnalités

Projets

  • Suivi des projets par statut : liste des souhaits, en cours, en pause ou fini.
  • Association d'un projet à un patron et à une ou plusieurs laines du stock.
  • Dates de début et de fin, notes, recherche et filtrage.
  • Ajout d'images au projet, renommage au moment de l'import et consultation en détail.
  • Actions rapides pour démarrer, mettre en pause, reprendre ou terminer un projet.
  • Finalisation avec déduction de laine par pelote, poids ou longueur.

Stock de laine

  • Gestion des laines avec marque, nom, matière, couleurs, poids, longueur et quantité disponible.
  • Ajustement du stock par pelote, par poids ou par longueur.
  • Calcul automatique des quantités totales en grammes, mètres et pelotes.
  • Sélection de la taille d'aiguilles via les plages de laine du domaine.
  • Affichage d'une image de type de laine selon la plage d'aiguilles choisie.
  • Recherche, pagination et fiche détaillée pour chaque laine.

Patrons

  • Création de patrons personnels ou externes.
  • Types pris en charge : crochet, crochet tunisien et tricot.
  • Notes, URL source, dates, documents associés et projets liés.
  • Import, renommage et consultation de documents rattachés aux patrons.
  • Navigation directe entre un patron et ses projets.

Documents

  • Import de documents dans le dossier local de Looma.
  • Prise en charge des fichiers génériques pour les patrons et des images pour les projets.
  • Recherche, pagination, renommage et suppression.
  • Retour rapide vers le patron ou le projet lié à un document.

Statistiques

  • Graphique d'utilisation de laine basé sur les mouvements de stock.
  • Filtres par période : tout, année en cours, six derniers mois, mois en cours ou semaine en cours.
  • Filtre par type de patron.
  • Affichage des quantités en pelotes, grammes ou mètres.

Réglages

  • Interface disponible en français, anglais, néerlandais, allemand et espagnol.
  • Thèmes JSON importables, exportables, ouvrables et supprimables.
  • Thèmes fournis au démarrage dans src/Looma.App/Seed/Themes.
  • Vérification des mises à jour, notes de version et installation via Velopack.

Stockage local

  • Base de données SQLite.
  • Documents importés copiés dans le dossier de données de l'application.
  • Images de projets stockées comme documents locaux.
  • Aucun compte, aucune synchronisation cloud imposée.

Stack technique

  • .NET 10
  • Avalonia UI 12
  • Entity Framework Core
  • SQLite
  • Velopack
  • xUnit, FluentAssertions et NSubstitute

La solution est découpée en plusieurs projets :

  • src/Looma.Domain : entités, services métier, recherches, statistiques et contrats.
  • src/Looma.Infrastructure : SQLite, repositories, migrations EF Core et stockage local.
  • src/Looma.Presentation : view models, navigation, traductions, notifications et thèmes.
  • src/Looma.Views : vues Avalonia, styles, contrôles et converters.
  • src/Looma.App : application de bureau, injection de dépendances, assets, seeds et mises à jour.

Développement

Prérequis

  • .NET 10 SDK

Lancer l'application

dotnet run --project src/Looma.App

Tester

dotnet test

Compiler

dotnet build

Langues

Les traductions de l'application sont dans src/Looma.Presentation/Resources :

  • Translations.resx : ressources neutres.
  • Translations.fr.resx : français.
  • Translations.en.resx : anglais.
  • Translations.nl.resx : néerlandais.
  • Translations.de.resx : allemand.
  • Translations.es.resx : espagnol.

La liste des langues affichées dans les réglages est déclarée dans TranslationService.SupportedLanguage.


Arguments de développement

Les arguments de démarrage sont gérés dans src/Looma.App/App.axaml.cs.

Passe les arguments après -- avec dotnet run :

dotnet run --project src/Looma.App -- --local

--local

Utilise un dossier de données local au projet :

./Data

Sans --local, Looma stocke ses données dans le dossier applicatif du système, dans un répertoire Looma.

--clear

Supprime la base SQLite et vide le dossier de documents avant le démarrage.

À utiliser avec attention :

dotnet run --project src/Looma.App -- --local --clear

--seed

Remplit une base vide avec des données de démonstration :

  • 10 laines
  • 3 patrons
  • 1 projet par statut
  • documents de démonstration attachés aux patrons

Le seeder ne s'exécute que sur une base vide. Pour régénérer les données de démo, combine-le avec --clear :

dotnet run --project src/Looma.App -- --local --clear --seed

--seed-N

Génère N éléments par collection principale, avec N >= 0.

Exemple avec 25 enregistrements générés :

dotnet run --project src/Looma.App -- --local --clear --seed-25

Les valeurs invalides déclenchent une erreur d'argument. Par exemple, --seed--1 et --seed-abc sont rejetés.

Commandes utiles

Utiliser une base locale isolée :

dotnet run --project src/Looma.App -- --local

Réinitialiser la base locale :

dotnet run --project src/Looma.App -- --local --clear

Réinitialiser avec les données de démonstration :

dotnet run --project src/Looma.App -- --local --clear --seed

Réinitialiser avec un jeu de données plus large :

dotnet run --project src/Looma.App -- --local --clear --seed-100

Fichiers de données

Looma stocke :

  • looma.db pour la base SQLite.
  • documents/ pour les documents importés et les images de projets.
  • themes/ pour les thèmes JSON importés ou exportés.

Avec --local, ces fichiers sont créés dans ./Data.


Site et téléchargements

Le site de Looma est disponible ici : looma.redyd.dev.


Licence

Ce projet est distribué sous licence GNU Affero General Public License v3.0. Le code est ouvert à la lecture, mais pas aux contributions ni à l'usage commercial.

About

Application desktop de gestion de stock de laines et de projets

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages