Cakely 서비스의 백엔드 API입니다.
- 🍰 케이크 정보 관리: 케이크 데이터 생성, 조회, 수정, 삭제 (CRUD)
- 🏪 상점 정보 관리: 상점 데이터 생성, 조회, 수정, 삭제 (CRUD)
- 🙋♀️ 사용자 관리 및 인증: Firebase를 이용한 사용자 인증 및 정보 관리
- ❤️ 좋아요 기능: 사용자가 케이크와 상점에 '좋아요'를 표시하는 기능
- 🔍 검색: 케이크 및 상점 검색 기능
- 📸 이미지 업로드: AWS S3를 이용한 이미지 파일 업로드 및 관리
- 🗺️ 위치 기반 서비스: Kakao Maps API를 활용한 주소 및 위치 관련 기능
- Framework: NestJS
- Language: TypeScript
- Database: MongoDB with Mongoose
- Authentication: Firebase Authentication
- File Storage: AWS S3
- API Clients: Kakao Map API
- Deployment: Serverless Framework on AWS Lambda
- Linting/Formatting: ESLint, Prettier
Cakely 백엔드는 서버리스 아키텍처를 기반으로 설계되었습니다. 모든 API는 AWS Lambda를 통해 실행되며, API Gateway를 통해 외부로 노출됩니다. 인증은 Firebase Authentication을 사용합니다.
- S3에 케이크 이미지를 업로드합니다.
- S3에 이미지가 업로드되면, S3 Event Notification이 Lambda 함수를 트리거합니다.
- 트리거된 Lambda 함수는 이미지 사이즈를 조정(resizing)하고, 최적화하여 다른 S3 버킷에 저장합니다.
- 동시에 이미지의 벡터값을 추출하여 Vector DB에 저장함으로써 이미지 검색에 활용합니다.
# git clone https://github.com/your-repository/cakely-back.git
# cd cakely-backnpm install프로젝트 루트에 .env.dev 파일을 생성하고 아래와 같이 필요한 환경 변수를 설정합니다.
# MongoDB
MONGO_URI=your_mongodb_connection_string
# Firebase
FIREBASE_PROJECT_ID=your_firebase_project_id
FIREBASE_CLIENT_EMAIL=your_firebase_client_email
FIREBASE_PRIVATE_KEY=your_firebase_private_key
# AWS S3
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_S3_BUCKET_NAME=your_s3_bucket_name
AWS_REGION=your_aws_region
# Kakao
KAKAO_MAP_API_KEY=your_kakao_map_api_key# 개발 모드 (watch)
npm run start:dev애플리케이션은 http://localhost:3000에서 실행됩니다.
src
├───auth # 인증 (Firebase)
├───cakes # 케이크 API
├───clients # 외부 API 클라이언트 (Kakao Map)
├───common # 공통 모듈 (DTO, Entity 등)
├───likes # 좋아요 API
├───s3 # AWS S3 파일 관리
├───search # 검색 API
├───stores # 상점 API
├───users # 사용자 API
└───utils # 유틸리티 함수