Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

165 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

████████╗ █████╗ ███████╗██╗  ██╗     ██████╗ ███████╗███╗   ██╗██╗██╗  ██╗
╚══██╔══╝██╔══██╗██╔════╝██║ ██╔╝    ██╔════╝ ██╔════╝████╗  ██║██║╚██╗██╔╝
   ██║   ███████║███████╗█████╔╝     ██║  ███╗█████╗  ██╔██╗ ██║██║ ╚███╔╝ 
   ██║   ██╔══██║╚════██║██╔═██╗     ██║   ██║██╔══╝  ██║╚██╗██║██║ ██╔██╗ 
   ██║   ██║  ██║███████║██║  ██╗    ╚██████╔╝███████╗██║ ╚████║██║██╔╝ ██╗
   ╚═╝   ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝     ╚═════╝ ╚══════╝╚═╝  ╚═══╝╚═╝╚═╝  ╚═╝

🚀 TaskGenix Backend

Let AI Handle The Notes — You Lead The Work.

.NET PostgreSQL Docker JWT

A modular, extensible .NET 8 backend for an AI‑assisted collaborative workspace

Empowering teams with intelligent project management, smart task generation, and seamless collaboration


┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                    🗂️  TABLE OF CONTENTS                                        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Contents

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                      🌟 FEATURES                                                ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🎯 Core Capabilities

  • 🏢 Workspaces / Projects - Ownership, members, roles: Owner, Member, Viewer
  • 📝 Smart Task Generation - AI-assisted task creation (TaskGen) with status, priority, due dates & reminder config
  • 🔐 User Authentication - JWT + refresh tokens + OTP flow + device tokens
  • 💳 Subscription Management - Quota tracking (Plans, PlanFeatures, UserPlans, UserPlanFeatures)
  • 💰 Payment Integration - Transaction scaffold (PayOS integration placeholder)
  • 🔔 Notification System - Scheduled, per-task, multi-channel ready
  • 🎙️ Recording Entity - Voice meeting capture (future transcription / summarization)

🏗️ Technical Excellence

  • 🧩 Clean Architecture - Separation of layers (Core / DAL / BLL / Server / AI)
  • 🔄 DTO Projection - Via Mapster (prevents circular references)
  • ✅ Centralized Validation - Consistent API responses
  • 🔒 Transaction-Safe Operations - Unit of Work pattern
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                    🏗️ ARCHITECTURE                                              ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

📁 Project Structure

TaskGenix-BE/
├── 🎯 TaskGenix.Core      # Domains, DTOs, Requests, Responses, Mappings, Validators, Meta
├── 🗄️ TaskGenix.DAL       # EF Core DbContext, Configurations, Migrations
├── ⚙️ TaskGenix.BLL       # Business Services, Interfaces, Transaction wrappers
├── 🌐 TaskGenix.Server    # ASP.NET Core Web API Host (Controllers, DI, Program)
├── 🤖 TaskGenix.AI        # (Future) AI orchestration / pipelines
├── 🧪 TaskGenix.Tests.Unit
└── 🔬 TaskGenix.Tests.Integration

🎨 Design Patterns

  • 🏛️ Repository + Unit of Work - Clean data access abstraction
  • 📦 DTO-first Controllers - Consistent API contracts
  • 🔄 Mapster Mapping Registry - High-performance object mapping
  • 🛡️ Middleware-based Exception Handling - Centralized error management
  • ✅ Custom Model Validation - Enhanced input validation
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                📊 DOMAIN MODEL OVERVIEW                                          ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
🏢 Area 📋 Key Entities
👤 Users & Auth User, JwtToken, OtpCode, UserSetting
🏢 Workspaces Project, ProjectMember, Recording
📝 Tasks TaskGen, TaskAssignment, TaskReminderConfig
💳 Plans & Billing Plan, PlanFeature, UserPlan, UserPlanFeature, PaymentTransaction
🔔 Notifications Notification, UserDeviceToken
🤖 AI (Future) ModelPromting placeholder
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                    🛠️ TECH STACK                                                ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🚀 Core Technologies

  • 🔷 .NET 8 / C# 12 - Latest .NET ecosystem
  • 🌐 ASP.NET Core Web API - High-performance web framework
  • 🗄️ Entity Framework Core - PostgreSQL via Npgsql
  • ⚡ Mapster - High-performance object mapping
  • 🔐 JWT Authentication - Secure token-based auth with refresh tokens

🔧 Supporting Technologies

  • 🔥 Firebase Admin SDK - Push notification infrastructure
  • 📚 Swagger / Swashbuckle - API documentation
  • 💾 MemoryCache - In-memory caching
  • 💳 PayOS - Payment integration (placeholder)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                    🚀 QUICK START                                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

📋 Prerequisites

  • .NET 8 SDK - Latest version
  • PostgreSQL - Database instance
  • 🔥 (Optional) Firebase - Service account JSON firebase-service-account.json
  • 💳 (Optional) PayOS - Payment gateway credentials

📥 Clone Repository

git clone https://github.com/taskgenix/TaskGenix-BE.git
cd TaskGenix-BE

🔨 Build & Restore

dotnet restore
dotnet build
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                   ⚙️ CONFIGURATION                                             ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

📝 Configuration Setup

Add to appsettings.Development.json (sample):

