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!
!Picrute will be here
- 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.
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!
- Create Group - you can create a group in order to organize the task's of everyone in one place!
- Create user - you can register in order to make yourself a user and login in order to access the team's task management system.
- Manage users - give different premissions to different users.
- Manage tasks - Create, update and task's content, update progress, and delete tasks (admin only).
- Track tasks - print in tasks different variations and options to make efficient tracking.
- Alert system - which will update the user who's the task is belong to by mail when deadline is coming near!
- Define roles - you can give admin access for some of the group's members inorder to have extra capabilities!
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).
- Clone the project to your machine with
git clone https://github.com/dorlib/todo-list-manager.git && cd todo-list-manager
. - download mysql and create new database (pay attention to give the connection string the right arguments).
- run
go install
- run
todo -v
In order to run the app using docker-compose (NOT RELAVENT for now, need to be aligned with the new architacture).:
- Clone the project to your machine with
git clone https://github.com/dorlib/todo-list-manager.git && cd todo-list-manager
. - Run
docker-compose buid && docker-compose up
. - Enjoy managing your tasks.
- Clone the project to your machine with
git clone https://github.com/dorlib/todo-list-manager.git
- Install Go on your machine from here.
- Install MySQL on your machine from here.
- On the root of the project, run the app with
go run main.go
- Run
go install
- Run in the command line
todo --help
and start manging your tasks! - Open http://localhost:3000 to manage your tasks on the web (IN PROGRESS).
In order to seed pre-made data, for quick testing the app, you can type the command todo seed
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!.
- Fork the repository to your own Github account.
- Clone the project to your machine.
- Create a branch locally with a succinct but descriptive name.
- Commit changes to the branch.
- Following any formatting and testing guidelines specific to this repo.
- Push changes to your fork.
- Open a Pull Request in my repository.
Dor Liberman (dorlib)
If you have any questions or feedback, I would be glad if you will contact me via mail.
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 ⭐