본문 바로가기

Development/회고록

항해99 Chapter #1 - 1조 S.A(Starting Assignment)

개요

프로젝트

  • 프로젝트명 : Hello Word
  • 내용 : 코딩도 중요하지만, 개발자의 문서는 대부분 영어로 되어 있기에 영어 공부도 빠뜨릴 수 없다. 따라서, 간단하게 영어 단어를 암기할 수 있는 나만의 단어장개발을 프로젝트 주제로 선정하였다.

목표

  • 기본적인 웹개발 지식을 갖춘다(좁은 범위의 주제로 선정).
  • 팀으로 하나되어 서비스를 완성하는 경험을 쌓는다.
  • jinja2 템플릿 엔진을 이용한 서버사이드 렌더링을 구현하고, 장점을 파악한다.
  • JWT 인증 방식으로 로그인 기능을 구현하고, 세션/쿠키 방식과의 차이점 및 장단점을 파악한다.

팀원

Repository

Wireframes

로그인 페이지

회원가입 페이지

단어 리스트 페이지

API

회원가입 : POST /api/signup

const callback = {
    request: {
        body: {
            id: String,
            name: String,
            passwd: String
        }
    },
    response: {
        data: {
            ok: Boolean,
            message?: String
        }
    }
};

로그인 : POST /api/login

const callback = {
    request: {
        body: {
            id: String,
            passwd: String
        }
    },
    response: {
        data: {
            ok: Boolean,
            token: String,
            message?: String
        }
    }
};

단어목록 조회 : GET /api/words[?done=Boolean&star=Boolean]

const callback = {
    request: {
        query-string: {
            done?: Boolean,
            star?: Boolean
        }
    },
    response: {
        data: {
            words: [
                {
                    _id: str(ObjectId)
                    word: String,
                    mean: String,
                    done: Boolean,
                    star: Boolean
                }
            ],
            message?: String
        }
    }
};

단어 추가 : POST /api/words/new

const callback = {
    request: {
        body: {
            word: String,
            mean: String,
            done: Boolean,
            star: Boolean
        }
    },
    response: {
        data: {
            ok: Boolean,
            message?: String
        }
    }
};

단어 수정 : PUT /api/words/:_id

const callback = {
    request: {
        params: {
            _id: String(ObjectId)
        },
        body: {
            word?: String,
            mean?: String,
            done?: Boolean,
            star?: Boolean
        }
    },
    response: {
        data: {
            ok: Boolean,
            message?: String
        }
    }
};

단어 삭제 : DELETE /api/words/:_id

const callback = {
    request: {
        params: {
            _id: String(ObjectId)
        }
    },
    response: {
        data: {
            ok: Boolean,
            message?: String
        }
    }
};

Logic

회원가입

로그인

API 요청