Next.js + TypeScript + Tailwind CSS, Node.js(Express), PostgreSQL을 사용한 온라인 쇼핑몰 프로젝트입니다.
- Next.js 15 - React 기반 프레임워크
- TypeScript - 타입 안정성
- Tailwind CSS - 유틸리티 기반 CSS 프레임워크
- Node.js - JavaScript 런타임
- Express.js - 웹 애플리케이션 프레임워크
- TypeScript - 타입 안정성
- PostgreSQL - 관계형 데이터베이스
- JWT - 인증 토큰
- bcryptjs - 비밀번호 해시화
ShoppingMall/
├── frontend/ # Next.js 프론트엔드
│ ├── src/
│ │ └── app/ # App Router 구조
│ └── package.json
├── backend/ # Express.js 백엔드
│ ├── src/
│ │ ├── config/ # 데이터베이스 설정
│ │ ├── middleware/ # 미들웨어
│ │ ├── routes/ # API 라우트
│ │ └── database/ # 데이터베이스 스키마
│ └── package.json
└── README.md
PostgreSQL을 설치하고 데이터베이스를 생성합니다:
CREATE DATABASE shopping_mall;
cd backend
# 의존성 설치
npm install
# 환경 변수 설정
cp env.example .env
# .env 파일을 편집하여 데이터베이스 정보를 입력
# 데이터베이스 스키마 생성
# PostgreSQL에 연결하여 src/database/schema.sql 실행
# 개발 서버 실행
npm run dev
cd frontend
# 의존성 설치
npm install
# 개발 서버 실행
npm run dev
# Server Configuration
PORT=5000
NODE_ENV=development
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_NAME=shopping_mall
DB_USER=postgres
DB_PASSWORD=your_password
# JWT Configuration
JWT_SECRET=your_jwt_secret_key_here
JWT_EXPIRES_IN=7d
# CORS Configuration
CORS_ORIGIN=http://localhost:3000
POST /api/auth/register
- 회원가입POST /api/auth/login
- 로그인
GET /api/products
- 상품 목록 조회GET /api/products/:id
- 특정 상품 조회POST /api/products
- 상품 생성 (관리자)PUT /api/products/:id
- 상품 수정 (관리자)DELETE /api/products/:id
- 상품 삭제 (관리자)
POST /api/orders
- 주문 생성GET /api/orders/my-orders
- 내 주문 목록GET /api/orders/:id
- 특정 주문 조회PATCH /api/orders/:id/status
- 주문 상태 변경 (관리자)
- 회원가입/로그인
- 상품 조회 및 검색
- 장바구니 기능
- 주문 및 결제
- 주문 내역 조회
- 상품 관리 (CRUD)
- 주문 상태 관리
- 사용자 관리
npm run dev # 개발 서버 실행
npm run build # TypeScript 컴파일
npm start # 프로덕션 서버 실행
npm run dev # 개발 서버 실행
npm run build # 프로덕션 빌드
npm start # 프로덕션 서버 실행
- id (SERIAL PRIMARY KEY)
- email (VARCHAR, UNIQUE)
- password (VARCHAR)
- name (VARCHAR)
- phone (VARCHAR)
- role (VARCHAR, 'user' 또는 'admin')
- created_at, updated_at (TIMESTAMP)
- id (SERIAL PRIMARY KEY)
- name (VARCHAR)
- description (TEXT)
- price (DECIMAL)
- stock (INTEGER)
- category (VARCHAR)
- image_url (TEXT)
- created_at, updated_at (TIMESTAMP)
- id (SERIAL PRIMARY KEY)
- user_id (INTEGER, FOREIGN KEY)
- total_amount (DECIMAL)
- shipping_address (TEXT)
- payment_method (VARCHAR)
- status (VARCHAR)
- created_at, updated_at (TIMESTAMP)
- id (SERIAL PRIMARY KEY)
- order_id (INTEGER, FOREIGN KEY)
- product_id (INTEGER, FOREIGN KEY)
- quantity (INTEGER)
- price (DECIMAL)
- created_at (TIMESTAMP)
MIT License
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request