데브허브 | DEVHUB | Full Stack Take Home Project (Software Engineer)Full Stack Take Home Project (Software Engineer)
- 이 프로젝트는 커피 원두 카탈로그를 탐색하는 풀스택 플랫폼을 구축하며, 페이지네이션, 정렬, 필터링 및 동적 컬럼 추가 기능을 지원합니다. ☕
- 클라이언트-서버 통신, 데이터베이스 상호작용, 깔끔한 백엔드 라우트 및 데이터 페칭 로직을 시연하는 데 중점을 둡니다. 💡
- Docker, PostgreSQL, TypeScript, React와 같은 핵심 기술을 활용하여 실용적인 경험을 제공합니다. 💻
- 실제 기술 과제를 기반으로 하며, 4시간 이내 완료 및 솔루션 요약 문서 제출 요구사항을 포함합니다. ⏱️
- 프론트엔드와 백엔드 모두 TypeScript를 사용하여 일관된 개발 환경을 구축합니다. ✍️
- 관계형 데이터베이스로 PostgreSQL을 선택하여 일반적인 데이터베이스 지식을 강조합니다. 🐘
- 현대적인 Drizzle ORM을 사용하여 타입 안전성, 성능 및 유연성을 확보합니다. ✨
- 프론트엔드 웹 프레임워크는 React를, 테이블 렌더링 라이브러리는 Material UI를 사용합니다. ⚛️
- Roastcraft Labs를 위한 웹 플랫폼으로, 스페셜티 로스터들이 커피 원두 메타데이터를 탐색하고 분석할 수 있도록 합니다. 📊
- 첫 번째 과제는 제공된 JSON 데이터셋을 사용하여 원두 데이터를 저장하고, 페이지네이션, 정렬, 다중 컬럼 필터링을 지원하는 데이터 테이블을 구현하는 것입니다. 📋
- 두 번째 과제는 사용자가 정수, 실수 또는 문자열 타입의 새로운 컬럼을 동적으로 생성하고, 무작위 값으로 초기화하며, 데이터베이스에 영구 저장하고 테이블에 표시하는 기능입니다. ➕
- 백엔드는 간단한 Express 서버로 시작하며, Drizzle ORM을 통해 데이터베이스 스키마를 정의합니다. 🚀
- 데이터 모델은
beans, custom_columns, bean_custom_values 세 개의 테이블로 구성되어 원두, 동적 컬럼 및 그 값들을 효율적으로 연결합니다. 🏗️
bean_custom_values 테이블은 모든 값을 텍스트로 저장하고, custom_columns에 정의된 데이터 타입에 따라 나중에 캐스팅하는 유연한 방식을 채택합니다. 🔄
- Zod를 사용하여 환경 변수를 타입 안전하게 검증하고,
pg 클라이언트와 dotenv를 활용하여 견고한 PostgreSQL 데이터베이스 연결을 설정합니다. 🔒
- 데이터베이스 스키마 초기화 스크립트는
beans, custom_columns, bean_custom_values 테이블이 존재하지 않을 경우 자동으로 생성하여 데이터베이스 구조를 준비합니다. 🛠️
- 데이터베이스 시딩 스크립트는 Axios를 사용하여 GitHub에서 500개의 커피 원두 데이터를 가져오고, 중복 시딩을 방지하며 효율적인 배치를 통해 데이터를 삽입합니다. 🌱