Skip to content

Repository files navigation

🚀 KairuFocus

Application de gestion d'activité quotidienne pour développeurs.

KairuFocus centralise en un seul endroit tout ce dont un développeur a besoin pour rester focus et organisé : todo list de micro-tâches, journal de bord, sessions Pomodoro et intégration avec les outils de ticketing (Jira).

Tableau de bord KairuFocus en thème sombre : tâche en cours, objectif de sprints du jour, temps et série de focus


✨ Fonctionnalités

Module Description
☑️ Tasks Micro-tâches quotidiennes — ajout, modification, statut, lien Jira
🍅 Pomodoro Sessions de focus (sprint / pause courte / pause longue) avec chronomètre circulaire
📖 Journal Timeline d'activité quotidienne générée automatiquement + commentaires personnels
🎫 Tickets Intégration Jira Cloud — liste des tickets assignés, liaison avec les tâches
⚙️ Settings Thème clair/sombre/système, durées Pomodoro, credentials Jira
🔐 Auth Connexion via GitHub OAuth 2.0, JWT HS256, multi-utilisateurs

🛠️ Stack technique

  • Runtime : .NET 10
  • API : ASP.NET Core Web API
  • Web : Blazor WebAssembly
  • Mobile/Desktop : .NET MAUI (Blazor Hybrid) — Windows, Android, iOS, macOS
  • Orchestration : .NET Aspire 13.1
  • Base de données : SQLite + EF Core 10
  • Auth : GitHub OAuth 2.0 + JWT HS256
  • Tests : xUnit — 192 tests (Domain + Application)

🏛️ Architecture

Clean Architecture (Uncle Bob) + DDD, avec CQRS sans MediatR.

Domain          →  Entités, Value Objects, règles métier
Application     →  Commands / Queries / Handlers (CQRS)
Infrastructure  →  EF Core, SQLite, Jira API client
Api             →  Controllers ASP.NET Core, Auth JWT
Web / Maui      →  UI Blazor (WASM + Hybrid)

📐 Règle fondamentale : les dépendances ne pointent que vers l'intérieur. Le Domain ne connaît rien des couches externes.

src/
├── KairuFocus.Domain/          # 🧠 Bounded Contexts : Tasks, Pomodoro, Journal, Settings, Identity
├── KairuFocus.Application/     # ⚡ 30 use cases CQRS
├── KairuFocus.Infrastructure/  # 🗄️ EF Core + migrations + repositories
├── KairuFocus.Api/             # 🌐 REST API + GitHub OAuth + JWT
├── KairuFocus.Web/             # 💻 Blazor WASM
├── KairuFocus.Maui/            # 📱 .NET MAUI Blazor Hybrid
├── KairuFocus.AppHost/         # 🔭 Aspire orchestration
└── KairuFocus.ServiceDefaults/ # 📊 OpenTelemetry, health checks
tests/
├── KairuFocus.Domain.Tests/
├── KairuFocus.Application.Tests/
└── KairuFocus.Infrastructure.Tests/
docs/
├── spec.md                   # 📋 Spécification complète + ADR
└── project-state.md          # 📍 État de l'itération courante

⚡ Démarrage rapide

Prérequis

1️⃣ Configurer GitHub OAuth

Crée une OAuth App sur github.com/settings/developers :

Champ Valeur
Homepage URL http://localhost:5010
Authorization callback URL http://localhost:5205/signin-github

Puis renseigne les credentials dans src/KairuFocus.Api/appsettings.Development.json :

{
  "GitHub": {
    "ClientId": "<ton-client-id>",
    "ClientSecret": "<ton-client-secret>"
  },
  "WebBaseUrl": "http://localhost:5010",
  "Jwt": {
    "SecretKey": "une-clé-secrète-de-minimum-32-caractères",
    "ExpiryHours": 24
  }
}

⚠️ Ne jamais committer ce fichier avec de vraies valeurs.

2️⃣ Lancer l'application

Option A — Aspire (recommandé) : démarre API + Web + dashboard observabilité

dotnet run --project src/KairuFocus.AppHost/KairuFocus.AppHost.csproj --launch-profile http
Service URL
🔭 Dashboard Aspire http://localhost:15100
💻 Web app http://localhost:5010
🌐 API http://localhost:5205

Option B — Séparé

# Terminal 1 — API 🌐
dotnet run --project src/KairuFocus.Api/KairuFocus.Api.csproj --launch-profile http

# Terminal 2 — Web 💻
dotnet run --project src/KairuFocus.Web/KairuFocus.Web.csproj --launch-profile http

3️⃣ Lancer les tests

dotnet test
✅ Réussi! — 192 tests, 0 échec

🎫 Intégration Jira (optionnel)

Dans l'application → ⚙️ Paramètres → section Jira :

Champ Exemple
Base URL https://ton-domaine.atlassian.net
Email ton@email.com
API Token Généré sur id.atlassian.com/manage-profile/security/api-tokens

📚 Documentation


📄 Licence

Usage privé — projet personnel.

Releases

Packages

Contributors

Languages