📘 Read this in: 🇹🇷 | 🇬🇧 English
TaskSphere is a personal project and task management platform built with a clean, secure, and modular NestJS architecture.
It allows each user to manage their own project and organize tasks efficiently .
| Layer | Technology |
|---|---|
| Backend Framework | NestJS (TypeScript) |
| ORM / Database | Sequelize + PostgreSQL |
| Authentication | JWT (Server-side token management) |
| Documentation | Compodoc |
| Testing | Jest (planned) |
| Runtime Env | Node.js v18+ |
| Containerization (optional) | Docker |
- Controller → Handles HTTP routes (
/project,/task) - Service → Contains business logic and data flow
- Repository → Manages database operations (Sequelize)
- Entity (Model) → Represents database tables
- Guard → Handles authentication and authorization
- The user registers or logs in.
- The JWT token is managed server-side.
- A user can create only one project at a time.
- The user can add, complete, or delete tasks within their project.
- All routes are protected by guards (
GuardJwtAuth,GuardShouldBeOwnerOfReq).
- A user cannot register twice with the same email.
- When a user is deleted, all their projects and tasks are removed as well.
- Each user can own only one project.
- If a project already exists, return
409 Conflict. - Projects can be updated or deleted only by their owner.
- Deleting a project cascades and removes related tasks.
- Each task must belong to a project.
- Tasks can be created only by the project owner.
- Task states:
pending,done. - Only the project owner can modify or delete tasks.
- All requests are protected by
GuardJwtAuth. - Ownership is enforced by
GuardShouldBeOwnerOfReq. - Tokens are verified server-side (no localStorage usage).
User (1) ─── (1) Project (1) ─── (*) Task
| Entity | Field | Type |
|---|---|---|
| User | id, email, password | PK |
| Project | id, ownerId (FK→User), title, description | PK+FK |
| Task | id, projectId (FK→Project), title, status | PK+FK |
- Multi-project support (1 user → N projects)
- Team collaboration and shared access
- Task comments and attachments
- Real-time updates via WebSockets
- Automated testing and CI/CD integration
# Install dependencies
npm install
# Configure your environment file
# cp .env.example .env
# Start development server
npm run start:dev
http://localhost:3000/