CHORE(merge): merge from develop
Some checks failed
Build Docker Image / build-and-push (push) Has been cancelled
CI / lint-and-build (push) Has been cancelled

- Initial setup and all features from develop branch
- Includes: auth, deploy, docker, style fixes
- K3S deployment configuration
This commit is contained in:
2026-01-06 17:29:16 +09:00
parent b4ce36ba3b
commit f78454c2a1
159 changed files with 18365 additions and 774 deletions

54
nextjs/const/api.ts Normal file
View File

@@ -0,0 +1,54 @@
// API 엔드포인트 설정
export const API_ENDPOINTS = {
// 인증 관련 엔드포인트
AUTH: {
SIGN_IN: "/api/auth/signin",
SIGN_UP: "/api/auth/signup",
SIGN_OUT: "/api/auth/signout",
ME: "/api/auth/me",
},
// 파일 관련 엔드포인트
FILE: {
BASE: "/api/files",
BY_ID: (id: number) => `/api/files/${id}`,
DOWNLOAD_URL: "/api/files/download-url",
UPLOAD_URL: "/api/files/upload-url",
},
// 유저 관련 엔드포인트
USER: {
BASE: "/api/users",
BY_ID: (id: number) => `/api/users/${id}`,
},
// 공지사항 관련 엔드포인트
ANNOUNCEMENT: {
BASE: "/api/announcements",
BY_ID: (id: number) => `/api/announcements/${id}`,
},
// 갤러리 관련 엔드포인트
GALLERY: {
BASE: "/api/gallery",
BY_ID: (id: number) => `/api/gallery/${id}`,
},
// 예배 관련 엔드포인트
WORSHIP: {
BASE: "/api/worship",
BY_ID: (id: number) => `/api/worship/${id}`,
BY_CATEGORY: (category: string) => `/api/worship?category=${category}`,
REORDER: "/api/worship/reorder",
NEXT_ORDER: (category: string) => `/api/worship/next-order?category=${category}`,
},
// 제자훈련 관련 엔드포인트
DISCIPLE: {
BASE: "/api/disciple-videos",
BY_ID: (id: number) => `/api/disciple-videos?id=${id}`,
BY_STAGE: (stage: string) => `/api/disciple-videos?stage=${stage}`,
REORDER: "/api/disciple-videos/reorder",
},
} as const;

4
nextjs/const/index.ts Normal file
View File

@@ -0,0 +1,4 @@
// 모든 상수를 한 곳에서 export
export * from './api';
export * from './s3';

23
nextjs/const/s3.ts Normal file
View File

@@ -0,0 +1,23 @@
// S3 설정
export const S3_CONFIG = {
BUCKET_NAME: process.env.AWS_S3_BUCKET_NAME || 'jaejadle-bucket',
REGION: process.env.AWS_REGION || 'ap-northeast-2',
ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID || '',
SECRET_ACCESS_KEY: process.env.AWS_SECRET_ACCESS_KEY || '',
} as const;
// S3 클라이언트 인스턴스 (서버 사이드에서만 사용)
import { S3Client } from '@aws-sdk/client-s3';
export const s3Client = new S3Client({
region: S3_CONFIG.REGION,
credentials: {
accessKeyId: S3_CONFIG.ACCESS_KEY_ID,
secretAccessKey: S3_CONFIG.SECRET_ACCESS_KEY,
},
// MinIO를 사용하는 경우 endpoint와 path-style 설정 필요
...(process.env.AWS_S3_ENDPOINT && {
endpoint: process.env.AWS_S3_ENDPOINT,
forcePathStyle: true, // MinIO는 path-style URL 사용 (https://endpoint/bucket/path)
}),
});

137
nextjs/const/tabs.ts Normal file
View File

@@ -0,0 +1,137 @@
const tabs = [
{
label: "About",
href: "/greeting",
imageHref: "/subpages/about/aboutBG.webp",
sectionIndex: 0,
submenu: [
{
label: "인사말",
englishLabel: "GREETING",
href: "/greeting",
description: "",
},
{
label: "교회 비전",
englishLabel: "VISION",
href: "/vision",
description: "",
},
{
label: "섬기는 분들",
englishLabel: "LEADERS",
href: "/leaders",
description: "",
},
{
label: "오시는 길",
englishLabel: "DIRECTIONS",
href: "/directions",
description: "",
},
],
},
{
label: "Worship",
href: "/worship",
imageHref: "/subpages/worship/worshipBG.webp",
sectionIndex: 1,
submenu: [
{
label: "예배 안내",
englishLabel: "Worship Guide",
href: "/worship",
description: "",
},
],
},
{
label: "Discipling System",
href: "/system",
imageHref: "/subpages/system/systemBG.webp",
sectionIndex: 2,
submenu: [
{
label: "새가족반",
englishLabel: "NEW FAMILY",
href: "/system/new-family",
description: "",
},
{
label: "기초양육반",
englishLabel: "BASIC TRAINING",
href: "/system/basic",
description: "",
},
{
label: "제자훈련반",
englishLabel: "DISCIPLE TRAINING",
href: "/system/disciple",
description: "",
},
{
label: "전도훈련반",
englishLabel: "EVANGELISM TRAINING",
href: "/system/evangelism",
description: "",
},
{
label: "사역훈련반",
englishLabel: "MINISTRY TRAINING",
href: "/system/ministry",
description: "",
},
],
},
{
label: "Next Generation",
href: "/generation",
imageHref: "/subpages/generation/generationBG.webp",
sectionIndex: 3,
submenu: [
{
label: "다음 세대",
englishLabel: "NEXT GENERATION",
href: "/generation",
description: "",
},
],
},
{
label: "Mission",
href: "/mission",
imageHref: "/subpages/mission/missionBG.webp",
sectionIndex: 4,
submenu: [
{
label: "선교 비전",
englishLabel: "MISSION",
href: "/mission",
description: "제자들교회는 복음전도와 선교를 위해서 존재합니다.",
},
],
},
{
label: "Community",
href: "/announcements",
imageHref: "/subpages/community/communityBG.webp",
sectionIndex: 5,
submenu: [
{
label: "주보",
englishLabel: "BROCHURES",
href: "/announcements",
description: "",
},
{
label: "행사 앨범",
englishLabel: "EVENT ALBUM",
href: "/gallery",
description: "",
},
],
},
];
export default tabs;