Aller au contenu

Blog

Migré de github à codeberg

J’ai migré de GitHub vers Codeberg principalement parce que GitHub est une plateforme propriétaire, ce qui pose problème en matière de souveraineté selon moi (notamment en raison de l’entraînement de leur IA Copilot sur le code public).

Mon objectif principal était de trouver la simplicité : avoir moins de fonctionnalités inutilisées, profiter d’une plateforme qui va droit au but.

Mes étapes pour migrer mon projet de GitHub vers Codeberg :

Section intitulée « Mes étapes pour migrer mon projet de GitHub vers Codeberg : »

J’ai utilisé ces commandes pour procéder à la migration :

# 1. Modifier l'URL du dépôt distant pour pointer vers Codeberg
git remote set-url origin https://codeberg.org/NuxiPro/Core.git
# 2. Pousser l'ensemble des branches et des tags
git push --all
git push --tags

J’aurais pu utiliser l’outil natif d’import de Codeberg, mais comme le dépôt Core de NuxiPro était privé, j’ai préféré faire le transfert manuellement par choix. Ça a pris quelques minutes et tout s’est très bien passé.


Ce que je gagne et ce que je perds en quittant GitHub pour Codeberg

Section intitulée « Ce que je gagne et ce que je perds en quittant GitHub pour Codeberg »
  • Simplicité d’usage au quotidien
  • Pas de surcharge de fonctionnalités inutiles
  • Souveraineté (Codeberg est hébergé en Allemagne par une association européenne)
  • Éthique : pas de modèle économique basé sur l’exploitation de ton code
  • Un environnement plus calme et sobre, sans outils propriétaires
  • Moins de visibilité que sur GitHub
  • Moins d’outils clé en main, mais plus de contrôle sur ce que j’ajoutee

J’ai pris la décision d’auto-héberger mon propre runner sur ma machine personnelle.

J’utilise la stratégie Docker-in-Docker (DinD) : les jobs s’exécutent dans un démon Docker séparé, sans accès direct au socket Docker de mon hôte, ce qui garantit une bonne isolation de mes environnements de build.

J’ai fait ce choix pour ne pas saturer les ressources partagées de la communauté Codeberg pendant mes phases de tests et de déploiements. À terme, je déplacerai ce runner sur un serveur dédié pour ne plus dépendre de mon PC de bureau.


J’ai conservé le dépôt de la démo sur GitHub pour l’instant, car elle va très bientôt être arrêtée et supprimée. Comme c’était une version de test qui demande de la maintenance inutile, elle sera remplacée directement. Je préviendrai avant sa suppression définitive.


Construction de NuxiPro Cloud : les nouveautés

J’ai décidé de rendre la version Cloud de NuxiPro sécurisée et minimaliste au quotidien, sans me soucier de l’outil lui-même, d’autant plus qu’il va stocker mes propres données personnelles et professionnelles.

Cloud NuxiPro

Pour l’instant, cette version de mon projet n’est pas encore prête ni assez fonctionnelle pour gérer des données réel.


Voici les technologies que j’ai ajoutées à Cloud NuxiPro :

  • Better Auth (pour l’authentification)
  • Drizzle (ORM pour PostgreSQL)
  • Hono (pour le serveur backend)
  • Fractional indexing (pour gérer la position des tâches sur le tableau Kanban)
  • Nginx (reverse proxy prévu devant le backend avant le lancement de Cloud NuxiPro)
  • TypeScript (langage principal du backend)
  • Bun (runtime pour exécuter le backend)
  • date-fns (pour la gestion des dates)
  • Zod / Hono validator (pour valider les données entrantes et sortantes)
  • OpenObserve (pour la gestion centralisée des logs)
Infra diagram

J’ai choisi cette stack pour rendre NuxiPro efficace, prévisible, et garantir une sécurité résiliente. Puisque j’y stockerai mes propres données, et que je vois régulièrement des SaaS se faire pirater, j’ai refusé d’être le prochain sur cette liste. Mon objectif est de construire un système où les utilisateurs sont en sécurité grâce à un outil souverain, hébergé en Finlande chez UpCloud (souverain, performant, et très attractif niveau prix).

