rookieand / kuagora Goto Github PK
View Code? Open in Web Editor NEWexpress, react를 활용한 대학생 전용 질의 응답 커뮤니티입니다.
Home Page: kuagora.vercel.app
express, react를 활용한 대학생 전용 질의 응답 커뮤니티입니다.
Home Page: kuagora.vercel.app
Jest 라이브러리 설치 및 활용으로 테스트 코드 작성 및 적용
기존 클라이언트 및 백엔드의 기능 테스트를 진행했던 방식은 정말로 단순 무식했다.
단순히 console.log 를 남발하는 것으로 기능이 정상적으로 작동하는지를 보았다니..
이제는 이러한 방식에서 벗어날 때다, Jest 라이브러리를 설치하고 이를 사용해보자.
WebSocket 연동 사전 작업
클라이언트 내 자체적인 API 유틸 함수 제작
서버와 클라이언트 간의 HTTP 통신을 수행할 API 함수를 제작해야 한다.
GET, POST, DELETE, PATCH (UPDATE) 네 개의 케이스에 대한 유틸 함수를 제작한다.
추가적으로 Axios 인스턴스를 설정하여 BaseURL, AxiosResponse를 핸들링하고 결과를 전처리하여 가공한다.
질문글에 포함된 좋아요 및 댓글 추가, 조회, 삭제 구현
질문글에 유저들이 누른 좋아요의 수량을 표기하고, 해당 유저도 좋아요를 누를 수 있도록 해야 함.
또한 기존에 좋아요를 눌렀던 경우 이를 UI에 반영하여 좋아요 유무에 대한 시각적 차이를 주어야 함.
서버 단에서는 좋아요 및 댓글 관련 Rest API를 구축하여 클라이언트에서 사용할 수 있도록 해야 함.
Husky, commitlint, lint-staged로 lint 작업과 commit convention 체크 자동화
ESLint와 commitlint를 돌려, 기준에 미달되었을 경우 commit을 거부하도록 해보자.
Husky 라이브러리를 적극 활용하여 git hooks에 대한 기초적인 사용법을 익혀보자.
게시글 수정 및 삭제 기능 추가
작성된 게시글을 수정하거나, 완전히 삭제하는 기능을 추가합니다.
메인 페이지 및 로그인 페이지 디자인 및 제작
질문글의 채택 / 미채택 여부에 따른 결과 값을 보여주도록 API를 설계
현재 질문글 목록 열람에는 채택과 미채택 여부와 관계 없이 모든 글을 나열시켜 보여주고 있음
이를 채택 / 미채택 / 둘 다 보여주도록 정렬 기준을 신설하여 사용자에게 제공해야 함.
또한 질문글 목록을 필터링할 때도, 시간 / 인기 순과 채택 여부에 따른 필터링을 지원하도록 해야 함.
질문글 목록 요청에 대한 Rest API 설계
질문글 목록 열람 및 신규 글 작성 페이지 제작
질문글에 특정 키워드를 달고, 이를 검색하는 기능을 구현
질문글에 최대 3개까지의 키워드를 달고, 이를 검색하여 찾을 수 있는 기능을 구현해야 함.
typeORM 기반 Entity 설계
DB Schema를 설계한 후, 이를 토대로 Entity 생성
각 Entity 별 Relation을 고려하여 Column Join 데코레이터 추가.
유저 및 게시글 관련 DB Schema를 설계하고, typeORM에 적용
ESLint가 정상적으로 작동함에 따라, 오류 처리가 된 코드를 수정.
기존의 ESLint를 설정을 잘못하여 Linter가 작동하지 않아 여러 문법 오류를 패싱했었음,
현재 정상적으로 ESLint가 작동하였고, 기준에 맞지 않는 코드를 전부 에러 처리하였음.
따라서 이를 일괄적으로 수정하고 Vercel에 정상적으로 Build 되도록 코드를 수정해야 함
메인 페이지의 레이아웃 구성을 유저 친화적으로 재구성
메인 페이지에 유저들이 가장 최근에 올린 글 및 인기 있는 글을 각각 8개 정도 추려서 보여주는 섹션 추가.
사이트 정보를 보여주는 컴포넌트의 경우 메인 페이지 하단에 넣음으로서 후순위로 보이도록 수정해야 함.
질문글 검색 바와 관련된 컴포넌트를 독립적인 레이아웃으로 설계해야 함.
현재 질문글의 경우 각 페이지 내의 state에 종속적인 형태를 취하고 있어 수정이 어려움.
따라서 검색 바 섹션의 경우 별도의 템플릿 혹은 컴포넌트 폴더로 분류하고 관련 로직을 몰아 넣아야 함.
또한 질문글, 검색 결과 페이지에서 검색 바를 기존보다 가시성을 더 좋게 배치해야 할 필요성이 있음.
클라이언트 및 서버에서 사용하는 API 와 관련된 타입 재정의 필요
현재 클라이언트 측에서 사용되는 API들이 너무 난잡하고, 타입의 재사용성이 크게 떨어짐
따라서 이를 해결하기 위해 서버에서 제공되는 데이터의 양식을 맞춰 타입을 재정의해야 함
클래스 상속을 통해 공통된 부분은 통일 시키되, 각기 다른 분야의 인터페이스는 독립적으로 설계
새로운 질문글을 저장할 경우 키워드가 DB에 저장되지 않는 문제를 수정해야 함.
로그인 시에만 접속 가능한 라우터 설계
JWT 토큰 발급, Social 로그인 구현
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.