Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arizdn234/final-course-project-ttp
Task Tracker Plus is an extension of a previous assignment designed to help students manage their study schedules.
https://github.com/arizdn234/final-course-project-ttp
golang
Last synced: 7 days ago
JSON representation
Task Tracker Plus is an extension of a previous assignment designed to help students manage their study schedules.
- Host: GitHub
- URL: https://github.com/arizdn234/final-course-project-ttp
- Owner: arizdn234
- Created: 2024-08-28T12:24:54.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-08-28T12:25:02.000Z (3 months ago)
- Last Synced: 2024-09-15T08:57:12.286Z (2 months ago)
- Topics: golang
- Language: Go
- Homepage:
- Size: 1.33 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Task Tracker Plus
## Final Course Project - Task Tracker Plus
![Index Page](./assets/index.png)
### Description
**Task Tracker Plus** is an extension of a previous assignment designed to help students manage their study schedules. This application is built using the Go programming language (Golang) and implements **REST API** concepts along with **MVC (Model-View-Controller)** architecture. This is a **monolith** application, where the server, logic, database, and user interface are all integrated into one system.
### Features Highlight
#### Key Features Implemented:
1. **Backend Development (Server)**
- Developed and implemented **REST APIs** to manage **Users, Tasks, and Categories**, ensuring a structured approach to data handling.
- Integrated user authentication to secure access to features that require login.
- Implemented full CRUD (Create, Read, Update, Delete) operations for **tasks** and **categories**, with access control based on user roles.
- Utilized the `db/filebased` subpackage for file-based data management, offering simple and efficient data storage and retrieval solutions.2. **Frontend Development (Client)**
- Built the user interface using the **MVC (Model-View-Controller)** pattern to separate business logic from presentation.
- Developed **Login and Registration** pages for user authentication.
- Created a **Dashboard** page for users to view and manage their tasks and categories.
- Implemented **Task** and **Category** management features accessible from the user interface, allowing users to add, update, and delete entries easily.### REST API Endpoints
#### Server (Backend)
- **Users**
- **POST** `/user/register`: Register a new user.
- **POST** `/user/login`: Login to the application.
- **GET** `/user/tasks`: Retrieve a list of users with their tasks and categories.- **Tasks**
- **POST** `/task/add`: Add a new task.
- **GET** `/task/get/:id`: Retrieve task details by ID.
- **PUT** `/task/update/:id`: Update task information.
- **DELETE** `/task/delete/:id`: Delete a task.
- **GET** `/task/list`: Get a list of tasks.
- **GET** `/task/category/:id`: Get tasks by category ID.- **Categories**
- **POST** `/category/add`: Add a new category.
- **GET** `/category/get/:id`: Retrieve category details by ID.
- **PUT** `/category/update/:id`: Update category information.
- **DELETE** `/category/delete/:id`: Delete a category.
- **GET** `/category/list`: Get a list of categories.> **Note**: Users must be logged in to access the `task` and `category` endpoints.
#### Client (Frontend)
- **Index**
- The landing page of the application, accessible at `/`.- **Users**
- Display the login page at `/client/login`.
- Process user authentication at `/client/login/process` using the **POST** method.
- Display the registration page at `/client/register`.
- Process user registration at `/client/register/process` using the **POST** method.
- Logout users with the endpoint `/client/logout`.- **Dashboard**
- Display the user dashboard at `/client/dashboard`.- **Tasks**
- Display tasks at `/client/task`.- **Categories**
- Display categories at `/client/category`.- **Modal**
- Display modals at `/client/modal`.