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 :

Fenêtre de terminal
# 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, sans fonctionnalité inutile qu’on n’utilise pas, alternative à Trello sans sa complexité.

Son objectif principal est de créer un espace de travail qui se nettoie tout seul, sans qu’elle ne devienne surchargé visuellement avec des tâches terminées, en les archivant automatiquement.

La plupart des outils actuels vous aident à ajouter des tâches facilement, mais aucun ne vous aide à garder votre espace de travail épuré correctement sans faire des configurations compliquées.

En soi, si on n’automatise pas le nettoyage de la colonne « Terminées », celle-ci devient un cimetière à tâches terminées. De plus, nous sommes obligés de nettoyer notre espace de travail à la main, et on perd un temps fou à chercher comment nettoyer manuellement, au lieu d’avancer sur son projet.

En gros, l’outil devient le projet en lui-même à force de gérer l’outil.

Vous déplacez vos tâches vers la colonne Terminées et le système déplace vos tâches vers la zone dédiée pour ne jamais perdre vos données et garder la trace de votre travail effectué.

  • 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
  • Aucune fonctionnalité inutile — Concentrez-vous sur l’essentiel sans être submergé
  • Démarrage rapide — Un outil prêt à l’emploi, efficace au quotidien

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, et elles seront stockées chez UpCloud en Finlande
  • 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 la zone d’archive sans encombrer visuellement
  • Outils minimalistes — Aucune fonctionnalité inutile que vous n’utiliserez jamais
  • Compte dédié
  • Espaces de travail — Basculez entre vos espaces de travail sans perdre de temps
  • Configuration légère — 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 dashboard reste visuellement 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.