전자정부 표준프레임워크 5.0으로 만든 누리집 CMS와 통합검색, 문서 AI, 위원회 업무 팩입니다.
환경변수를 하나도 손대지 않은 상태에서 그대로 실행되며, AI가 필요하지 않은 사업에서는 끄고 쓰면 됩니다.

가상 기관 ‘국립문서정보연구원’의 시연 데이터(문서 9건)를 넣고 로컬에서 촬영했습니다. 손댄 곳 없이 실제로 동작하는 화면 그대로입니다.

게시물과 기관 문서 본문을 한 번에 찾고, 찾은 말은 노란색으로 짚어 줍니다.

LLM 키를 넣지 않은 추출 모드로, 답변 문장마다 근거 확인 표시와 출처 번호가 붙습니다.

초안을 올려 승인을 받고 게시하면 누리집에 바로 반영되며, 저장할 때마다 버전이 남아 언제든 되돌릴 수 있습니다.

회의 결과와 표수, 의결서를 함께 공개합니다. 의결서는 해시로 봉인해 두어 열 때마다 위변조 확인: 이상 없음을 보여 줍니다.

설정값을 읽어 판정하고, CSRF·비밀번호 정책·보안 헤더·오류 노출·CORS 다섯 항목은 서버가 자기 자신에게 실제 요청을 보내 측정합니다.

메뉴와 게시판 이름, 사이트 문구는 번역 표에서 관리하고, 콘텐츠는 언어마다 따로 씁니다. 해당 언어로 쓴 글이 없으면 기본 언어로 보여 줍니다.
기능 블록은 core 10개, portal 10개, ai 5개이며, 여기에 게시판 7유형과 관리자 20탭, 업무 팩 하나가 기본으로 들어 있습니다.
| core 10 | 계정·인증(잠금·임시 비밀번호) · 권한 RBAC(게시판별 읽기/쓰기 역할) · 조직·사용자 · 게시판 엔진 · 첨부(확장자·MIME·시그니처 3중 검사, ClamAV) · 코드·표준사전(DDL 컬럼명 검증) · 배치 스케줄러 · 감사로그(해시 체인) · 알림(포털·메일·SMS) · 연계 어댑터 |
| portal 10 | KRDS(디지털정부서비스 UI/UX 가이드라인) 누리집 틀(정부24와 같은 상단·주메뉴, 하위 페이지는 현재 경로+왼쪽 메뉴, 푸터) · 메뉴·IA · 콘텐츠(승인·버전·복원) · 회원(약관 이력·본인확인 연계점) · 템플릿(기관명·테마·레이아웃을 데이터로 관리) · 팝업·배너 · 접근성 컴포넌트 · 통합검색 · 개방 API(X-API-Key·일일 한도·OpenAPI 3.0) · 웹로그 통계 · 관리자 접근통제(IP·TOTP) |
| ai 5 | AI 게이트웨이(개인정보 마스킹·쿼터·서킷브레이커·DMZ 중계) · 문서 파싱 · 색인·검색(BM25·벡터·RRF) · 챗봇(멀티턴·시나리오·콘텐츠 초안) · 근거 검증(문장↔출처) |
| 게시판 7유형 | 공지 · FAQ · 자료실 · 포토갤러리 · 묻고 답하기 · 동영상(youtube·naver·kakao·mp4) · E-Book(PDF를 페이지 안에서 열람) |
| 업무 팩 1 위원회 | 위원회·위원·회의·안건·표결·의결서 관리. 정족수 비율, 법정기한(소집 통지 7일·안건 송부 3일), 가부동수 규칙, 서면의결 이중 정족수, 의결서 해시 봉인. 관리 탭 1면 · 공개 3면 · 위원 2면 |
| 관리자 20탭 | 배치 · 사용자·권한 · 조직 · 감사로그 · 접속로그 · 코드 · 표준사전 · 게시판 정의 · 메뉴 · 콘텐츠 · 사이트·템플릿 · 팝업·배너 · 접속 통계 · 개방 API · AI · 필터링 단어 · SMS · 알림 · 위원회 · 보안 점검 |
누리집과 관리 화면을 모두 KRDS 규격에 맞춘 React 컴포넌트 45종으로 조립합니다. 화면마다 마크업을 새로 짜지 않으므로, 기관이 화면을 늘려도 접근성과 디자인 규격을 따로 챙기지 않아도 됩니다. portal 안에서 이 컴포넌트를 가져다 쓰는 자리가 82곳입니다.
| 누리집 틀 9 | 머리표시 · 헤더 · 주메뉴 · 이동경로 · 왼쪽 메뉴 · 페이지 내 목차 · 푸터 · 기관 식별자 · 건너뛰기 링크 |
| 입력 10 | 필드 · 텍스트 입력 · 여러 줄 입력 · 선택 · 체크박스 · 라디오 · 파일 올리기 · 콤보박스 · 입력 그룹 · 단추 |
| 자료 5 | 표 · 데이터 표(정렬 · 머리 고정 · 빈 상태) · 정의 목록 · 글 목록 · 페이지 이동 |
| 상태 9 | 인라인 경고 · 긴급 경고 · 토스트 · 빈 상태 · 스켈레톤 · 스피너 · 진행 막대 · 배지 · 태그 |
| 겹침 4 | 모달 · 드로어 · 툴팁 · 컨텍스트 메뉴 |
| 펼침 4 | 탭 · 아코디언 · 접기 · 단계 표시 |
| 그 밖에 4 | 아바타 · 구분선 · 스크롤 영역 · 글씨 크기 조절 |
드로어 · 토스트 · 콤보박스 · 컨텍스트 메뉴 · 정렬되는 데이터 표처럼 관리 화면에는 있어야 하지만 킷에는 없는 컴포넌트입니다. KRDS 토큰만으로 만들었으므로 나머지와 섞어 놓아도 표가 나지 않습니다.
목록에서 「등록」을 누를 때 입력칸이 10개를 넘으면 화면 자체가 바뀌고, 그보다 적으면 모달이 열립니다. 담당자가 탭을 옮겨 다녀도 쓰는 방법이 같습니다.
/ui 에 컴포넌트마다 한 줄 설명과 예제, 코드, 「이럴 때 쓴다 · 이럴 때 쓰지 않는다」, 변형, 속성 표를 담아 두었습니다. 왼쪽 목록도 이 라이브러리의 컴포넌트로 만들었습니다.

