Skip to content

dorlib/todo-list-manager

Repository files navigation

TODO List Manager - For Managing And Tracking Your Daily Tasks

Hello everyone 👋
This is a task manager application which include a cli, and in the future also a UI for managing and tracking personal and group's tasks.
The app was built using Go, Cobra cli & GORM, nginx, Mysql, MongoDB and much more cool technologies!

The main purposes of the project are to gain more experience with golang and known & popular frameworks and technologies. Also practise clean code, SOLID principles of golang and microservices architacture, while building a real world solution.
In addition, gain experience and taste of what its like working with other team members on the same
codebase, working with git and with the technologies github has to offer like github workflows.

The CLI is written with "cobra" framework for CLI creation and managment, and GORM as an ORM library. The API gateway was implemented with nginx and the authorization & authentication service is using Oauth2. The main databases are MySQL and mongoDB (for account managment). In the future, we will continue to extend the app and create more features, and even a UI is planned!

Open Source? Yes! Issues pull request stars updated size

!Picrute will be here

Built With

  • Cobra As CLI framework.
  • viper Complete configuration solution for Go applications.
  • GORM As ORM library for Golang.
  • ngnix As API gateway.
  • oauth2 As authentication library.
  • go-pretty For printing pretty tables.
  • golangci-lint As golang linter in order to preserve our code's quality.

What the Application include?

The main entites in the app are : Tasks, Groups & Users. As you can see in the welcome page of the app, the main "things" you can do are : managing and tracking, so Let's cover the main features!

  1. Create Group - you can create a group in order to organize the task's of everyone in one place!
  2. Create user - you can register in order to make yourself a user and login in order to access the team's task management system.
  3. Manage users - give different premissions to different users.
  4. Manage tasks - Create, update and task's content, update progress, and delete tasks (admin only).
  5. Track tasks - print in tasks different variations and options to make efficient tracking.
  6. Alert system - which will update the user who's the task is belong to by mail when deadline is coming near!
  7. Define roles - you can give admin access for some of the group's members inorder to have extra capabilities!

pleae note the README file in the cmd directory of more info about the available commands & flags.

Microservices Architacture

services

Entity Relationship Diagram

Entity Relationship Diagram

Running the Application Yourself

Here's what needs to be done in order to get the app running locally on your machine (NOT RELAVENT for now, need to be aligned with the new architacture).

  1. Clone the project to your machine with git clone https://github.com/dorlib/todo-list-manager.git && cd todo-list-manager.
  2. download mysql and create new database (pay attention to give the connection string the right arguments).
  3. run go install
  4. run todo -v

Run docker containers using Docker-Compose:

In order to run the app using docker-compose (NOT RELAVENT for now, need to be aligned with the new architacture).:

  1. Clone the project to your machine with git clone https://github.com/dorlib/todo-list-manager.git && cd todo-list-manager.
  2. Run docker-compose buid && docker-compose up.
  3. Enjoy managing your tasks.

Or follow those steps:

  1. Clone the project to your machine with git clone https://github.com/dorlib/todo-list-manager.git
  2. Install Go on your machine from here.
  3. Install MySQL on your machine from here.
  4. On the root of the project, run the app with go run main.go
  5. Run go install
  6. Run in the command line todo --help and start manging your tasks!
  7. Open http://localhost:3000 to manage your tasks on the web (IN PROGRESS).

Seed data to your database

In order to seed pre-made data, for quick testing the app, you can type the command todo seed

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.

notise the "mission.txt" file in "public" directory to see futre features which planned to be added!.

How To Contribute

  1. Fork the repository to your own Github account.
  2. Clone the project to your machine.
  3. Create a branch locally with a succinct but descriptive name.
  4. Commit changes to the branch.
  5. Following any formatting and testing guidelines specific to this repo.
  6. Push changes to your fork.
  7. Open a Pull Request in my repository.

Creator / Maintainer

Dor Liberman (dorlib)

If you have any questions or feedback, I would be glad if you will contact me via mail.

Connect via Email

This project was created for educational purposes, for personal and open-source use.

If you like my content or find my code useful, give it a ⭐

About

Simple todo list manager CLI written in golang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published