Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TaskManagerAPI

Overview

TaskManagerAPI is a backend application built using Go (Golang) to manage users, projects, and tasks. The API is designed to handle typical operations like creating, updating, deleting, and retrieving data for users, projects, and tasks. It uses PostgreSQL as the database and GORM as the ORM.

Features

  • User Management: Create, retrieve, update, and delete users.
  • Project Management: Create, retrieve, update, and delete projects.
  • Task Management: Create, retrieve, update, and delete tasks.
  • Relational Data: Projects belong to users, and tasks belong to projects.

Requirements

  • Go: Version 1.20 or higher
  • Docker: For containerized PostgreSQL and application
  • Make: To streamline project commands

Installation

  1. Clone the repository:

    git clone https://github.com/talyx/TaskManagerApi.git
    cd TaskManagerApi
  2. Start PostgreSQL using Docker:

    make up

    This will run PostgreSQL in a Docker container.

  3. Install dependencies:

    go mod tidy
  4. Start the application in debug mode:

    make run-debug
  5. Start the application in production mode:

    make run-production

    The server will run on http://localhost:8005 by default.

Makefile Commands

  • make up: Start PostgreSQL in a Docker container
  • make down: Stop and remove PostgreSQL container
  • make psql: To connect to a container with PostgreSQL and start an interactive psql session
  • make status: To check the status of a database container
  • make reset-db:: To reset database container
  • make run-debug: Run the application in debug mode
  • make run-production: Run the application in production mode

API Endpoints

Below are the available API endpoints for managing Users, Projects, and Tasks.


User Endpoints

MethodEndpointDescriptionRequest Body
POST/registerCreate a new user{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}
GET/usersRetrieve all users
GET/user/{id}Retrieve a user by ID
PUT/user/{id}Update a user by ID{ "names": "Jane Doe", "email": "jane.doe@example.com", "passwordhash": "newpassword"}
DELETE/user/{id}Delete a user by ID

Note: When creating a user, the passwordhash field should contain a securely hashed password.


Project Endpoints

MethodEndpointDescriptionRequest Body
POST/projectCreate a new project{ "name": "Project Alpha", "description": "This is the first project."}
GET/projectsRetrieve all projects
GET/project/{id}Retrieve a project by ID
PUT/project/{id}Update a project by ID{ "name": "Project Beta", "description": "Updated project description."}
DELETE/project/{id}Delete a project by ID

Note: The UserID is automatically associated with the authenticated user when creating a project.


Task Endpoints

MethodEndpointDescriptionRequest Body
POST/taskCreate a new task{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}
GET/tasksRetrieve all tasks
GET/task/{id}Retrieve a task by ID
PUT/task/{id}Update a task by ID{ "name": "Task Two", "description": "Updated task description."}
DELETE/task/{id}Delete a task by ID

Note: The ProjectID field is used to associate the task with a specific project.


Authentication

  • Authentication: Most endpoints require authentication. Use the /login endpoint to obtain a session or token.
  • Authorization: Ensure that the authenticated user has the necessary permissions to perform actions on resources.

Example curl Requests

Create a User

curl -X POST http://localhost:8005/register \
-H "Content-Type: application/json" \
-d '{ "names": "John Doe", "email": "john.doe@example.com", "passwordhash": "securepassword"}'

Authorization by a created user

curl -v -X POST http://localhost:8005/login \
-H "Content-type: application/json" \
-d '{"login":"john.doe@example.com", "password":"securepassword"}' \
-c cookies.txt

Get All Users

curl -X GET http://localhost:8005/users -b cookies.txt

Create a Project

curl -X POST http://localhost:8005/project \
-H "Content-Type: application/json" \
-d '{ "name": "Project Alpha", "description": "This is the first project."}' \
-b cookies.txt

Get All Projects

curl -X GET http://localhost:8005/projects -b cookies.txt

Create a Task

curl -X POST http://localhost:8005/task \
-H "Content-Type: application/json" \
-d '{ "title": "Task One", "description": "This is the first task.", "ProjectID": 1}' \
-b cookies.txt

Get All Tasks by project

curl -X GET http://localhost:8005/tasks/1 -b cookies.txt

About

TaskManagerAPI is a Go-based API for managing tasks and projects, utilizing GORM and PostgreSQL, with deployment capabilities via Docker Compose.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages