Trello 클론 프로젝트의 API 서버이다. 개발은 Node.js
의 express
를 사용했다.
- 회원 관리 기능
- 보드 CRUD
- 리스트 CRUD
- 카드 CRUD
- 댓글 기능
- Activity 생성 기능
- Model 정의
- Controller 정의
- Route 정의
- user - 로그인 / 화원가입
- user - 회원 비밀 번호 변경
- user - 비밀번호 찾기
- board - 보드 조회
- board - 보드 수정
- board - 보드 삭제
- board - 보드 추가
- board - 배경 색상 변경
- board - 멤버 리스트
- board - 멤버 추가
- board - 멤버 삭제
- list - 리스트 조회
- list - 리스트 추가
- list - 리스트 삭제
- list - 리스트 타이틀 수정
- list - 리스트 이동
- card - 카드 조회
- card - 카드 추가
- card - 카드 삭제
- card - 카드 수정
- card - 카드 이동
- comment - 댓글 조회
- comment - 댓글 추가
- comment - 댓글 수정
- comment - 댓글 삭제
- activity - 이벤트 로그 저장
- activity - 이벤트 로그 조회
User
{
uid: {
field: "uid",
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
allowNull: false
},
username: {
field: "username",
type: DataTypes.STRING(10),
allowNull: false,
},
password: {
field: "password",
type: DataTypes.STRING(100),
allowNull: false
},
email: {
field: "email",
type: DataTypes.STRING(50),
allowNull: false,
},
photo: {
field: "photo",
type: DataTypes.STRING(20),
allowNull: false
},
reset_code: {
field: "reset_code",
type: DataTypes.UUID,
allowNull: true
},
reset_code_expiredate: {
field: "reset_code_expiredate",
type: DataTypes.DATE,
allowNull: true
}
}
Board
{
bid: {
field: "bid",
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
allowNull: false
},
user_id: {
field: "user_id",
type: DataTypes.UUID,
allowNull: false,
},
title: {
field: "title",
type: DataTypes.STRING(30),
allowNull: false
},
bg_type: {
field: "bg_type",
type: DataTypes.ENUM,
values: ['image', 'color'],
defaultValue: 'color',
allowNull: false
},
background: {
field: "background",
type: DataTypes.STRING(100),
defaultValue: 'rgb(0, 121, 191)',
allowNull: false
}
}
List
{
lid: {
field: "lid",
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
allowNull: false
},
bid: {
field: "bid",
type: DataTypes.UUID,
allowNull: false,
},
title: {
field: "title",
type: DataTypes.STRING(30),
allowNull: false
},
position: {
field: "position",
type: DataTypes.DOUBLE,
allowNull: false,
defaultValue: 65535
}
}
Card
{
cid: {
field: "cid",
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
allowNull: false
},
lid: {
field: "lid",
type: DataTypes.UUID,
allowNull: false,
},
title: {
field: "title",
type: DataTypes.STRING(30),
allowNull: false
},
description: {
field: "description",
type: DataTypes.STRING(500),
allowNull: true
},
position: {
field: "position",
type: DataTypes.DOUBLE,
allowNull: false,
defaultValue: 65535
}
}
Comment
{
comment_id: {
field: "comment_id",
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
allowNull: false
},
uid: {
field: "uid",
type: DataTypes.UUID,
allowNull: false,
},
cid: {
field: "cid",
type: DataTypes.UUID,
allowNull: false
},
comment: {
field: "comment",
type: DataTypes.STRING(50),
allowNull: false
}
}
Activity
{
activity_id: {
field: "activity_id",
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
allowNull: false
},
type: {
field: "type",
type: DataTypes.ENUM,
values: ['move', 'add', 'delete', 'edit', 'comment'],
allowNull: false,
},
bid: {
field: "bid",
type: DataTypes.UUID,
allowNull: false,
},
uid: {
field: "uid",
type: DataTypes.UUID,
allowNull: false
},
cid: {
field: "cid",
type: DataTypes.UUID,
allowNull: true
},
message: {
field: "message",
type: DataTypes.STRING(300),
allowNull: false,
}
}