-
Notifications
You must be signed in to change notification settings - Fork 2
1101(수) ~ 1103(금) FE 회의록
- 기술스택 확정
- React + typescript 확정
- 상태관리 라이브러리 등 정해야 함
- 사용할 기술스택에 관한 이해
- 다른 기술들과의 차이점
- 이 기술을 쓰는 이유
- 위의 내용들을 기록해두기
- 코딩컨벤션
- 앞으로의 일정
- 역할 분담
- 폴더 구조
- React
- Typescript
- R3F
- three.js
- zustand
- emotion
- vite
- yarn berry
- gitmoji
https://jasonkang14.github.io/react/styled-component-vs-tailwind-css
-
상태관리라이브러리
상태관리 라이브러리 비교: Redux vs Recoil vs Zustand vs Jotai
https://hwani.dev/girok-why-zustand/
https://github.com/depromeet/ggogeet-client
https://toss.tech/article/node-modules-and-yarn-berry
[당신의 PM 선택에 도움이 되는 글](https://velog.io/@adultlee/당신의-PM-선택에-도움이-되는-글)
[https://velog.io/@gene028/커비샵-개발일지-1-프로젝트-세팅하기-Vite-React-Typescript](https://velog.io/@gene028/%EC%BB%A4%EB%B9%84%EC%83%B5-%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC%A7%80-1-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0-Vite-React-Typescript)
에어비엔비
[GitHub - tipjs/javascript-style-guide: Airbnb JavaScript 스타일 가이드 한국어](https://github.com/tipjs/javascript-style-guide)
https://medium.com/@kthamodaran/react-8-best-practices-folder-structure-5dbda48a69e
-
import Box from "./Box"; import Star from "./Star"; import { Canvas } from "@react-three/fiber"; import { OrbitControls } from "@react-three/drei"; export default function Screen() { return ( <main className="flex min-h-screen flex-col items-center justify-between p-24"> <div style={{ width: "100vw", height: "100vh" }}> <Canvas camera={{ position: [0, 1, 50], }} > <ambientLight /> <Star position={[0, 0, 10]}> <Box position={[0, 10, 0]} /> <Box position={[20, 20, 0]} /> </Star> <gridHelper args={[100, 100]} /> <axesHelper args={[80]} /> <OrbitControls /> </Canvas> </div> </main> ); } import * as THREE from "three"; import { useFrame, ThreeElements } from "@react-three/fiber"; import { useState, useRef } from "react"; export default function Box(props) { const meshRef = useRef(); const [hovered, setHover] = useState(false); const [active, setActive] = useState(false); useFrame((state, delta) => { meshRef.current.rotation.x += delta; meshRef.current.rotation.y += delta; }); return ( <mesh ref={meshRef} scale={active ? 1.5 : 1} onClick={(event) => setActive(!active)} onPointerOver={(e) => setHover(true)} onPointerOut={(e) => setHover(false)} {...props} > <boxGeometry args={[5, 5, 5]} /> <meshStandardMaterial color={hovered ? "hotpink" : "orange"} /> </mesh> ); } import * as THREE from "three"; import { useFrame, ThreeElements } from "@react-three/fiber"; import { useState, useRef } from "react"; export default function Star(props) { const meshRef = useRef(); const [hovered, setHover] = useState(false); const [active, setActive] = useState(false); useFrame((state, delta) => { meshRef.current.rotation.x += delta; meshRef.current.rotation.y += delta; }); return ( <mesh ref={meshRef} position={props.position}> <mesh scale={active ? 1.5 : 1} onClick={(event) => setActive(!active)} onPointerOver={(e) => setHover(true)} onPointerOut={(e) => setHover(false)} > <sphereGeometry args={[5, 64, 32]} /> <meshStandardMaterial color={hovered ? "hotpink" : "orange"} /> </mesh> {props.children} </mesh> ); }
[GitHub - pachoclo/vite-r3f-ts-template: React Three Fiber (R3F) + Vite + TypeScript Template](https://github.com/pachoclo/vite-r3f-ts-template)
[https://velog.io/@beforesol/Yarn-berry-Vite-React-Typescript-recoil-환경-설정](https://velog.io/@beforesol/Yarn-berry-Vite-React-Typescript-recoil-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95)
© 2023 debussysanjang
- 🐙 [가은] Three.js와의 설레는 첫만남
- 🐙 [가은] JS로 자전과 공전을 구현할 수 있다고?
- ⚽️ [준섭] NestJS 강의 정리본
- 🐧 [동민] R3F Material 간단 정리
- 👾 [재하] 만들면서 배우는 NestJS 기초
- 👾 [재하] GitHub Actions을 이용한 자동 배포
- ⚽️ [준섭] 테스트 코드 작성 이유
- ⚽️ [준섭] TypeScript의 type? interface?
- 🐙 [가은] 우리 팀이 Zustand를 쓰는 이유
- 👾 [재하] NestJS, TDD로 개발하기
- 👾 [재하] AWS와 NCP의 주요 서비스
- 🐰 [백범] Emotion 선택시 고려사항
- 🐧 [동민] Yarn berry로 모노레포 구성하기
- 🐧 [동민] Vite, 왜 쓰는거지?
- ⚽️ [준섭] 동시성 제어
- 👾 [재하] NestJS에 Swagger 적용하기
- 🐙 [가은] 너와의 추억을 우주의 별로 띄울게
- 🐧 [동민] React로 멋진 3D 은하 만들기(feat. R3F)
- ⚽️ [준섭] NGINX 설정
- 👾 [재하] Transaction (트랜잭션)
- 👾 [재하] SSH 보안: Key Forwarding, Tunneling, 포트 변경
- ⚽️ [준섭] MySQL의 검색 - LIKE, FULLTEXT SEARCH(전문검색)
- 👾 [재하] Kubernetes 기초(minikube), docker image 최적화(멀티스테이징)
- 👾 [재하] NestJS, 유닛 테스트 각종 mocking, e2e 테스트 폼데이터 및 파일첨부
- 2주차(화) - git, monorepo, yarn berry, TDD
- 2주차(수) - TDD, e2e 테스트
- 2주차(목) - git merge, TDD
- 2주차(일) - NCP 배포환경 구성, MySQL, nginx, docker, docker-compose
- 3주차(화) - Redis, Multer 파일 업로드, Validation
- 3주차(수) - AES 암복호화, TypeORM Entity Relation
- 3주차(목) - NCP Object Storage, HTTPS, GitHub Actions
- 3주차(토) - Sharp(이미지 최적화)
- 3주차(일) - MongoDB
- 4주차(화) - 플랫폼 종속성 문제 해결(Sharp), 쿼리 최적화
- 4주차(수) - 코드 개선, 트랜잭션 제어
- 4주차(목) - 트랜잭션 제어
- 4주차(일) - docker 이미지 최적화
- 5주차(화) - 어드민 페이지(전체 글, 시스템 정보)
- 5주차(목) - 감정분석 API, e2e 테스트
- 5주차(토) - 유닛 테스트(+ mocking), e2e 테스트(+ 파일 첨부)
- 6주차(화) - ERD
- 2주차(화) - auth, board 모듈 생성 및 테스트 코드 환경 설정
- 2주차(목) - Board, Auth 테스트 코드 작성 및 API 완성
- 3주차(월) - Redis 연결 후 RedisRepository 작성
- 3주차(화) - SignUpUserDto에 ClassValidator 적용
- 3주차(화) - SignIn시 RefreshToken 발급 및 Redis에 저장
- 3주차(화) - 커스텀 AuthGuard 작성
- 3주차(수) - SignOut시 토큰 제거
- 3주차(수) - 깃헙 로그인 구현
- 3주차(토) - OAuth 코드 통합 및 재사용
- 4주차(수) - NestJS + TypeORM으로 MySQL 전문검색 구현
- 4주차(목) - NestJS Interceptor와 로거
- [전체] 10/12(목)
- [전체] 10/15(일)
- [전체] 10/30(월)
- [FE] 11/01(수)~11/03(금)
- [전체] 11/06(월)
- [전체] 11/07(화)
- [전체] 11/09(목)
- [전체] 11/11(토)
- [전체] 11/13(월)
- [BE] 11/14(화)
- [BE] 11/15(수)
- [FE] 11/16(목)
- [FE] 11/19(일)
- [BE] 11/19(일)
- [FE] 11/20(월)
- [BE] 11/20(월)
- [BE] 11/27(월)
- [FE] 12/04(월)
- [BE] 12/04(월)
- [FE] 12/09(금)
- [전체] 12/10(일)
- [FE] 12/11(월)
- [전체] 12/11(월)
- [전체] 12/12(화)