45종은 MORU 없이도 쓸 수 있도록 따로 떼어 MIT 라이선스로 공개했습니다. 다른 기관 사업이나 표준프레임워크 화면에도 그대로 쓰실 수 있습니다.
npm i krds-uiux moru-krds-react
| KRDS 킷 | 포함하지 않습니다. krds.min.css 와 글꼴은 공식 배포판 krds-uiux 를 그대로 받아 씁니다. 망분리 환경이라면 resources/ 를 정적 폴더에 복사해 씁니다. |
| 프레임워크 | 가리지 않습니다. 프레임워크에 닿는 자리가 lib/link.tsx 한 곳뿐이라, Next.js 든 React Router 든 그냥 <a> 든 그 파일만 바꾸면 됩니다. |
| Tailwind | 쓰신다면 styles/krds-tailwind.css 를 함께 불러오십시오. text-fg-subtle 같은 이름을 KRDS 변수에 이어 줍니다. 불러오지 않아도 컴포넌트는 그대로 동작합니다. |
| 규칙 | 컴포넌트마다 파일 머리에 무엇을 지켜야 하고 무엇을 하면 안 되는지 적어 두었습니다. |
| 라이선스 | MIT. KRDS 킷은 ISC 로 따로 배포되는 krds-uiux 를 씁니다. |
환경변수를 하나도 손대지 않아도 ./deploy/run.sh 한 번으로 프로세스 세 개(portal :3000 · core :8080 · ai :8800)가 뜹니다. 도커도, 별도로 구매해야 하는 소프트웨어도 없습니다. 어댑터는 기관이 요구할 때만 켜면 됩니다.
| 층 | 기본 (설치 0) | 어댑터 |
|---|---|---|
| DB | PostgreSQL (운영) · H2 (로컬) | MariaDB · Oracle/Tibero — Flyway 벤더 폴더 + MyBatis databaseId |
| 검색 | SQLite + BM25 | OpenSearch(nori) · Elasticsearch |
| 벡터 | 사용하지 않음 | pgvector · sqlite-vec · OpenSearch kNN — 임베딩은 /v1/embeddings 규격(Ollama · vLLM · OpenAI) |
| LLM | 사용하지 않음 (추출 모드) | OpenAI 호환 엔드포인트 |
| 형태소 | Kiwi | Nori — 표준용어 사전을 양쪽 사용자 사전으로 공유 |
| 실행환경 | org.egovframe.rte 5.0(egovframe-rte-* 5.0.0) · Spring Boot 3.5 · Tomcat 10 · Java 17 · MyBatis · Flyway V1~V12(테이블 36개). 5.0은 Spring 6.2 · jakarta 세대이며, 신규 구축 기준으로 5.0을 씁니다. | |




프로세스 세 개를 한 대에 모아도 되고, 세 대로 나누어도 됩니다. AWS·Azure 같은 클라우드 계정은 필요 없고, 제품이 동작하는 데 외부 서비스를 호출하지 않습니다. 외부로 나가는 연결은 기관이 켠 것뿐입니다 — LLM, 문자(SENS), 본인확인, 동영상 게시판의 유튜브 썸네일.
AI 사이드카를 제외하고 core와 portal만 운영해도 되고, LLM 호출만 DMZ의 squid로 내보내도 됩니다.
비어 있는 PostgreSQL 하나와 환경변수 여섯 개면 됩니다. 처음 실행할 때 Flyway가 테이블 36개를 만듭니다. 자세한 절차는 제품 소개서 10쪽에 있습니다.
문의 — 주식회사 크래프틱시스템즈. GitHub Issues에 남겨 주시거나 아래로 연락 주십시오. 전자우편 mhb8436@gmail.com