A production-grade, Jira-style task management workspace built for fast-moving teams and hackathon execution.
GDG Taskboard is a full-stack task management platform that combines project ownership, task lifecycle management, team collaboration, and real-time dashboard analytics in a single clean UI.
It was built as part of the GDG Hackathon 2026 to demonstrate a production-quality, end-to-end web application using modern tools and best practices.
Hackathon teams and fast-moving engineering squads often lack lightweight tools that are:
- Easy to spin up β no complex enterprise setup
- Feature-rich β real task tracking, not just a to-do list
- Collaborative β comments, mentions, watchers, invitations
- Insightful β workload distribution, progress metrics, overdue tracking
GDG Taskboard fills this gap: it's a mini Jira that you can self-host in minutes.
- Register & login with JWT authentication
- Role-based access control (Admin, Manager, User, Viewer)
- Ownership and project-level access rules
- Secure password hashing with BCrypt
- Full CRUD with status, priority, due dates, and soft delete
- Pagination, filtering (status, assignee), and sorting
- Task assignment, status transitions (Todo β In Progress β Done)
- Optimistic concurrency with HTTP 409 conflict detection
- Project CRUD with member management and invitations
- Task comments with
@mentionsupport - Email & Slack/Teams webhook notifications on mentions
- Task activity history and audit log
- Checklists with drag-to-reorder, completion toggle, and progress summary
- Labels, attachments (upload/download), and task watchers
- Real-time metrics: total, active, completed, overdue tasks
- Tasks by status and priority breakdown
- Per-user workload distribution charts
- Redis-backed caching for performance
- Modern landing page with full responsive design (mobile + desktop)
- Kanban board view + table view toggle
- Skeleton loaders, empty states, and error states
- Debounced search with URL-synced query state
- Optimistic updates for fast interactions
Task-flow/
βββ Backend/ # .NET 9 Web API (ASP.NET Core)
β βββ Controllers/ # API controllers
β βββ Services/ # Business logic
β βββ Models/ # EF Core models
β βββ Data/ # DbContext & migrations
β βββ Middleware/ # Global error handling, logging
β βββ docker-compose.yml
βββ Backend.Tests/ # xUnit test project
βββ frontend/ # Next.js 16 (App Router)
β βββ app/ # Pages & routes
β βββ components/ # Reusable UI components
β βββ services/ # API client modules
β βββ store/ # Zustand state management
β βββ types/ # TypeScript types
βββ README.md
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, TypeScript, Tailwind CSS, Zustand, TanStack Query, Recharts |
| Backend | .NET 9, ASP.NET Core Web API, Entity Framework Core |
| Database | PostgreSQL |
| Cache | Redis |
| Auth | JWT Bearer Tokens |
| Notifications | SMTP Email, Slack Webhook, Teams Webhook |
| Testing | xUnit |
| Containerization | Docker, Docker Compose |
| CI/CD | GitHub Actions β Azure App Service |
- Docker & Docker Compose
- Node.js 20+ (for local frontend dev)
- .NET 9 SDK (for local backend dev)
git clone https://github.com/mukund58/GDG-Hackathon.git
cd GDG-Hackathoncd BackendCreate a .env file in the Backend/ directory:
# Required
POSTGRES_DB=gdgtaskboard
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_password
CONNECTION_STRING=Host=db;Port=5432;Database=gdgtaskboard;Username=postgres;Password=your_password
# Optional
REDIS_CONNECTION_STRING=redis:6379
FRONTEND_BASE_URL=http://localhost:3000
INVITATION_TOKEN_SECRET=your_secret_here
# SMTP (for email notifications)
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=your@email.com
SMTP_PASSWORD=your_smtp_password
SMTP_FROM_ADDRESS=no-reply@taskboard.dev
SMTP_FROM_NAME=GDG Taskboard
SMTP_USE_SSL=true
# Webhooks (optional)
SLACK_WEBHOOK_URL=https://hooks.slack.com/...
TEAMS_WEBHOOK_URL=https://outlook.office.com/webhook/...Start all services (API + PostgreSQL + Redis):
docker compose up --build| Service | URL |
|---|---|
| API | http://localhost:5000 |
| Swagger UI | http://localhost:5000/swagger |
Stop services:
docker compose down
# To also remove the database volume:
docker compose down -vcd frontendCreate a .env.local file:
NEXT_PUBLIC_API_BASE_URL=http://localhost:5000
NEXT_PUBLIC_API_PATH_PREFIX=/api/v1Install dependencies and start the dev server:
npm install
npm run devOpen http://localhost:3000 in your browser.
Backend:
# Ensure PostgreSQL is running and CONNECTION_STRING is set in your environment
dotnet run --project Backend/Backend.csprojRun tests:
dotnet test GDG-Hackathon.sln| Resource | Link |
|---|---|
| Backend API Reference | Backend/README.md |
| Frontend Dev Checklist | frontend/README.md |
| Swagger UI | http://localhost:5000/swagger (when running) |
| Contributing Guide | CONTRIBUTING.md |
| Code of Conduct | CODE_OF_CONDUCT.md |
POST /api/v1/auth/register
POST /api/v1/auth/login
GET /api/v1/dashboard
GET /api/v1/tasks?page=1&status=&assignedTo=&sortBy=
POST /api/v1/tasks
GET /api/v1/projects
POST /api/v1/projects
GET /api/v1/notifications
Full endpoint list available in Backend/README.md
This repo includes GitHub Actions workflows for continuous deployment to Azure App Service.
See Backend/README.md β Azure App Service CD for required secrets and deployment behavior.
Contributions are welcome! Please read CONTRIBUTING.md for guidelines on submitting pull requests.
This project is licensed under the GNU General Public License v3.0 β see LICENSE for details.