- Language: Node v14+
- Database: MongoDB
- ORM: MongoDB Native Driver
- Library: UUID and MongoDB ObjectID to generate unique IDs.
-
User:
- name (String, required)
- email (String, required, unique)
- password (String, required)
-
Projects:
- name (String, required)
- description (String, required)
- userId (ObjectId, required, reference to User)
-
Tasks:
- name (String, required)
- description (String, required)
- projectId (ObjectId, required, reference to Project)
- logTime (Array of Objects)
- taskName (String, required)
- logTime (Object)
- hours (Number, required)
- minutes (Number, required)
-
Time-entries:
- projectId (ObjectId, required, reference to Project)
- taskId (ObjectId, required, reference to Task)
- userId (ObjectId, required, reference to User)
- date (Date, required)
- startTime (String, required)
- endTime (String)
- timeSpent (Object)
- hours (Number, required)
- minutes (Number, required)
- tasks (Array of ObjectId, reference to Task)
- billed (Boolean, default: false)
- billable (Boolean, default: false)
-
User Collection:
- POST /v1/auth/signup: Create a new user.
- POST /v1/auth/signin: Sign in an existing user.
- GET /v1/auth/me: Get the user information for the authenticated user.
-
Project Collection:
- POST /v1/projects: Create a new project.
- GET /v1/projects: Get all projects.
-
Task Collection:
- POST /v1/tasks: Create a new task with associated log time.
- GET /v1/tasks: Get all tasks.
-
Time Entry Collection:
- POST /v1/time-entry: Create a new time entry.
- GET /v1/time-entry: Get all time entries.
- GET /v1/time-entry/:id/: Get a specific time entry by its ID.
- PUT /v1/time-entry/:id/choose-tasks: Choose a task for specific time entry by its ID.
- DELETE /v1/time-entry/:id/: Delete a specific time entry by its ID.