J’ai opté pour Hono et Better Auth parce qu’ils sont simples à utiliser, très efficaces, et m’aident à construire une sécurité solide.

J’ai aussi intégré le Fractional indexing pour gérer la position des cartes sur le tableau Kanban de la manière la plus efficace possible. Cela permet de glisser-déposer une tâche entre deux colonnes ou au-dessus d’une autre sans avoir à réécrire la valeur de toutes les autres tâches. En bref, ça évite les collisions tout en gardant une expérience fluide au quotidien.

Pour centraliser mes logs et gérer les erreurs, j’utilise OpenObserve. L’objectif est de repérer et corriger les crashs rapidement. Avant même la sortie de la version Cloud, je vais faire passer des tests intensifs avec pour objectif explicite d’essayer de faire planter mon système.

Cela me permettra de confirmer s’il est vraiment robuste. Bien sûr, cela n’exclura pas 100% des futurs bugs, mais ces tests de crash prouveront la solidité de l’outil.


  • TypeScript (pour la simplicité et la sécurité des types)
  • TanStack Router / Query (pour gérer les pages dynamiques et l’état)
  • React (pour construire l’interface utilisateur)
  • Zod & React Hook Form (pour valider les données des formulaires)
  • shadcn/ui (pour ne pas recréer l’interface depuis zéro et perdre du temps sur des bugs UI inutiles)
  • Tiptap (pour construire l’éditeur Markdown)
  • dnd kit (pour un glisser-déposer fluide sur le tableau Kanban)
  • Bun, Vite & Hono Client (pour le build, le bundling, et la communication avec l’API)
Draging action

J’ai choisi cette stack parce qu’elle est simple, maintenable sur le long terme, et conçue pour durer plusieurs années sans devenir obsolète imédiatement.


J’ai conçu cette stack principalement pour construire un outil de travail quotidien efficace, simple, sans bruit visuel inutile qui fait perdre du temps.

Ma priorité reste un outil adapté aux personnes qui travaillent seules. Aujourd’hui, la plupart des logiciels n’arrêtent pas d’empiler des fonctionnalités au lieu de simplifier, ce qui crée de la friction au quotidien.

Étant quelqu’un de très exigeant sur la sécurité, la performance, je veux que mon propre outil de travail soit efficace et ne demande aucune énergie à gérer. NuxiPro est là pour m’aider chaque jour, dans mes projets professionnels et personnels.


Souveraineté & Conformité

Je me concentre actuellement sur la souveraineté et la conformité pour NuxiPro. Mon objectif est de construire un outil vraiment utile, respectueux de la vie privée dès la conception, et qui respecte les données des utilisateurs.

Voici la feuille de route que j’exécute avant de pousser plus loin sur la version cloud de NuxiPro :

  • Conformité RGPD : Documenter clairement les lieux de stockage des données, les méthodes de traitement, et les sous-traitants tiers.
  • Hub légal : Centraliser tous les documents légaux et de conformité directement sur la landing page.
  • Traçabilité RGPD : Mettre en place une stratégie pour suivre précisément le consentement, les permissions et les préférences de confidentialité des utilisateurs.

Au final, mon objectif est de proposer une alternative souveraine, respectueuse de la vie privée et minimaliste à Trello.


Présentation de NuxiPro

NuxiPro est un gestionnaire de tâches minimaliste et léger, sans fonctionnalités inutiles qui encombrent votre espace de travail. Son objectif principal est de créer un espace de travail auto-nettoyant — les tâches qui atteignent “Terminé” sont archivées automatiquement.

La plupart des outils Kanban facilitent l’ajout de tâches et de fonctionnalités, mais aucun ne garde votre espace de travail propre et sans encombrement. NuxiPro résout ce problème.

Les outils actuels nous aident à ajouter des tâches, mais aucun ne nous aide à les retirer. Sans nettoyage automatique, la colonne “Terminé” devient un cimetière de cartes. On perd un temps précieux à chercher comment archiver et à nettoyer manuellement, au lieu de faire avancer son projet.

