PomTracker

App screenshot

Live App

https://pomtracker.haydenhw.com/

Summary

A pomodoro timer with integrated time tracking. This app was built with my own use in mind as I struggled to find an existing solution to manage my break schedules and track time simultaneously. I use this app all day every day to manage my pomodoro sessions and keep my weekly productivity goals on track.

Technologies

  • React
  • Redux
  • Redux-Form
  • SCSS
  • Node
  • Express
  • PostgreSQL
  • Knex
  • Mocha
  • Heroku

API Docs

Get projects

GET /api/projects

Successful response

[
    {
        "id": 1,
        "user_id": "VhwVEJzJe",
        "client_id": "DYVnBHuiU",
        "project_name": "Learn Django",
        "date_created": "2020-05-05T12:06:17.587Z",
        "tasks": [
            {
                "id": 2,
                "client_id": "gNAimlOFBi",
                "user_id": "VhwVEJzJe",
                "task_name": "Build Todo App",
                "recorded_time": 0,
                "project_id": 1,
                "date_created": "2020-05-05T12:06:17.768Z"
            },
            {
                "id": 1,
                "client_id": "q2SmUAJbM9",
                "user_id": "VhwVEJzJe",
                "task_name": "Read Docs",
                "recorded_time": 4,
                "project_id": 1,
               "date_created": "2020-05-05T12:06:17.768Z"
            }
        ]
    }
]

Create project

POST /api/projects

Example request body

{
    "project_name": "Learn Django",
    "user_id": "VhwVEJzJe",
    "client_id": "2ozMBvtbu",
    "tasks": []
}

Update project

PATCH /api/projects/:projectId

Example request body

{ 
    "task_name": "Read Docs",
    "recorded_time": 600
}

Delete project

DELETE /api/projects/:projectId

Tasks

Create task

POST /api/tasks

Example request body

{
   "task_name": "Build Todo App",
   "key": "Sanvq9Vpf",
   "recorded_time": 0,
   "client_id": "WC0sRWkkoI",
   "should_delete": false,
   "user_id": 2,
   "project_id": 2
}

Update task

PATCH /api/tasks/:taskId

Example request body

{ 
    "task_name": "Read Docs",
    "recorded_time": 600
}

Delete task

DELETE /api/tasks/:taskId