프로젝트 기획: 자유로운 사람들을 위한 취미 공유 뉴스피드 웹 구현하기
개발 언어
라이브러리
각 언어 및 라이브러리 정보는 공식 문서를 참고하였습니다.
React
React Router
Redux
Styled components
yarn을 사용하여 동일한 개발환경을 유지하였습니다.
CRA으로 프로젝트 생성 : yarn create react-app [project]
패키지 설치
yarn add react-router-dom
yarn add redux react-redux
yarn add styled-components
src
┣ assets
┃ ┣ default-post.jpeg
┃ ┣ default-profile.jpeg
┃ ┗ header-logo.png
┣ components
┃ ┣ CarouselCard.jsx
┃ ┣ Fileupload.jsx
┃ ┣ HeaderNav.jsx
┃ ┣ Login.jsx
┃ ┣ Modal.jsx
┃ ┣ PostCarousel.jsx
┃ ┣ PostForm.jsx
┃ ┣ ProfileBox.jsx
┃ ┣ ProfileFigure.jsx
┃ ┣ TabNavigation.jsx
┃ ┣ TopicPostList.jsx
┃ ┣ UserPostList.jsx
┃ ┗ socialLogin.jsx
┣ context
┣ pages
┃ ┣ Detail.jsx
┃ ┣ Home.jsx
┃ ┣ Mypage.jsx
┃ ┣ Topic.jsx
┃ ┗ Write.jsx
┣ redux
┃ ┣ config
┃ ┃ ┗ configStore.js
┃ ┗ modules
┃ ┃ ┣ auth.js
┃ ┃ ┣ posts.js
┃ ┃ ┣ topics.js
┃ ┃ ┗ user.js
┣ shared
┃ ┣ Layout.jsx
┃ ┗ Router.jsx
┣ App.jsx
┣ GlobalStyle.js
┣ firebase.js
┗ index.jsx
/** @type {import("prettier").Config} */
const config = {
trailingComma: 'es5',
tabWidth: 2,
semi: false,
singleQuote: true,
}
module.exports = config
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
}
dev 파일을 default로 설정하고, 각자의 기능 브랜치를 만들어 PR 하였고
기능 브랜치는 크게 feature/home, feature/topic, feature/detail, feature/write, feature/login으로 나눴습니다.
후에 배포할 때 dev에서 main으로 PR하여 사용했습니다.
Firebase 에서 데이터베이스를 구성하고 관리하였습니다.
순서 : Firebase console 이동 > 프로젝트 생성 > cloud Firestore에서 데이터 베이스 만들기
위의 과정을 마친 후 프로젝트 src 경로에 firebase.js 파일을 생성한 후 생성한 프로젝트 설정에서 firebase config 정보를 가져와줍니다.
❗️firbase config는 API와 같은 개인의 구성 정보를 가지고 있습니다.
정보 은닉을 위해서 값은 따로 .env.local 파일에 저장해서 정보 유출을 막아줍니다.
root 경로에 환경변수 (.env.local) 셋업
REACT_APP_FB_API_KEY="MY_API_KEY"
REACT_APP_FB_AUTH_DOMAIN="MY_AUTH_DOMAIN"
REACT_APP_PROJECT_ID="MY_PROJECT_ID"
REACT_APP_STORAGE_BUCKET="MY_STORAGE_BUCKET"
REACT_APP_MESSAGING_SENDER_ID="MY_MESSAGING_SENDER_ID"
REACT_APP_APP_ID="MY_APP_ID"
firebase에서 .env 파일에 저장된 변수 가져오기
const firebaseConfig = {
apiKey: process.env.REACT_APP_FB_API_KEY,
authDomain: process.env.REACT_APP_FB_AUTH_DOMAIN,
projectId: process.env.REACT_APP_PROJECT_ID,
storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_APP_ID,
}
Firebase에서 제공하는 cloud firestore API를 이용하여 데이터베이스를 구현하였습니다.
Firebase에서 제공하는 Ahtentication API를 사용하여 로그인 및 회원가입 기능을 구현하였습니다.
[Vercel)(https://vercel.com/)
1) Vercel 사이트로 이동하여 github 계정으로 로그인합니다.
2) New Project를 생성합니다.
3) Import Git Repository에서