GitHub ↗
← 모든 프로젝트
기업 홈페이지

더원에코파워텍 기업 홈페이지·CMS

의뢰받아 제작한 전력 설비 기업 홈페이지와 관리자 CMS. 제품·설비·사업분야·납품·자료실·문의 관리와 리치 텍스트 편집을 Next.js·TypeScript·MySQL로 구현했습니다.

의뢰 제작Next.jsReactTypeScriptMySQLSQLCMSTiptapZodDBMSDB 설계TomcatWindows Server자체 서버 구축포트포워딩AI-assisted DevelopmentCodex
DBMS
MySQL · 관계형 DBMS
DB 설계 담당
제품·설비·납품·문의·메뉴·관리자 테이블과 고유 키·상태·표시 순서 설계
더원에코파워텍 홈페이지 로컬 실행 화면
01 / PROBLEM & GOALS

문제/목표 — 왜 만들었는가

기업 소개와 콘텐츠 운영을 함께 구축하기

전력 설비 기업의 제품과 사업 내용을 소개하는 홈페이지를 의뢰받아 제작했습니다. 방문자용 소개·자료·문의 화면과 운영자용 콘텐츠 관리 CMS를 같은 프로젝트에서 구현했습니다.

프로젝트 형태
의뢰 제작 · 기업 홈페이지 / CMS
구현 환경
Next.js · React · TypeScript
데이터 저장
MySQL · 관계형 SQL DB

기존 문제

제품·설비·사업분야·납품·고객지원 자료를 정리해 보여주고, 운영자가 홈페이지 내용을 지속적으로 갱신할 수 있는 관리 흐름이 필요했습니다.

사용자가 필요로 한 것

방문자는 기업과 제품 정보를 탐색하고 문의를 남길 수 있어야 합니다. 운영자는 여러 종류의 콘텐츠를 편집하고 공개 상태·표시 순서와 문의 처리 상태를 관리할 수 있어야 합니다.

목표

기업 정보와 제품 탐색

기업·사업·제품·납품·고객지원 페이지를 구성해 방문자가 정보를 살펴보고 문의로 이동하도록 구현했습니다.

운영자가 갱신하는 홈페이지

설비·사업분야·제품·납품·인증 자료·게시물·메뉴 콘텐츠를 관리자 화면에서 편집하도록 구성했습니다.

문의 접수와 상태 관리

문의 입력을 서버에서 검증해 저장하고 관리 화면에서 접수 자료와 처리 상태를 확인하도록 구성했습니다.

내가 맡은 역할

의뢰받아 더원에코파워텍 기업 홈페이지와 관리자 CMS를 제작했습니다. 공개 페이지, 콘텐츠 관리와 편집 기능, 서버 API와 MySQL 기반 저장 구조를 구현한 프로젝트입니다.

DB 설계 담당

제품·설비·납품·문의·메뉴·관리자 테이블과 고유 키·상태·표시 순서 설계

theOnePage의 현재 코드와 분리된 로컬 실행 환경을 기준으로 정리했습니다. 캡처의 관리자 자료는 임시 MySQL에 생성한 시연 데이터이며 실제 제품·설비·납품실적을 의미하지 않습니다.

02 / SOLUTION & IMPLEMENTATION

해결/구현 — 어떻게 만들었는가

전체 아키텍처

방문자는 기업·제품·자료 페이지를 조회하고 문의 폼으로 정보를 전송합니다. Next.js 서버 API가 문의를 검증하고 MySQL에 저장합니다. 운영자는 로그인 후 서명된 HttpOnly 세션을 사용해 관리자 API를 호출하고 제품·설비·자료·문의·메뉴 콘텐츠를 관리합니다. 리치 텍스트 HTML은 서버에서 정리하며 MySQL에 문서 내용과 상태·표시 순서를 저장합니다.
공개 페이지 · 관리자 CMS · MySQL 연결

현재 MySQL 기반 구현을 기준으로 정리했습니다. README의 이전 Firebase 설명과 구분됩니다.

크게 보기 ↗
이미지의 텍스트 설명

방문자는 기업·제품·자료 페이지를 조회하고 문의 폼으로 정보를 전송합니다. Next.js 서버 API가 문의를 검증하고 MySQL에 저장합니다. 운영자는 로그인 후 서명된 HttpOnly 세션을 사용해 관리자 API를 호출하고 제품·설비·자료·문의·메뉴 콘텐츠를 관리합니다. 리치 텍스트 HTML은 서버에서 정리하며 MySQL에 문서 내용과 상태·표시 순서를 저장합니다.

반응형 공개 사이트

홈페이지의 슬라이드와 회사·사업·제품·납품·고객지원 화면을 구성했습니다. DB 콘텐츠와 정적 소개 자료를 함께 제공합니다.

관리자 CMS

설비·사업분야·제품·납품·인증 자료·언론보도·자료실·문의·메뉴 콘텐츠를 관리합니다. 제품의 공개·임시저장·숨김 상태와 표시 순서를 지원합니다.

서버 API와 SQL 데이터 계층

Next.js Route Handler가 로그인과 관리자 요청, 문의 입력을 처리합니다. mysql2 커넥션 풀과 SQL 조회·저장 함수를 사용합니다.

기술 선택 이유

Next.js · TypeScript

공개 페이지와 관리자, 서버 API를 같은 프로젝트에서 구성하고 콘텐츠 모델과 props에 타입을 적용했습니다.

MySQL · mysql2

제품·설비·문의·메뉴 등 운영 데이터를 관계형 테이블로 저장하고 상태·순서·슬러그를 기준으로 조회합니다.

Tiptap · sanitize-html

운영자는 에디터에서 서식·이미지·표·링크를 편집합니다. 서버는 허용된 HTML 요소와 속성을 정리한 내용을 저장합니다.

Zod 입력 검증

문의 종류·이메일·본문 길이·개인정보 동의 등 입력 조건을 서버에서 확인하고 유효한 문의를 저장합니다.

DB · API · 인프라 구조

관계형 DB 구조

products·facilities·deliveries·inquiries·menu_contents·admins 등 테이블을 사용합니다. 제품 슬러그와 메뉴 경로에 고유 키를 두고 초안·공개·숨김과 표시 순서를 관리합니다.

로그인과 관리자 API

scrypt 비밀번호 검증과 HMAC 서명 세션, HttpOnly 쿠키를 사용합니다. 관리자 API는 세션과 계정 활성 상태를 확인합니다. 로컬 환경에서 비로그인 요청의 401 응답과 로그인 흐름을 확인했습니다.

HTML과 이미지 처리

리치 텍스트 내용을 서버에서 정리하고 이미지 경로를 콘텐츠와 연결합니다. 외부 이미지 기준 주소는 설정으로 처리하며 공개 페이지와 관리자에서 같은 콘텐츠 자료를 사용합니다.

자체 Windows 서버와 외부 접속 설정

Windows 서버를 직접 구축해 서비스를 운영하고, 공유기 포트포워딩을 설정해 외부에서 홈페이지에 접근할 수 있도록 구성했습니다.

핵심 처리 흐름

  1. 01. 로그인과 관리자 권한 확인

    로그인 요청에서 관리자 계정의 비밀번호를 확인하고 세션 쿠키를 발급합니다. 관리 화면과 API는 세션을 확인합니다.

  2. 02. 항목 선택과 콘텐츠 편집

    제품·설비·자료 등 관리 항목을 선택하고 본문·이미지·상태·표시 순서를 편집합니다.

  3. 03. 검증과 DB 저장

    서버에서 입력값과 콘텐츠 형식을 확인하고 HTML을 정리한 뒤 SQL 파라미터로 저장·수정·삭제합니다.

  4. 04. 공개 표시와 문의 관리

    공개 상태의 콘텐츠를 방문자에게 표시하고 문의는 서버 검증 후 저장해 관리자가 처리 상태를 확인하도록 구성했습니다.

가장 어려웠던 문제와 해결

여러 종류의 콘텐츠 운영

문제
단순 소개 문구뿐 아니라 제품·자료·설비·문의의 입력 항목과 운영 상태를 구분해야 했습니다.
해결 방법
콘텐츠 유형별 관리 컴포넌트와 API·SQL 테이블을 나누고 공개 상태·표시 순서·슬러그를 관리했습니다.
검증 결과
코드 구조를 확인하고 로컬 환경에서 제품 생성·조회·수정·삭제와 관리 화면을 검증했습니다.

서식 있는 제품 설명과 공개 화면 연결

문제
운영자가 편집한 표·이미지·링크 등을 상세 설명에 반영하면서 저장할 HTML의 범위를 관리할 필요가 있었습니다.
해결 방법
Tiptap 에디터와 HTML 정리 함수를 구성하고 텍스트·HTML 콘텐츠 형식을 구분했습니다.
검증 결과
실제 에디터 컴포넌트를 열어 로컬 시연용 제품 편집 화면을 캡처했습니다. 전체 HTML 보안 검증을 완료했다는 의미는 아닙니다.

내가 직접 구현한 것

의뢰 제작과 공개 페이지

기업의 제품·사업·자료를 소개하는 반응형 홈페이지를 제작했습니다.

운영자용 콘텐츠 관리

유형별 CRUD, 리치 텍스트 편집, 공개 상태와 표시 순서, 문의 관리 기능을 구현했습니다.

서버·DB·세션 연결

MySQL 데이터 모델, 관리자 API와 세션, 문의 입력 검증을 구성했습니다.

서버 구축·포트포워딩·서비스 운영

홈페이지 개발뿐 아니라 자체 Windows 서버 구축과 공유기 포트포워딩 설정까지 직접 담당해 서비스를 운영했습니다.

03 / RESULTS & VALIDATION

결과/검증 — 그래서 무엇이 좋아졌는가

실제 서비스 적용 여부

자체 Windows 서버를 직접 구축하고 공유기 포트포워딩을 설정해 더원에코파워텍 홈페이지를 서비스하고 있습니다.

기업 홈페이지와 CMS 구현

공개 정보 제공과 운영자의 콘텐츠 갱신을 같은 프로젝트에서 처리하도록 구성했습니다.

로컬 관리자 흐름 검증

분리된 MySQL 환경에서 비로그인 관리자 API의 401 응답과 실제 로그인, 제품 생성·조회·수정·삭제를 확인했습니다.

공개·관리 화면 실행 확인

홈페이지의 데스크톱·모바일 화면과 제품 소개, 설비·제품 관리, 리치 텍스트 편집 화면을 직접 실행해 캡처했습니다.

검증 방법과 근거

운영 환경변수를 복사하지 않은 임시 프로젝트와 별도 MySQL에서 실행했습니다. 현재 저장소의 코드와 실제 로컬 로그인·CRUD 응답을 확인했으며 원본 코드나 운영 DB는 변경하지 않았습니다. 운영 도메인·문의 전환율·실제 기업 성과 수치는 제공된 확인 자료가 없어 제시하지 않습니다.

실행 화면

더원에코파워텍 홈페이지의 전력 설비 메인 화면
홈페이지 · 데스크톱

Next.js 앱 로컬 실행 화면 · 1440×1000

더원에코파워텍 모바일 홈페이지
홈페이지 · 모바일

모바일 로컬 실행 화면 · 390×844

기업 홈페이지의 제품 소개 목록
제품 소개

로컬 실행 · 원본의 샘플 소개 자료 포함

설비를 관리하는 더원 관리자 CMS
관리자 · 설비 관리

실제 로그인 후 캡처 · 분리된 MySQL의 시연 데이터

제품 목록과 상태·분류·수정·삭제가 표시된 관리자 화면
관리자 · 제품 관리

실제 CMS 실행 · 로컬 시연용 제품

제품 상세 설명을 편집하는 Tiptap 에디터
관리자 · 리치 텍스트 편집

실제 에디터 실행 · 로컬 시연 데이터