J’ai construit NuxiPro pour proposer un Kanban simple, minimaliste, prêt à l’emploi. Dès qu’une tâche glisse dans la colonne “Terminé”, elle est instantanément archivée en arrière-plan. Configuration minimale, zéro complexité, et votre tableau reste propre dès le premier jour.

  • Archivage instantané (démo) : Les tâches s’archivent instantanément lorsqu’elles sont déplacées vers Terminé. Les données restent dans votre navigateur (localStorage).
  • Archivage configurable (cloud) : Choisissez votre mode d’archivage — instantané ou temporisé (X jours). Stockage serveur persistant.
  • Zéro friction — L’archivage manuel disparaît complètement
  • Zéro encombrement visuel — Plus de tâches terminées qui polluent votre espace de travail
  • Suivi simple — Visualisez votre progression et vos victoires quotidiennes, sans effort
  • Aucune fonctionnalité inutile — Concentrez-vous sur l’essentiel sans être submergé
  • Démarrage rapide — Un outil prêt à l’emploi, simple au quotidien
Démo Cloud
Mode d’archivage Instantané uniquement Instantané ou temporisé
Stockage des données localStorage du navigateur Côté serveur (persistant)
Usage prévu Découverte Production, usage quotidien réel
Compte requis Non Oui

Essayez la démo en ligne sans créer de compte.

La version Cloud de NuxiPro (app.nuxipro.com) est actuellement en développement.

  • Stockage sécurisé des données — Vos données sont stockées dans une base de données, pas dans le localStorage du navigateur
  • Souveraineté des données — Vous restez propriétaire de vos données, toujours
  • Support multi-projets — Chaque projet apparaît comme une ligne dans la barre latérale avec son propre nom
  • Archivage automatique des tâches terminées — Les tâches terminées sont déplacées automatiquement vers l’archive
  • Outils minimalistes — Aucune fonctionnalité inutile que vous n’utiliserez jamais
  • Compte dédié — Un compte par utilisateur
  • Espaces de travail — Basculez entre vos espaces de travail sans perdre de temps
  • Configuration réduite — Choisissez votre mode d’archivage à la configuration, changez-le à tout moment

Deux modes au choix :

  • Instantané — La tâche s’archive immédiatement lorsqu’elle est déplacée vers “Terminé”
  • Temporisé — La tâche s’archive après X jours (configurable)

Vos tâches sont visuellement séparées de votre espace de travail. Les tâches terminées passent dans une zone d’archive dédiée, sans être chargées à l’ouverture de votre projet — ce qui évite les problèmes de performance.

Votre espace de travail reste propre, sans encombrement visuel dû aux tâches terminées. Vous pouvez toujours retrouver vos tâches archivées dans la zone d’archive, sans jamais les perdre.

Pourquoi la démo n’est pas faite pour de vrais projets

Section intitulée « Pourquoi la démo n’est pas faite pour de vrais projets »

La démo est conçue uniquement pour la démonstration. Si vous y stockez des données sensibles, vous risquez de les perdre définitivement car le stockage se fait dans votre navigateur (localStorage). La version Cloud résout ce problème grâce à un stockage serveur persistant.

Démo Cloud
Stockage des données localStorage du navigateur (peut être perdu) Base de données (persistant)
Mode d’archivage Instantané uniquement Instantané ou temporisé
Projets Projet unique Multi-projets
Espaces de travail Non Oui
Compte Non Oui
Configuration Aucune Choix du mode d’archivage à la configuration
Usage prévu Découverte Production, usage quotidien réel

La version Cloud sera lancée avec une pré-version pour les premiers testeurs. Rejoignez la liste d’attente sur demo.nuxipro.com — Sébastien Babas vous préviendra personnellement quand la pré-version sera sur le point de sortir.

Vos retours façonneront directement la construction de NuxiPro Cloud.


Construit par Sébastien Babas — Conçu pour une clarté mentale absolue.