← 포트폴리오 목록

공모사업 신청·진행 포털

공모 공고 탐색, 신청서 작성·임시저장·제출, 보완 요청 대응, 월간보고·정산 제출, 채용·장학 지원서 접수를 한 사이트에서 처리하는 지원단체·지원자용 신청 웹을 React + Node.js 기반으로 구현합니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종플랫폼
기술 스택
React 18TypeScriptTailwind CSSTanStack QueryNode.jsExpressPrismaPostgreSQL카카오 비즈메시지 API
주요 기능
  • 홈
  • 공모 공고·신청서
  • 내 신청 현황
  • 월간보고·정산

프로젝트 개요

범위: 개발, 디자인, 기획

공모 공고 탐색, 신청서 작성·임시저장·제출, 보완 요청 대응, 월간보고·정산 제출, 채용·장학 지원서 접수를 한 사이트에서 처리하는 지원단체·지원자용 신청 웹을 React + Node.js 기반으로 구현합니다.

작업 범위

  • 홈: 마감이 가까운 공모사업 카드와 내 신청서의 진행 단계, 새로 도착한 보완 요청을 한 화면에서 확인하는 첫 화면입니다
  • 공모 공고·신청서: 분야·마감일로 공고를 거르고 상세에서 제출 서류를 확인한 뒤, 단계별 신청서를 작성·임시저장·제출합니다. 채용·장학 지원서도 유형 칩으로 같은 화면에서 작성합니다
  • 내 신청 현황: 제출한 신청서의 단계와 처리 이력을 확인하고 보완 요청 사유를 읽은 뒤 보완 서류를 다시 제출합니다
  • 월간보고·정산: 선정 단체가 월간보고를 작성해 제출하고, 예산 항목별 집행 내역과 증빙을 입력해 잔액을 확인하며 정산을 제출합니다

주요 업무

  • 홈 화면: 공고 마감일을 기준으로 남은 기간 표시를 계산하고, 내 신청서 상태를 접수·검토·심사·선정 단계 막대로 그립니다. 보완 요청은 해당 신청서 화면으로 바로 연결합니다
  • 공모 공고·신청서 화면: 공고별 양식 정의를 읽어 신청서를 그리고 자동 임시저장, 서버 측 마감 검증, 제출 확인 대화상자를 거칩니다. 채용·장학은 접수와 선정 결과 안내까지만 다룹니다
  • 내 신청 현황 화면: 상태 변경 이력을 시간순으로 보여주고 보완 요청이 열린 신청서에만 재제출 입력을 노출합니다
  • 월간보고·정산 화면: 항목별 집행액 입력 시 잔액을 자동 계산하고 보고 기한 임박 안내를 표시합니다
공모사업 신청·진행 포털
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

공고마다 달라지는 신청 항목과 제출 서류를 양식 스키마로 표현하면서 이미 제출된 신청서의 양식 버전을 보존하는 설계가 필요합니다

마감 시각 직전 동시 제출과 임시저장이 겹칠 때 서버 기준 시각으로 판정하는 제출 확정 로직 설계가 필요합니다

증빙 파일의 형식·용량 제한과 보관 위치 분리

접근 권한 검사를 함께 만족하는 업로드 구조 설계가 필요합니다

지원단체·지원자·심사위원 접근 범위를 분리하고 본인 건만 조회되

하는 행 단위 접근 제어 설계가 필요합니다

구현 내용

핵심 기능 상세

핵심 기능 1

홈

마감이 가까운 공모사업 카드와 내 신청서의 진행 단계, 새로 도착한 보완 요청을 한 화면에서 확인하는 첫 화면입니다.

  • TanStack Query로 공고 목록과 내 신청 상태를 병렬 조회하고 화면 이동 시 캐시 재사용
  • 마감 기한 계산을 서버 기준 시각으로 통일하여 클라이언트 시계 차이 방지
  • 신청 단계 막대를 상태 코드 매핑 테이블 하나로 렌더링하여 단계 추가에 대응

서버 기준 시각으로 마감 남은 기간을 계산하고 신청서 단계 상태를 한 화면에 합쳐 보여주는 홈 구성을 설계합니다.

홈
홈 실제 화면
핵심 기능 2

공모 공고·신청서

