Skip to content

ScafTeam/scaf-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scaf backend

開發方式

go mod init backend
go mod tidy
go run .

需要修改firbase的project ID、Web API Key及serviceAccount.json,其中project ID和Web API Key須放在config.txt中(格式如下),config.txt要在database資料夾中

Web API Key: 專案設定內查看
firbase project id: 專案設定內查看
serviceAccount.json: https://sharma-vikashkr.medium.com/firebase-how-to-setup-a-firebase-service-account--6a70bb6646

HotReload

gin -p 8081 -a 8000 run .

database/config.txt

{WEB KEY API}
{PROJECT ID}

middleware/key.txt

{JWT KEY}

RESTful API

⚠️ 注意 ⚠️: 網址前綴為 {app url}:{app port},最後面一定要 / 結尾。
⚠️ 注意 ⚠️: 所有欄位名稱首字母為小寫。

SignIn

POST /signin/

Request:

{
    "email": "[email]",
    "password": "[password]"
}

SignUp

POST /signup/

{
    "email": "[email]",
    "password": "[password]"
}

Forgot Password

POST /forgot/

{
    "email": "[email]"
}

Get User Data

GET /user/{user_email}/

Update User Data

Required JWT
PUT /user/{user_email}/

{
    "avatar": "[avatar base64]",
    "bio": "[bio]",
    "nickname": "[nickname]",
}

Update User Password

Required JWT
PUT /user/{user_email}/reset

{
    "oldPassword": "[old password]",
    "newPassword": "[new password]"
}

取得 Google 日曆授權 🚧 (施工中)

Required JWT
GET /user/{user_email}/calendar

Refresh ❌ (目前不可用)

Required JWT
POST /refresh/

Test (測試用)

GET /hello/

List User's Project

list user's project

GET /user/{user_email}/project/

Get Project

GET /user/{user_email}/project/{project_name}/

Create Project

Required JWT
POST /user/{user_email}/project/

{
    "name": "[project name]",
    "devTools": [],
    "devMode": "[waterfall|scrum]"
}

project name 不應包含 # \ ? % * : | " < >

Update Project

Required JWT
PUT /user/{user_email}/project/{project_name}/

{
    "devTools": [],
    "devMode": "[waterfall|scrum]"
}

Delete Project

Required JWT
DELETE /user/{user_email}/project/{project_name}/

List All repos

GET /user/{user_email}/project/{project_name}/repo/

Add Repo

Required JWT
POST /user/{user_email}/project/{project_name}/repo/

{
    "name": "[repo name]",
    "url": "[repo url]"
}

Update Repo

Required JWT
PUT /user/{user_email}/project/{project_name}/repo/

{
    "id": "[repo id]",
    "name": "[repo name]",
    "url": "[repo url]"
}

Delete Repo

Required JWT
DELETE /user/{user_email}/project/{project_name}/repo/

{
    "id": "[repo id]"
}

Create Kanban ❌ (目前不可用)

Required JWT
POST /user/{user_email}/project/{project_name}/kanban/

List Workflow

Required JWT
GET /user/{user_email}/project/{project_name}/kanban/

Add Workflow

Required JWT
POST /user/{user_email}/project/{project_name}/kanban/

{
    "name": "[workflow name]"
}

Update Workflow

Required JWT
PUT /user/{user_email}/project/{project_name}/kanban/

{
    "id": "[workflow ID]",
    "name": "[workflow name]"
}

Delete Workflow

Required JWT
DELETE /user/{user_email}/project/{project_name}/kanban/

{
    "id": "[workflow ID]"
}

Add Task

Required JWT
POST /user/{user_email}/project/{project_name}/kanban/task/

{
    "name": "[task name]",
    "workflowId": "[workflow ID]",
    "description": "[task description]"
}

Update Task

Required JWT
PUT /user/{user_email}/project/{project_name}/kanban/task/

{
    "id": "[task ID]",
    "name": "[task name]",
    "description": "[task description]"
}

Move Task

Required JWT
PATCH /user/{user_email}/project/{project_name}/kanban/task/

{
    "id": "[task ID]",
    "newWorkflowId": "[new workflow ID]"
}

Delete Task

Required JWT
DELETE /user/{user_email}/project/{project_name}/kanban/task/

{
    "id": "[task ID]",
}

Get Members

Required JWT
GET /user/{user_email}/project/{project_name}/member/

Add Member

Required JWT
POST /user/{user_email}/project/{project_name}/member/

{
    "email": "[member email]"
}

Delete Member

Required JWT
DELETE /user/{user_email}/project/{project_name}/member/

{
    "email": "[member email]"
}

Get Document

Required JWT
GET /user/{user_email}/project/{project_name}/docs/

Add Document

Required JWT
POST /user/{user_email}/project/{project_name}/docs/

{
    "title": "[doc title]",
    "content": "[doc content]"
}

Update Document

Required JWT
PUT /user/{user_email}/project/{project_name}/docs/

{
    "id": "[doc id]",
    "title": "[doc title]",
    "content": "[doc content]"
}

Delete Document

Required JWT
DELETE /user/{user_email}/project/{project_name}/docs/

{
    "id": "[doc id]"
}

firebase

測試帳號: test0@test.com / 123456

TODO List

  • 登入
  • 註冊
  • 登出
  • 忘記密碼
  • 創建專案
  • 取得目前使用者的專案
  • 刪除專案(只能由專案擁有者操作)
  • JWT登入驗證
  • JWT權限驗證
  • Refresh JWT token
  • 取得目前專案中的所有Repo
  • 增加Repo(只能由專案成員操作)
  • 刪除Repo(只能由專案成員操作)
  • 創建看板(在創建專案時同時創建專案看板,未檢查專案與看板是否一對一)
  • 取得看板
  • 新增看板任務(Todo, InProgress, Done)
  • 刪除看板任務(Todo, InProgress, Done)
  • 編輯看板任務(Todo, InProgress, Done)
  • 邀請加入專案
  • google日曆授權

Refactor list

  • 將 Request model

測試案例

欄位沒有正確輸入,例如缺少欄位等

創建專案名稱是否唯一

專案名稱不能有特殊字元

不能有 / \ ? % * : | \ " < >

沒有判斷 專案名稱是否存在

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •