본문으로 건너뛰기

⚙️ 개발 환경 및 기술 스택

BreadItNow 프로젝트는 프론트엔드와 백엔드가 독립된 모듈로 나뉘어 있으며, 각 파트는 다음과 같은 환경과 기술 스택을 기반으로 개발되었습니다.

Management

항목내용
버전 관리Git + GitHub
협업 도구Notion, Discord, Figma
이슈 관리GitHub Issues, Notion

Frontend

BreadItNow의 프론트엔드 시스템은 모던 웹 기술을 활용하여 사용자에게 빠르고 매끄러운 경험을 제공합니다.

🛠️ 기술 스택

언어 및 프레임워크

  • Next.js: React 기반의 SSR 및 CSR 가능 프레임워크
  • TypeScript: 안전한 정적 타입 지원을 통한 높은 코드 안정성 제공

스타일링 및 UI 구성

  • Tailwind CSS: 간결한 유틸리티 기반 CSS 프레임워크
  • Framer Motion, DND Kit: 부드러운 애니메이션과 직관적인 드래그 앤 드롭 인터페이스 제공

데이터 및 폼 관리

  • TanStack Query (React Query): 효율적인 API 데이터 캐싱 및 상태 관리
  • React Hook Form: 쉽고 검증 가능한 폼 상태 관리

개발 생산성 도구

  • MSW (Mock Service Worker): 브라우저 및 테스트 환경용 API mocking 지원
  • ESLint, Prettier, Husky: 코드 정적 분석, 일관된 코드 포맷팅 및 커밋 전 자동화된 코드 검사

📦 배포 및 운영

  • Vercel: Next.js 애플리케이션 호스팅 및 CI/CD 자동화

Backend

BreadItNow의 백엔드 시스템은 모듈화된 구조를 기반으로 하며, 다음과 같은 기술 스택과 개발 환경을 사용합니다.

🛠️ 기술 스택

언어 및 프레임워크

  • Java 17: 안정적인 LTS 버전
  • Spring Boot 3.x: 빠른 개발을 위한 프레임워크
  • Spring Data JPA: 데이터 접근 추상화

아키텍처 및 설계

  • 모듈 구조: Customer, Owner, Auth, Gateway 모듈로 구성
  • Gateway 모듈: 인증/인가 및 요청 라우팅을 처리하며, 외부 요청의 관문 역할 수행
  • Auth 모듈: 고객과 사업자를 구분하여 회원가입, 로그인, 인증번호 발송 등 인증 관련 기능 담당

데이터베이스 및 캐시

  • MySQL: 메인 데이터베이스, ngram 인덱스를 활용한 자동완성 검색 지원
  • Redis: 인증 토큰, 인증 번호 등의 임시 데이터 저장

메시징 및 알림

  • FCM (Firebase Cloud Messaging): 모바일 알림 전송
  • Discord Webhook + Logback Appender: 에러 로그 기반 실시간 디스코드 알림 기능

인증 및 보안

  • JWT (JSON Web Token): 인증 및 권한 관리
  • ID/PW + OAuth: 고객은 소셜 로그인과 일반 로그인 지원, 사업자는 일반 로그인만 지원
  • Spring Security: JWT 기반의 인증 및 권한 관리, OAuth 통합 인증

📦 배포 및 운영

도메인 관리

  • 가비아: 도메인 구매 및 관리

AWS 인프라

  • IAM: 접근 권한 및 보안 정책 관리
  • EC2: 애플리케이션 배포 및 서버 운영
  • Route53: DNS 서비스 및 도메인 연결
  • ACM (AWS Certificate Manager): SSL 인증서 관리 및 HTTPS 설정
  • CloudFront: 정적 자원 CDN 및 SSL 오프로드

CI/CD 및 컨테이너 관리

  • Docker + Docker Compose: 컨테이너 기반 개발 및 운영 환경 구축
  • GitHub Actions: CI/CD 자동화 파이프라인

정적 리소스 관리

  • Amazon S3: 정적 자원 저장 및 관리

🔐 환경 변수 관리

  • env 파일: .env 파일을 통한 비밀 키 및 환경 설정 분리
  • git submodule: secret-config 서브모듈로 보안 정보 별도 관리


이 문서는 팀 내외부 개발자가 프로젝트 구조와 기술 스택을 빠르게 이해하고, 새로운 개발 환경을 세팅하는 데 도움을 주기 위한 문서입니다.