A lightweight, Jira-inspired task management web app: manage projects, track tasks on a Kanban board, organize work into epics, collaborate via comments, and get help from a built-in AI assistant.
Built as a university Web Services project with a .NET Aspire-orchestrated backend and a React frontend.
Backend — ASP.NET Core (.NET 10)
- Minimal API endpoints with API versioning (
Asp.Versioning) - CQRS via MediatR — commands & queries in vertical feature slices
- EF Core 10 (code-first) on PostgreSQL (
Npgsql) - JWT bearer authentication
- OpenAPI docs via Scalar / Swagger
- Redis output caching, OpenTelemetry instrumentation
Frontend — React 19 + TypeScript + Vite
- Tailwind CSS 4 with shadcn/ui + Radix primitives
- TanStack Query (server state) and Jotai (client state)
- React Router 7, dnd-kit (drag & drop board), Zod validation
Orchestration & Infrastructure
- .NET Aspire AppHost wires up the server, the Vite frontend, and a Redis cache
- PostgreSQL runs in Docker via
docker-compose - AI assistant backed by a local LM Studio model (OpenAI-compatible API)
- Task management — create, edit, delete tasks; set status, priority, and time estimates
- Kanban board — drag tasks across status columns
- Epics — group related tasks under epics
- Projects — project ownership and membership, per-project task views
- Comments — collaborate on individual tasks
- Authentication & roles — sign up / login with JWT; Admin vs. regular users, role-based access
- AI assistant — ask in-app questions about your projects, tasks, and epics, or get general help (see
docs/arc.md)
The backend follows Onion Architecture with Repository Pattern, CQRS, MediatR,
and Vertical Slices. See docs/arc.md for the full write-up
including diagrams and the AI assistant design.
| Dashboard | Board |
|---|---|
![]() |
![]() |
| Project page | Epic management |
|---|---|
![]() |
![]() |
- .NET 10 SDK
- Node.js (LTS) — for the Vite frontend
- Docker — for the PostgreSQL database
- (optional) LM Studio with the local server enabled — for the AI assistant
Create a .env file next to src/MiniJiraAspire.Server/docker-compose.yml
(this file is git-ignored):
POSTGRES_USER=<user>
POSTGRES_PASSWORD=<password>
POSTGRES_DB=<db-name>
ConnectionStrings__DefaultConnection=Host=localhost;Port=<port>;Database=<db-name>;Username=<user>;Password=<password>
Then start Postgres:
cd src/MiniJiraAspire.Server
docker compose up -dMigrations are applied (and seed data inserted) automatically on server startup.
See src/MiniJiraAspire.Server/README.md
for manual EF Core migration commands.
From the repository root:
dotnet run --project src/MiniJiraAspire.AppHostThe Aspire AppHost starts the backend, the React frontend, and the Redis cache, and exposes the Aspire dashboard with links to every service.
docs/ Architecture docs & use-case PDF
src/
MiniJiraAspire.AppHost/ .NET Aspire orchestration
MiniJiraAspire.Server/ ASP.NET Core backend (API, MediatR, EF Core, Chatbot)
MiniJira.Test/ Unit tests
MiniJira.IntegrationTests/ Integration tests
frontend/ React + Vite frontend
- Architecture:
docs/arc.md - Use cases:
docs/Mini_Jira_UseCases_EN.pdf