분야·마감일로 공고를 거르고 상세에서 제출 서류를 확인한 뒤, 단계별 신청서를 작성·임시저장·제출합니다. 채용·장학 지원서도 유형 칩으로 같은 화면에서 작성합니다.

  • 공고별 양식 정의를 JSON 스키마로 저장하고 신청 화면에서 동적으로 필드 렌더링
  • React Hook Form과 Zod 스키마로 단계별 입력 검증 및 오류 문구 표시
  • 입력 변경을 디바운스하여 임시저장 API 호출, 저장 시각 표시

공고별 양식 스키마로 신청서를 그리고 자동 임시저장과 서버 마감 검증을 결합하여 입력 손실과 마감 이후 제출을 함께 막습니다.

공모 공고·신청서
공모 공고·신청서 실제 화면
핵심 기능 3

내 신청 현황

제출한 신청서의 단계와 처리 이력을 확인하고 보완 요청 사유를 읽은 뒤 보완 서류를 다시 제출합니다. 상태 변경 이력을 시간순으로 보여주고 보완 요청이 열린 신청서에만 재제출 입력을 노출합니다.

  • 상태 전이 테이블로 허용된 단계 이동만 처리하는 신청서 상태 머신 설계
  • 처리 이력 테이블에 변경자·시각·사유를 기록하고 타임라인 컴포넌트로 표시
  • 보완 제출 시 기존 제출본을 버전으로 보존하여 비교 조회 지원

신청서 상태 전이와 처리 이력을 하나의 테이블에서 관리하여 누가 언제 무엇을 처리했는지 추적하는 구조를 구현합니다.

내 신청 현황
내 신청 현황 실제 화면
핵심 기능 4

월간보고·정산

선정 단체가 월간보고를 작성해 제출하고, 예산 항목별 집행 내역과 증빙을 입력해 잔액을 확인하며 정산을 제출합니다. 항목별 집행액 입력 시 잔액을 자동 계산하고 보고 기한 임박 안내를 표시합니다.

  • 예산 항목별 집행액 합계와 잔액을 소수점 오차 없이 정수 단위로 계산
  • 증빙 파일을 집행 행 단위로 연결하여 정산 검토 화면에서 바로 열람 가능하게 저장
  • 기한 임박 상태를 서버 스케줄 작업이 갱신하여 화면 배지로 노출

집행 행과 증빙 파일을 연결하고 잔액을 자동 계산하여 정산 제출 전에 입력 오류를 걸러내는 화면을 구현합니다.

월간보고·정산
월간보고·정산 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

공모 업무 흐름 분석 및 데이터 모델 설계 · 2026.11

공고·신청·심사·협약·정산 흐름 정리, PostgreSQL 테이블과 상태 전이 규칙 설계

STEP 2

동적 신청서 양식 엔진 개발 · 2026.11

양식 스키마 저장 구조와 동적 필드 렌더러 구현, 임시저장 API 구축

STEP 3

신청·보완·보고 화면 개발 · 2026.11

React 기반 신청서 작성·현황·월간보고·정산 화면 구현, 증빙 업로드 처리

STEP 4

알림 연동 및 채용·장학 접수 · 2026.11

알림톡·메일 발송 큐 구현, 채용·장학 지원서와 PDF 생성 기능 구축

개발 결과

동적 신청서 양식 엔진 구현JSON 스키마 기반 필드 렌더러와 Zod 검증을 결합해 공고별 신청 항목을 코드 수정 없이 구성하는 구조 구축
신청서 상태 전이 규칙 설계허용 전이 표로 접수·검토·보완·제출 단계를 제어하고 변경자·시각·사유를 처리 이력 테이블에 기록
자동 임시저장 흐름 설계디바운스 저장과 서버 버전 번호 비교로 다중 탭 작성 시 덮어쓰기를 감지하는 충돌 안내 구현
정산 잔액 계산 로직 구현정수 단위 금액 계산과 집행 행별 증빙 연결로 예산 초과·증빙 누락을 제출 전에 검출하는 검증 적용

기술적 주안점

  • 서버 기준 시각으로 마감 남은 기간을 계산하고 신청서 단계 상태를 한 화면에 합쳐 보여주는 홈 구성을 설계합니다
  • 공고별 양식 스키마로 신청서를 그리고 자동 임시저장과 서버 마감 검증을 결합하여 입력 손실과 마감 이후 제출을 함께 막습니다
  • 신청서 상태 전이와 처리 이력을 하나의 테이블에서 관리하여 누가 언제 무엇을 처리했는지 추적하는 구조를 구현합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의