{
  "ConnectionStrings": {
    "SupabaseConnection": "Host=localhost;Port=5432;Database=taskgenix;Username=postgres;Password=secret"
  },
  "Jwt": {
    "Issuer": "TaskGenix",
    "Audience": "TaskGenix.Client",
    "Key": "REPLACE_WITH_256BIT_SECRET_KEY",
    "AccessTokenMinutes": 30,
    "RefreshTokenDays": 7
  },
  "ApplyMigrations": true,
  "PayOS": {
    "ClientId": "...",
    "ApiKey": "...",
    "ChecksumKey": "..."
  }
}

🔥 Firebase Setup

Place Firebase credentials file at: TaskGenix.Server/firebase-service-account.json (if used).

🏷️ Environment Flags

🔑 Key 📝 Purpose
ApplyMigrations Auto apply EF migrations on startup (dev only)
Jwt.Key Symmetric signing key (must be strong)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                🔄 RUNNING & MIGRATION                                           ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🔄 Auto-Migration (Development)

Auto-migrate (dev): set ApplyMigrations=true.

📊 Manual Migration

dotnet ef migrations add InitSchema -p TaskGenix.DAL -s TaskGenix.Server
dotnet ef database update -p TaskGenix.DAL -s TaskGenix.Server

🚀 Run API Server

dotnet run --project TaskGenix.Server

📚 API Documentation

  • Swagger UI: https://localhost:7026/swagger
  • HTTP: Also available on :5009 as configured
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                   📡 API PATTERNS                                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

✅ Successful Responses

All successful responses follow this pattern:

{ 
  "message": "Operation successful", 
  "data": { /* payload */ } 
}

❌ Validation Failures (HTTP 422)

{
  "message": "Validation failed",
  "reason": "One or more model validation errors occurred",
  "errors": ["fieldName: The field fieldName is required."]
}

🔐 Authentication

Include JWT token in requests:

Authorization: Bearer <access_token>
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                   📋 EXAMPLE JSON                                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🏢 Project Response (trimmed)

{
  "id": "5f3c...",
  "name": "Workspace Alpha",
  "status": "Active",
  "type": "Team",
  "ownerId": "9d1a...",
  "members": [ 
    { 
      "user": { "id": "u1", "username": "alice" }, 
      "role": "Owner", 
      "joinedAt": "2024-01-01T00:00:00Z" 
    } 
  ],
  "taskGens": [ 
    { 
      "id": "t1", 
      "title": "Prepare brief", 
      "status": "Pending", 
      "priority": 1 
    } 
  ]
}

📝 Task Response (trimmed)

{
  "id": "t1",
  "title": "Prepare brief",
  "status": "Pending",
  "priority": "Medium",
  "dueDate": "2024-12-01T12:00:00Z",
  "assignments": [ 
    { 
      "assignedUser": { "id": "u1", "username": "alice" }, 
      "assignedAt": "2024-11-20T09:00:00Z" 
    } 
  ]
}
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                    🤖 AI ROADMAP                                                ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🎯 Planned AI Capabilities

  • 🎙️ Auto Task Extraction - From meeting transcripts
  • 📝 Smart Summarization - Recordings & task clustering
  • ⭐ Priority Scoring - Using embeddings for relevance
  • 📊 Quota Enforcement - Per plan across AI features
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                     🧪 TESTING                                                  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🚀 Run All Tests

dotnet test

🎯 Test Coverage

  • 🧪 Unit Tests - Individual component testing
  • 🔬 Integration Tests - End-to-end scenarios
  • ➕ Extensible - Add scenarios for new services / controllers
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                   🤝 CONTRIBUTION                                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

🔄 Contribution Workflow

  1. 🍴 Fork repository
  2. 🌿 Create feature branch: git checkout -b feat/your-feature
  3. 💻 Commit changes: feat: short description
  4. 🚀 Push & open PR (reference issue if applicable)
  5. 🎯 Keep PRs focused & covered by tests

📋 Coding Guidelines

  • 🎯 Keep controllers thin - Push business rules to services
  • 📦 Always project to DTOs - For outward responses
  • 🔒 Use transactions - For multi-entity mutations
  • 🔄 Extend Mapster registrations - In TaskGenix.Core/Mappings
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                     📄 LICENSE                                                  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

📄 License Information

Add a LICENSE file (MIT recommended) – not yet included.


┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                                     │
│  ████████╗ █████╗ ███████╗██╗  ██╗     ██████╗ ███████╗███╗   ██╗██╗██╗  ██╗                      │
│  ╚══██╔══╝██╔══██╗██╔════╝██║ ██╔╝    ██╔════╝ ██╔════╝████╗  ██║██║╚██╗██╔╝                      │
│     ██║   ███████║███████╗█████╔╝     ██║  ███╗█████╗  ██╔██╗ ██║██║ ╚███╔╝                       │
│     ██║   ██╔══██║╚════██║██╔═██╗     ██║   ██║██╔══╝  ██║╚██╗██║██║ ██╔██╗                       │
│     ██║   ██║  ██║███████║██║  ██╗    ╚██████╔╝███████╗██║ ╚████║██║██╔╝ ██╗                      │
│     ╚═╝   ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝     ╚═════╝ ╚══════╝╚═╝  ╚═══╝╚═╝╚═╝  ╚═╝                      │
│                                                                                                     │
│                          🎯 "Let AI Handle The Notes — You Lead The Work." 🎯                      │
│                                                                                                     │
│                                    Happy building! 🚀                                              │
│                                                                                                     │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘

About

TaskGenix-BE

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages