Backend of a to-do app. Written in Go and utilizes Redis and PostgreSQL.

Justifications for Technology Stack


  • Redis is used to cache tasks
    • Users will likely view a task’s details frequently in a short span of time.
    • Note that only the tasks are cached, not the user data


  • PostgreSQL is used for long-term storage of tasks
    • There will be many different types of tasks
    • Object inheritance for these types of tasks beyond the standard task
    • e.g. expiring tasks, priority tasks, overdue tasks
  • User will have a one-to-many relationship with tasks



  • Install Redis, if not already installed
  • To install:
    • brew install redis
    • brew services start redis
    • redis-server /usr/local/etc/redis.conf
  • Check if Redis is running and its port:
    • ps -ef | grep redis
    • RedisCheck


  • Install Postgres, if not already installed
    • brew install postgresql
    • initdb /usr/local/var/postgres/
  • Start Postgres
    • sudo psql -U my_macosx_username postgres
    • brew services start postgresql
    • ALTER USER my_macosx_username PASSWORD 'new_password';
    • CREATE DATABASE todo_list;

Start Backend

  • To run the backend of the application, first clone the repository:
    • git clone https://github.com/psebaraj/gogetitdone.git
  • Navigate to the GoGetItDone directory
  • Build and run the application:
    • go run main.go


The Postman collection for testing the REST API functions can be found here:

To test:

  • Open Postman → Import → Link → Paste link from above → Import
  • Start backend, as described above


View Github