A modern full-stack Task Tracker application built with Next.js 14, TypeScript, .NET 8 Web API, and Neon PostgreSQL.
This project was built as a practical engineering assessment focusing on:
- clean architecture
- API-driven development
- responsive UI
- atomic design methodology
- real database integration
- maintainable code quality
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- NextAuth.js
- React Hooks
- ASP.NET Core Web API (.NET 8)
- Entity Framework Core
- JWT Authentication
- Neon PostgreSQL
- ESLint
- Prettier
- SonarJS
- JSX Accessibility Plugin
- User registration
- User login
- Protected routes
- JWT-based authentication
- Session handling with NextAuth
- Create tasks
- Edit tasks
- Delete tasks
- Update task status
- Set task priority
- Due date support
- Task statistics overview
- Overdue task highlighting
- Status summary cards
- Fully responsive
- Mobile-friendly
- Atomic component architecture
- Accessible form controls
frontend/
│
├── app/
│ ├── auth/
│ ├── dashboard/
│ ├── tasks/
│ ├── api/
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
│
├── components/
│ ├── atoms/
│ ├── molecules/
│ ├── organisms/
│ └── templates/
│
├── lib/
├── types/
├── public/
│
└── package.json
backend/
│
├── Controllers/
├── Data/
├── DTOs/
├── Models/
├── Services/
├── Migrations/
├── Program.cs
│
└── appsettings.Development.json
Small reusable UI components:
- Button
- Input
- Badge
- Avatar
Combined UI units:
- TaskCard
- SearchBar
- FormField
Complex sections:
- TaskBoard
- Navbar
- Sidebar
- DashboardStats
Page layout wrappers:
- DashboardLayout
- AuthLayout
NEXTAUTH_SECRET=
NEXTAUTH_URL=
NEXT_PUBLIC_API_URL=
API_URL={
"ConnectionStrings": {
"DefaultConnection": ""
},
"Jwt": {
"Key": "",
"Issuer": "",
"Audience": ""
}
}git clone <repository-url>cd frontend
npm installCreate:
.env.localAdd environment variables.
Run frontend:
npm run devFrontend runs on:
http://localhost:3000
cd backend
dotnet restoreAdd database connection string inside:
appsettings.Development.json
Run migrations:
dotnet ef database updateRun backend:
dotnet runBackend runs on:
https://localhost:5001
Swagger:
https://localhost:5001/swagger
This project uses:
- Neon PostgreSQL
- Entity Framework Core
- Code-first migrations
Main tables:
- Users
- Tasks
Relationships:
- One user → many tasks
npm run dev
npm run build
npm run lintdotnet run
dotnet ef migrations add InitialCreate
dotnet ef database updateUser Login
↓
.NET API validates credentials
↓
JWT Token generated
↓
NextAuth stores session
↓
Protected pages use session token
Next.js Frontend
↓
.NET Web API
↓
Neon PostgreSQL
The frontend never communicates directly with the database.
The application supports:
- Desktop
- Tablet
- Mobile devices
Responsive layouts implemented using Tailwind CSS.
This project includes:
- ESLint
- Prettier
- SonarJS rules
- Accessibility linting
- Strict TypeScript
- Vercel
- Render / Railway
- Neon PostgreSQL
- No secrets committed to Git
- JWT authentication implemented
- Environment variables protected
- Database credentials excluded from repository
- No drag-and-drop task movement yet
- Basic authentication only
- No email verification
- No task attachments
- Drag-and-drop Kanban board
- Real-time updates
- Notifications
- Role-based access
- Dark mode
- Task labels/tags
Developed as a full-stack engineering practical assessment project using:
- Next.js
- .NET
- PostgreSQL
- TypeScript