Categorygithub.com/surajeet310/bugit-go-server
module
0.0.0-20220422125319-69c30cdb753a
Repository: https://github.com/surajeet310/bugit-go-server.git
Documentation: pkg.go.dev

# README

Bugit-Server

Bugit is an android based application, which provides solutions to manage virtual workspaces, projects and assign and track bugs for the same.
The REST Api is written in Gin, a framework of Golang and is deployed on Heroku. The Api uses RDBMS (Postgresql) to organize and store data.

API Documentation

Base Url

https://bugit-server.herokuapp.com/

Database schema

There exist 9 relational tables as listed below :

  • Users
  • Workspaces
  • Projects
  • Tasks
  • Requests
  • Workspace-Members
  • Project-Members
  • Task-members
  • Task-comments

API endpoints

The responses and requests are in JSON format . Unique identifiers, in all the tables are of the data type UUID4 . JWT (JSON Web Token) is used for authentication .

Data Types of columns
(project_count, member_count, priority, alert) - int
(name,descp, deadline, created_at, user_name, requestee, email, tech, comment) - string
(is_taken, is_admin, is_assignee) - bool
(assignee, assigned_to) - uuid

Non-Auth endpoints (Base url/open)

EndpointMethodRequestResponse
/registerPOST{"fname":"","lname":"","email":"","password":""} {"response":"success","result":null}
/loginPOST"email":"","password":""}{"response":"success","result":token}

Auth endpoints (Base url/auth)

  1. Workspaces

    Response Data Types
    {"w_id" :  , "name" : "" , "project_count" :  ,"member_count" : } - home
    
    {"w_id" : ,"name" : "","descp" : "","project_count" : ,"member_count" : ,"created_at" : ""} - workspace
    
    {"p_id" : ,"name" : "","task_count" : ,"member_count" : } - project
    
    {"user_id" : ,"is_admin" : ,"is_taken" : ,"user_name" : ""} - workspaceMembers
    
    {"user_id" : ,"is_admin" : ,"is_taken" : false, "user_name" : ""} - allWorkspaceMembers
    
    {"req_id" : ,"w_id" : ,"user_id" : , "requestee" : "", "priority" : } - request
    
    Request Data Types
    {"user_id" : "","name" : "","descp" : "", "created_at" : ""} - addWorkspaceStruct
    
    {"w_id" : "","email" : "","requestee_id" : ""} - addWorkspaceMemberReqStruct
    
    {"req_id" : ""} - addWorkspaceMemberStruct
    
    {"w_id" : "", "user_id" : ""} - makeUserAdminStruct
    
    EndpointMethodRequest Body/Query ParamsResponse
    /homeGETuser_id = {"response" : "success","result" : [ home ]}
    /home/workspaceGETworkspace_id = {"response" : "success","result" : { workspace, [ project ] }}
    /workspaceMembersGETworkspace_id = & project_id = {"response" : "success","result" : [ workspaceMembers ]}
    /allWorkspaceMembersGETworkspace_id = {"response" : "success","result" : [ allWorkspaceMembers ]}
    /requestsGETuser_id = {"response" : "success","result" : [ request ]}
    /addWorkspacePOSTaddWorkspaceStruct{"response" : "success","result" : null}
    /addWorkspaceMemberReqPOSTaddWorkspaceMemberReqStruct{"response" : "success","result" : null}
    /addWorkspaceMemberPOSTaddWorkspaceMemberStruct{"response" : "success","result" : null}
    /makeUserAdminPOSTmakeUserAdminStruct{"response" : "success","result" : null}
    /deleteWorkspaceDELETEworkspace_id = {"response" : "success","result" : null}
    /removeWorkspaceMemberDELETEworkspace_id = & user_id = {"response" : "success","result" : null}
  2. Projects

    Response Data Types
    {"p_id" : ,"name" : "", "descp" : "", "task_count" : ,"member_count" : ,"created_at" : "", "deadline" : "", "tech" : ""} - project
    
    {"t_id" : , "name" : ""} - task
    
    {"user_id" : ,"is_admin" : ,"is_assigned" : ,"user_name" : ""} - projectMembers
    
    {"user_id" : ,"is_admin" : ,"is_assigned" : false ,"user_name" : ""} - allProjectMembers
    
    Request Data Types
    {"w_id" : "", "user_id" : "", "name" : "", "descp" : "", "created_at" : "", "tech" : "", "deadline" : "" } - addProjectStruct
    
    {"p_id" : "", "user_id" : ""} - addProjectMemberStruct
    
    { "p_id" : "", "user_id" : ""} - makeProjectMemberAdminStruct
    
    EndpointMethodRequest Body/Query ParamsResponse
    /projectGETproject_id = {"response" : "success","result" : { project, [ task ] } }
    /projectMembersGETproject_id = & workspace_id = {"response" : "success","result" : [projectMembers] }
    /allProjectMembersGETproject_id = {"response" : "success","result" : [allProjectMembers] }
    /addProjectPOSTaddProjectStruct{"response" : "success","result" : null }
    /addProjectMemberPOSTaddProjectMemberStruct{"response" : "success","result" : null }
    /makeProjectUserAdminPOSTmakeProjectMemberAdminStruct{"response" : "success","result" : null }
    /deleteProjectDELETEproject_id = {"response" : "success","result" : null }
    /removeProjectMemberDELETEuser_id = & project_id = {"response" : "success","result" : null }
  3. Tasks

    Response Data Types
    {"t_id" : , "p_id" : ,"name" : "", "descp" : "", "assignee" : ,"assigned_to" : ,"created_at" : "", "deadline" : "", "tech" : ""} - task
    
    {"tc_id" : , "t_id" : , "user_id" : , "comment" : "", "created_at" : } - taskComment
    
    Request Data Types
    {"p_id" : "", "name" : "", "descp" : "", "assignee" : "", "created_at" : "", "deadline" : "", "tech" : "" } - addTaskStruct
    
    {"t_id" : "", "user_id" : "", "comment" : "", "created_at" : "" } - addCommentStruct
    
    {"t_id" : "", "user_id" : "" } - assignTaskStruct
    
    EndpointMethodRequest Body/Query ParamsResponse
    /taskGETtask_id = {"response" : "success","result" : { task, [ taskComment ] } }
    /addTaskPOSTaddTaskStruct{"response" : "success","result" : null }
    /addComentPOSTaddCommentStruct{"response" : "success","result" : null }
    /assignTaskPOSTassignTaskStruct{"response" : "success","result" : null }
    /deleteTaskDELETEtask_id = {"response" : "success","result" : null }
  4. Users

    Response Data Types
    {"email" : "", "fname" : "", "lname" : "", "alert" : } - user
    
    Request Data Types
    {"user_id" : "", "password" : "" } - checkPwdStruct
    
    {"user_id" : "", "fname" : "" } - changeFnameStruct
    
    {"user_id" : "", "lname" : "" } - changeLnameStruct
    
    {"user_id" : "", "password" : "" } - changePasswStruct
    
    EndpointMethodRequest Body/Query ParamsResponse
    /userGETuser_id = {"response" : "success","result" : user }
    /getUserIdGET{"response" : "success","result" : user_id }
    /checkPwdPOSTcheckPwdStruct{"response" : "success","result" : null }
    /changeFnamePATCHchangeFnameStruct{"response" : "success","result" : null }
    /changelnamePATCHchangeLnameStruct{"response" : "success","result" : null }
    /changePwdPATCHchangePasswStruct{"response" : "success","result" : null }
    /deleteUserDELETEuser_id = {"response" : "success","result" : null }

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author