Next.js(App Router) 기반 홈페이지 프로젝트입니다.
Bannangco(반낭코) 공식 홈페이지 프로젝트입니다.
Next.js(App Router) 기반으로 제작되었으며, 회사 소개/주요 서비스/공지사항 화면을 제공합니다.
- 프로젝트명: Bannangco Homepage v2
- 목적: 반낭코 브랜드/비전/서비스 및 공지사항을 웹으로 제공
- 기술 스택: Next.js 15, React 19, TypeScript, Tailwind CSS, Firebase
- 기본 도메인:
https://bannangco.com
- Node.js 20 이상 권장
- npm 10 이상 권장
npm install루트에 .env.local 파일을 생성하고 아래 값을 설정합니다.
# Firebase Client SDK
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
# Firebase Admin SDK
FIREBASE_ADMIN_PROJECT_ID=
FIREBASE_ADMIN_CLIENT_EMAIL=
FIREBASE_ADMIN_PRIVATE_KEY=
# Optional
NEXT_PUBLIC_SITE_URL=https://bannangco.com
FIREBASE_ADMIN_PRIVATE_KEY는 줄바꿈을 포함할 수 있으므로 배포 환경에서 이스케이프(\\n) 처리 여부를 확인하세요.
npm install
npm run dev- UI 컴포넌트(
AnnouncementsContent,NewAnnouncementPage)는/api/announcements만 호출합니다. - API 라우트는
lib/repositories/announcements/repository.ts를 통해 데이터 접근을 수행합니다. - 공지사항 데이터는 서버 파일 시스템의
data/announcements.json에 저장됩니다. - 첨부 파일은
public/uploads/announcements에 저장됩니다.
- Node.js LTS 설치
- 소스 배포 후 의존성 설치
npm ci
- 프로덕션 빌드
npm run build
- PM2로 실행
npm run start:pm2
npm run build: Next.js 프로덕션 빌드npm run start: 프로덕션 서버 실행npm run start:pm2: PM2로 서버 백그라운드 실행npm run stop:pm2: PM2 프로세스 종료
현재 Firebase 환경 변수는 사용하지 않습니다.
필요 시 일반적인 Next.js 서버 환경 변수(PORT, NODE_ENV)를 설정해 실행하세요.
브라우저에서 http://localhost:3000으로 접속합니다.
아래 절차는 Oracle Cloud Infrastructure(OCI) Ubuntu 서버를 기준으로 합니다.
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs git
node -v
npm -vgit clone <REPOSITORY_URL> bannangco-homepage-v2
cd bannangco-homepage-v2
npm ci
npm run buildsudo npm install -g pm2
pm2 start npm --name bannangco-homepage-v2 -- start
pm2 save
pm2 startup/etc/nginx/sites-available/bannangco.com
server {
listen 80;
server_name bannangco.com www.bannangco.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}적용:
sudo ln -s /etc/nginx/sites-available/bannangco.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxsudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d bannangco.com -d www.bannangco.com| 이름 | 설명 |
|---|---|
NEXT_PUBLIC_FIREBASE_API_KEY |
Firebase 클라이언트 API 키 |
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN |
Firebase 인증 도메인 |
NEXT_PUBLIC_FIREBASE_PROJECT_ID |
Firebase 프로젝트 ID |
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET |
Firebase 스토리지 버킷 |
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID |
Firebase 메시징 발신자 ID |
NEXT_PUBLIC_FIREBASE_APP_ID |
Firebase 앱 ID |
FIREBASE_ADMIN_PROJECT_ID |
Firebase Admin 프로젝트 ID |
FIREBASE_ADMIN_CLIENT_EMAIL |
Firebase Admin 클라이언트 이메일 |
FIREBASE_ADMIN_PRIVATE_KEY |
Firebase Admin 개인 키 |
NEXT_PUBLIC_SITE_URL |
사이트 기본 URL(선택) |
.
├── app/ # App Router 엔트리
│ ├── (default)/ # 메인 랜딩 페이지
│ ├── announcements/ # 공지사항 페이지/생성 화면
│ ├── css/ # 글로벌/추가 스타일
│ └── layout.tsx # 루트 레이아웃 및 메타데이터
├── components/ # UI/섹션 컴포넌트
├── lib/ # 유틸리티 및 공통 로직
├── public/ # 정적 파일(이미지/폰트)
├── firebase/ # Firebase 관련 설정
├── package.json
└── README.md
npm run dev: 개발 서버 실행npm run build: 프로덕션 빌드npm run start: 프로덕션 서버 실행npm run lint: 린트 실행npm run deploy: 배포 스크립트 실행