웹 · 앱 · 프로그램 개발
Selected work
누르면 상세가 열립니다사내 통합 포털
사내 임직원용 통합 포털입니다. 부서별 사내도구·장비목록·소모품 대장을 한 곳에서 관리하고, 로그인 한 번으로 PC와 모바일에서 함께 씁니다.
사내 임직원용 통합 포털 시스템입니다.
각 부서별 사내도구, 장비목록, 소모품 대장을 편리하게 관리할 수 있으며
하나의 웹에서 한 번의 로그인으로 PC와 모바일에서 관리 가능합니다.
통합 대시보드 (홈)
로그인하면 홈 화면에 해야 할 일들의 목록을 자동으로 정리해서 보여줍니다.
처리 안 된 PC 수리 요청
영업 · 시설 · 경영 게시판의 최근 글 등
해야 할 일들이 한 화면에 카드로 정리되어
"오늘 어떤 일부터 해야 할지" 선택하기 쉽게 제작했습니다.
각 카드를 누르면 해당 기능으로 이동하여 바로 업무를 시작할 수 있습니다.
사내 AI 도우미
포털 어디서나 우측 하단 채팅창을 열면 AI가 바로 대화를 시작합니다. 특별한 점은 "지금 이 화면"을 함께 이해하고 있다는 것 — 소모품 현황 화면에서 "이거 얼마 남았어?"라고 물으면 페이지를 벗어나지 않고 바로 답이 나옵니다.
필요하면 사내 자료(업무 매뉴얼, 규정 등)를 스스로 찾아 근거로 답하고, 답변은 실시간으로 타이핑되듯 표시됩니다. 최근 대화 맥락도 기억해서 연속으로 질문을 이어갈 수 있습니다.
AI 엑셀 처리
엑셀 파일을 올리고 "부서별로 합계 내서 시트 추가해줘" 처럼 원하는 걸 말로 설명하면, AI가 표 구조를 스스로 파악해서 실제로 데이터를 가공한 결과 파일을 만들어줍니다. 처리 과정은 로그와 실행 코드로 실시간 표시되고, 오래 걸리면 언제든 중단할 수 있습니다.
AI 이미지 생성 & 편집
글로 설명만 하면 이미지를 새로 만들어주고, 사진을 1~3장 올려서 "이 둘을 합성해줘" 같은 편집 요청도 처리합니다. "지브리풍으로" 같은 스타일 키워드를 말하면 그에 맞는 화풍이 자동으로 적용됩니다.
게시판 & 공지사항
영업·경영관리·시설·개인·공통 다섯 개 게시판으로 나뉘어 있어서 부서별로 필요한 글만 모아 볼 수 있습니다. 중요한 공지는 상단에 고정되고, 사진이나 파일을 첨부할 수 있고, 댓글로 의견을 주고받을 수도 있습니다.
개인 게시판은 작성자 본인 글만 보이도록 따로 걸러져서, 업무 메모장처럼도 쓸 수 있습니다.
소모품 관리대장
문구, 토너, 공구 같은 소모품을 품목별로 등록해두면 입고와 사용 내역을 날짜순으로 기록하고, 남은 수량은 자동으로 계산됩니다. "이번 달에 뭘 얼마나 썼는지"는 월별로, "그날 정확히 몇 개 남았는지"는 일자별로 바로 확인할 수 있습니다.
총무팀이 분기 보고서를 쓸 때는 조회 중인 기록을 그대로 엑셀 파일로 내려받아 붙여넣기만 하면 됩니다.
AS·부품구매 관리대장
수리 요청이나 부품 구매 이력을 날짜·내용·금액과 함께 사진 여러 장으로 남겨두는 대장입니다. 소모품 대장과 달리 고장·수리 이력 위주라 사진 증빙이 중요해서, 한 건당 여러 장을 순서대로 첨부할 수 있게 만들었습니다.
기존에 쓰던 엑셀 장부가 있다면 그대로 올려서 한 번에 등록할 수 있고, 업로드 즉시 어떤 행에 문제가 있는지 미리 보여줘서 확인 후 등록하게 됩니다.
PC/장비 QR 관리

회의실 PC, 공용 노트북 같은 장비마다 QR 라벨을 인쇄해 붙여두면, 휴대폰 카메라로 스캔하는 것만으로 그 장비의 사양·위치·비고 정보가 바로 화면에 뜹니다. 로그인 없이도 열리기 때문에 방문객이나 신입사원도 바로 확인할 수 있습니다.
새 장비가 들어왔을 때도 그 자리에서 QR을 스캔해 정보를 등록하면 되고, 지점(건물)별로 강의실 단위 전체 목록을 엑셀로 뽑아 자산 실사에 쓸 수도 있습니다.
PC 수리 요청
PC가 고장 나면 어느 건물 어느 자리의 어떤 PC인지와 함께 증상을 신고하고, 관리팀이 답변을 달아 처리하는 Q&A 게시판입니다. 처리가 끝나면 완료로 표시되고, 아직 처리 안 된 요청 건수는 홈 대시보드에 바로 표시됩니다.
QR로 장비를 조회한 화면에서 바로 수리 요청을 넣을 수 있어서, "어느 PC였는지" 헷갈릴 일 없이 정확한 장비에 신고가 연결됩니다.
사내 파일 저장소
부서 자료를 폴더로 정리해 올리고 내려받는, 회사 안에서만 쓰는 저장 공간입니다. 웹 화면인데도 폴더를 만들고 이름을 바꾸고 옮기고 복사하는 동작이 실제 파일 탐색기처럼 자연스럽습니다.
급여나 계약서처럼 민감한 폴더·파일은 비밀번호로 잠글 수 있고, 여러 파일을 골라 한 번에 압축해서 받을 수도 있습니다. 저장 공간이 얼마나 남았는지도 화면에서 바로 보입니다.
메모 & 할 일 관리
거래처 미팅 내용이나 잊지 말아야 할 메모를 부서별로 남겨두고, 개인 할 일은 체크리스트로 관리합니다. 완료한 항목은 바로 줄이 그이고, 진행률이 막대로 표시돼서 오늘 할 일이 얼마나 남았는지 한눈에 보입니다.
채용 공고 모아보기
사람인, 잡코리아, 고용24를 하나하나 들어가지 않아도, 세 사이트의 채용 공고를 한 화면에서 검색어와 조건으로 걸러 비교해볼 수 있습니다. 인사팀이 동종업계 채용 동향을 확인할 때도 유용합니다.
실시간 로그 알림 (관리자)
관리자 화면을 열어두면 어느 건물, 어느 회의실, 어느 좌석의 PC가 켜지고 꺼지는지, 새 장비가 등록되는지가 새로고침 없이 실시간으로 위에 쌓입니다. 월별로 걸러 보거나 특정 PC 이력만 따로 뽑아볼 수도 있습니다.
회원 관리 & 가입 승인
새로 가입하면 곧바로 이용할 수 있는 게 아니라 '승인 대기' 상태로 시작하고, 관리자가 승인해야 실제로 포털을 쓸 수 있습니다. 사내 시스템이라 아무나 가입해서 들어오면 안 되기 때문에 둔 안전장치입니다.
회원마다 프로필 사진과 권한(일반·관리자·슈퍼관리자)을 두고, 본인은 마이페이지에서 정보와 비밀번호를 바꿀 수 있습니다. 관리자는 권한 부여, 비밀번호 재설정, 회원 삭제까지 할 수 있습니다.
테마 스킨 & AI 성격
여러 개의 테마 중 하나를 고르면 화면 색·배경·레이아웃이 통째로 바뀝니다. 재미있는 건 화면뿐 아니라 AI 도우미의 성격까지 함께 바뀐다는 점 — 어떤 테마는 친근한 존댓말, 어떤 테마는 삐딱한 반말, 어떤 테마는 몽환적이거나 엉뚱한 말투로 답합니다.
딱딱한 업무 시스템에 각자 취향과 기분을 담을 수 있게 만든, 작지만 확실한 개인화 장치입니다.
DB 관리 콘솔 (슈퍼관리자)
여러 데이터베이스를 브라우저에서 직접 관리하는 슈퍼관리자 전용 콘솔입니다. 별도의 DB 관리 프로그램을 깔지 않아도, 웹 화면 하나에서 스키마와 테이블을 펼쳐 내용을 조회하고 실제 데이터까지 들여다볼 수 있습니다.
계정과 권한도 여기서 관리합니다. 사용자를 만들고 특정 스키마에 대한 권한을 부여하거나 회수할 수 있고, 스키마를 통째로 백업해 파일로 내려받거나 반대로 백업 파일로 복원하는 것도 콘솔 안에서 끝납니다.
다만 이름 하나 잘못 넣어도 위험한 도구라, 아무 계정이나 열 수 없게 슈퍼관리자에게만 열어두고, 입력값은 정해진 형식만 통과시켜 실수나 악용으로 엉뚱한 명령이 실행되지 않도록 막아뒀습니다.
휴게실
업무 사이 잠깐 쉬어가라고 만든 작은 테트리스 게임입니다. 설치나 로그인 없이 브라우저에서 바로 즐길 수 있어서, 딱딱한 업무 포털에 작은 숨구멍 하나 만들어 둔 느낌입니다.
교육 포트폴리오 전시 플랫폼
학원 졸업생의 포트폴리오 전시용 웹 갤러리입니다. 연도별·기수별로 정리해 전시하고, 방문자 누구나 쉽고 편리하게 결과물을 둘러볼 수 있습니다.
학원 졸업생의 포트폴리오 전시용 웹 갤러리입니다.
연도별, 기수별로 정리하여 전시 가능하며
방문자 누구나 쉽고 편리하게 졸업생들의 결과물을 둘러볼 수 있게 제작하였습니다.
지난 기수의 결과물이 그대로 남아 쌓이기 때문에, 학원을 소개하고 홍보하는 자료로도 함께 쓸 수 있습니다.
연도 · 과정별 둘러보기
먼저 연도를 고르면 그 해에 열린 교육 과정이 나타나고, 과정을 고르면 해당 팀들의 카드가 펼쳐집니다. 팀마다 자동으로 다른 색을 입혀 한눈에 구분되고, 팀명·팀원·썸네일이 카드에 정리됩니다.
PDF 작품은 따로 내려받지 않아도 화면에서 바로 미리보기로 열리고, 방문객이 취향대로 화면 테마도 바꿀 수 있습니다.
파일형 & 웹사이트형
작품 성격에 맞춰 두 가지 방식으로 올릴 수 있습니다. 발표자료·기획서 같은 문서형 산출물은 PDF·이미지 파일로 첨부하고, 수강생이 직접 만든 웹사이트는 통째로 압축해 올리면 압축을 풀어 실제로 동작하는 사이트로 전시됩니다.
즉 웹 포트폴리오는 캡처 이미지가 아니라 진짜 페이지로 열려서, 클릭하고 스크롤하며 그대로 체험할 수 있습니다.
관리자 등록 & 관리
담당자는 관리자 화면에서 팀별로 포트폴리오를 등록하고 썸네일·팀원·과정 정보를 함께 넣습니다. 연도·과정·키워드로 검색할 수 있고, 연도별 등록 현황이 자동으로 집계됩니다. 등록한 내용은 곧바로 공개 뷰어에 반영됩니다.
훈련과정 출결 전광판
강의장 앞 모니터에 띄우는 실시간 출결 현황판입니다. 정부 훈련포털에서 과정별 출결을 자동으로 가져와 출석·지각·결석·퇴실을 한눈에 보여줍니다.
정부 훈련포털 행정시스템에서 과정별 출결을 자동으로 가져와
출석 · 지각 · 결석 · 퇴실을 한눈에 보여줍니다.
화면은 스스로 갱신되고 정해진 시간에 켜졌다 꺼지기 때문에, 담당자가 따로 조작할 일이 없습니다.
실시간 출결 전광판
진행 중인 과정마다 카드가 뜨고, 그 안에 출석·지각·결석·대기 인원이 집계됩니다. 수강생 한 명 한 명도 이름표 형태로 표시돼서 지금 누가 안 왔는지, 누가 늦게 왔는지 바로 보입니다.
화면은 10초마다 저절로 갱신되고, 아침 8시 30분에 자동으로 켜져 밤 10시 30분에 꺼집니다. 오늘 강의가 없는 과정이나 전원 퇴실이 끝난 과정은 자동으로 목록 아래로 내려가, 지금 신경 쓸 과정이 항상 맨 위에 있습니다.
출결 특이사항 조회
날짜와 과정을 고르면 정상 출석은 빼고 지각·조퇴·외출·결석만 골라서 보여줍니다. 출결 보고서를 작성하거나 훈련생에게 연락해야 할 때, 25명 명단을 훑지 않고 챙겨야 할 몇 명만 바로 확인할 수 있습니다.
훈련과정 정보 검색
공식 훈련포털이 제공하는 공개 API로 훈련과정 목록과 상세 정보, 회차별 일정, 훈련생 통계를 가져와 보여줍니다. 과정명·기간·훈련시간·수료율 같은 정보를 사이트에 따로 들어가지 않고 이 화면에서 검색할 수 있습니다.과정별 설정 & 훈련생 연락처


과정마다 강의 요일, 점심시간 길이, 퇴실 유예 시간을 설정할 수 있습니다. 주말반이나 격일반이 결석으로 잘못 잡히지 않게 하고, 과정별로 다른 시간표를 정확히 반영하기 위한 값들입니다.
결석자에게 연락할 수 있도록 훈련생 전화번호도 함께 관리하는데, 과정이 끝나고 일정 기간이 지나면 과정 설정과 연락처가 자동으로 삭제돼 불필요한 개인정보가 남지 않습니다.
공식 API의 한계, 그래서 통신을 직접 뜯었습니다
처음엔 훈련포털 공식 API만으로 만들려 했습니다. 그런데 공식 API는 과정 정보·통계 같은 정적인 데이터만 줄 뿐, "지금 이 순간 누가 입실했는지" 같은 실시간 출결은 열어주지 않았습니다. 전광판의 핵심이 바로 그 실시간인데, 정작 그리로 가는 정식 통로가 없었던 겁니다.
그래서 담당자가 실제로 쓰는 행정시스템이 서버와 주고받는 통신을 HttpToolkit으로 직접 가로채 들여다봤습니다. 응답은 사람이 읽는 형식이 아니라 자체 규격의 바이너리(HEX) 덩어리였습니다. 이 raw 헥스 데이터를 AI의 도움을 받아 바이트 단위로 분석해 구조를 밝혀내고, 그 규격대로 요청을 만들고 응답을 해석하는 디코더·인코더를 직접 구현해 실시간 출결을 뽑아냈습니다.
정리하면, 공식적으로는 막혀 있던 실시간 출결 전광판을 통신 분석 → 헥스 구조 해독 → 자체 프로토콜 구현이라는 우회로로 실제 돌아가게 만든 프로젝트입니다.
HexaStay — 호텔 통합 관리 시스템
호텔의 전반적인 업무를 하나의 시스템으로 관리합니다. 본사·지사·지점을 한 플랫폼에서 함께 운영하고, 투숙객의 주문·요청과 직원의 업무·정산을 처리합니다.
호텔의 전반적인 업무를 하나의 시스템으로 관리합니다.
본사와 여러 지사, 지점을 하나의 플랫폼에서 함께 운영 가능하도록 제작하였으며
직원 : 업무, 매출 정산
투숙객 : 예약, 룸서비스, 요청사항 전달
등을 쉽고 편리하게 관리할 수 있는 기능을 포함하고 있습니다.
팀 프로젝트로 진행했습니다.
객실 QR 룸서비스 주문
객실마다 고유한 QR이 붙어 있어서, 투숙객이 휴대폰으로 찍으면 그 방 전용 주문 화면이 열립니다. 어느 방에서 온 주문인지 자동으로 연결되기 때문에 전화로 방 번호를 말할 필요가 없습니다.
메뉴를 고르고 옵션(사이드 변경, 사이즈 등)을 선택해 장바구니에 담고, 보유한 쿠폰으로 할인받아 카드로 결제하는 것까지 휴대폰에서 그대로 끝납니다. 주문은 접수 → 준비중 → 완료 순으로 상태가 바뀌고 취소도 가능합니다.
다국어 메뉴
외국인 투숙객이 많은 호텔 특성을 반영해 메뉴 이름·설명·카테고리를 언어별로 제공합니다. 투숙객이 따로 설정하지 않아도 접속한 기기의 언어에 맞는 메뉴가 자동으로 표시됩니다.
번역이 등록되지 않은 메뉴는 원래 이름 그대로 나오기 때문에, 번역 작업이 밀려도 메뉴가 빈칸으로 보이거나 사라지는 일은 없습니다.
호텔 내 매장 주문
호텔 직영 룸서비스와 별개로 로비 카페, 라운지, 편의점 같은 입점 매장을 따로 등록해 각자 메뉴와 주문을 관리합니다. 투숙객은 매장을 골라 주문하고, 매장별로 장바구니가 분리돼 카페 주문과 라운지 주문이 섞이지 않습니다.
매장 직원에게는 매니저·부매니저·매장직원 권한이 따로 있어서, 자기 매장에 들어온 주문만 확인하고 처리합니다.
주문 접수 · 처리 (직원)
투숙객이 QR로 주문을 넣으면 직원 화면에 실시간으로 새 주문 알림이 뜨고, 안 읽은 주문은 배지로 쌓입니다. 직원은 여러 건을 한 번에 접수하고, 준비가 끝나면 완료로, 문제가 있으면 취소로 처리합니다.
결제는 Toss로 이뤄집니다. 룸서비스와 입점 매장 결제가 각각 연동돼 있어, 주문부터 실제 카드 결제까지 화면 안에서 끝납니다.
객실 & 룸케어 관리
객실별 투숙 여부와 체크아웃 예정일을 한눈에 보여주고, 투숙객이 남긴 청소·비품 요청이 실시간으로 올라옵니다. "수건 2장 더", "오후 2시 이후 청소" 같은 요청을 직원이 확인하고 처리 완료로 표시합니다.
회원가입 없이 QR만으로도 요청할 수 있게 해서, 잠깐 머무는 투숙객도 부담 없이 이용할 수 있습니다.
체크아웃 설문 & 쿠폰
체크아웃한 다음날 오전, 시스템이 전날 퇴실한 객실을 자동으로 찾아 설문 메일을 보냅니다. 담당자가 매번 챙기지 않아도 되고, 지점마다 설문 문항을 다르게 쓸 수 있습니다. 응답은 항목별 만족도로 집계돼 지점별로 확인됩니다.
재방문을 유도하는 쿠폰도 함께 운영합니다. 생일·가입·이벤트 등 종류별로 할인율과 발급 한도가 정해져 있어 회원마다 자동으로 관리됩니다.
직원 급여 관리
호텔 직원의 급여를 등록하고 관리합니다. 본사·지점 소속 직원뿐 아니라 로비 카페·라운지 같은 입점 매장 직원의 급여도 매장별로 따로 관리돼서, 한 시스템 안에서 호텔 인력과 매장 인력을 함께 다룰 수 있습니다.
지점 · 매장 정산
객실에서 나온 룸서비스와 호텔에 입점한 매장 주문이 모두 그 지점의 매출로 모입니다. 관리자는 정산 화면에서 이 매출을 기간별 차트와 목록으로 보고, 날짜 범위를 정해 원하는 구간만 좁혀 볼 수 있습니다. 목록은 스크롤할수록 다음 구간을 이어서 불러옵니다.
집계 범위는 조직 구조를 그대로 따릅니다. 지점 관리자는 자기 지점 정산만 보고, 본사는 전체를 봅니다. 입점 매장 관리자에게는 자기 매장 전용 정산이 따로 열려서, 매출·원가·순익과 그 합계를 매장 단위로 확인합니다.
사내 AI 어시스턴트
회사 안 서버에서 직접 돌리는 사내 전용 AI입니다. 보고 있는 화면을 이해한 채로 대화하고, 문서 검색·웹 검색·이미지 생성을 채팅창 하나에서 처리합니다.
회사 안 서버에서 직접 돌리는 사내 전용 AI입니다.
언어 모델 · 이미지 생성 · 데이터 처리 서버를 전부 사내에 두어
외부 AI 서비스에 회사 자료를 올리지 않고 사용 가능합니다.
모드를 고르거나 버튼을 찾을 필요 없이, 하고 싶은 말을 하면 AI가 질문에 맞는 기능을 스스로 골라 실행합니다.
화면 맥락을 아는 대화
질문을 보낼 때 지금 열려 있는 화면의 내용이 함께 전달됩니다. 그래서 소모품 현황 화면에서 "토너 얼마나 남았어?"라고만 물어도, 품목명을 다시 적거나 화면을 벗어나 검색할 필요 없이 바로 답이 나옵니다.
"이거", "여기" 같은 대명사로 말해도 통하고, 이어지는 질문도 앞의 맥락을 기억한 채로 대화가 계속됩니다.
사내 문서 기반 답변
취업규칙·업무 매뉴얼·보안 규정 같은 사내 문서를 등록해두면, AI가 관련 문서를 찾아 그 내용을 근거로 답합니다. 일반적인 상식이 아니라 "우리 회사 기준"으로 답을 받을 수 있습니다.
다만 규정 문서는 아무나 열람하면 안 되므로, 이 기능은 관리자 계정에서만 켜집니다. 일반 직원 대화에서는 문서 검색 기능 자체가 AI에게 제공되지 않아서 내용이 새어 나갈 여지를 없앴습니다.
기능을 고르지 않아도 되는 구조
"내일 날씨 어때?"라고 하면 웹을 검색하고, 엑셀을 올리고 "부서별로 합쳐줘"라고 하면 파일을 가공하고, "그려줘"라고 하면 이미지를 만듭니다. 그냥 인사를 건네면 굳이 아무 기능도 쓰지 않고 대화만 합니다.
사용자가 "검색 모드", "이미지 모드"를 먼저 선택할 필요가 없고, 기능이 늘어나도 화면에 버튼이나 메뉴가 늘어나지 않습니다.
말로 지정하는 화풍
"지브리풍으로", "50년대 느와르처럼" 같은 말을 덧붙이면 그에 맞는 화풍이 자동으로 적용됩니다. 지브리·90년대 시트콤·느와르·다크판타지·SF·색연필 극사실 등 11종의 화풍을 한국어 키워드로 부를 수 있습니다.
사진 없이 글로만 설명하면 새로 만들고, 사진을 한 장 올리면 그 사진을 편집하고, 두세 장을 올리면 합성합니다. 만들어진 이미지에 "여기에 눈 내리게 해줘"처럼 이어서 편집을 요청할 수도 있습니다.
언제든 멈출 수 있게
이미지 생성이나 엑셀 처리는 1~2분씩 걸리는 작업이라, 지금 잘 돌고 있는지 알 수 있도록 진행 상황과 처리 로그를 실시간으로 보여줍니다. 답변도 타이핑되듯 조금씩 표시돼서 멈춘 건지 처리 중인지 헷갈리지 않습니다.
중단 버튼을 누르면 화면만 멈추는 게 아니라 서버에서 돌던 작업까지 실제로 중단되고, 점유하던 자원이 바로 반납돼 다음 사람이 기다리지 않아도 됩니다. 브라우저를 그냥 닫아도 동일하게 정리됩니다.
PC 통합 제어·모니터링 시스템
강의실과 사무공간의 PC를 한 화면에서 관리하는 데스크톱 프로그램입니다. 화면 보기·원격 지원·공지·메신저·일괄 명령을 자리에서 일어나지 않고 처리합니다.
강의실과 사무공간의 PC를 한 화면에서 관리하는 데스크톱 프로그램입니다.
화면 보기 · 원격 지원 · 공지 · 메신저 · 파일 전달 · 상태 점검 · 일괄 명령을
관리자가 자리에서 일어나지 않고 처리 가능합니다.
모든 PC에 같은 프로그램 하나만 설치하면 되고, 관리 권한이 있는 자리에서만 관리 화면이 나타납니다.
설치하면 그 자리가 곧 신원 — 계정도 비밀번호도 없습니다
보통 이런 시스템은 PC마다 계정을 만들고 로그인을 시킵니다. 그런데 강의실 PC는 앉는 사람이 매일 바뀌는데 자리는 그대로라서, "누가 쓰는가"보다 "어느 자리인가"가 훨씬 중요했습니다.
그래서 로그인을 아예 없앴습니다. 프로그램을 설치하면 그 PC가 자기 자신을 서버에 등록하고, 관리자는 대시보드에서 "1A 강의실 · 1A-01"처럼 이름만 붙여주면 끝입니다. 인터넷 주소가 바뀌어도 같은 PC로 계속 인식되기 때문에, 공유기를 바꾸거나 자리를 옮겨도 다시 등록할 필요가 없습니다.
자리마다 학생·강사·관리자·최고 관리자 중 하나를 정해두면 그 자리에서 할 수 있는 일이 달라집니다. 학생 자리에서는 관리 화면이 아예 보이지 않고, 관리자 자리에서는 프로그램을 켜는 순간 관리 콘솔이 열립니다. 권한을 바꾸면 프로그램을 다시 켜지 않아도 바로 반영됩니다.
화면 보기 · 강의실 전체 한눈에 보기
특정 PC 하나를 골라 화면을 보거나, 강의실 하나를 통째로 열어 그 안의 PC 화면들을 타일로 늘어놓고 볼 수 있습니다. 타일을 누르면 그 화면만 크게 볼 수 있고, 모니터를 두 대 쓰는 자리는 어느 모니터를 볼지 고를 수 있습니다.
화면을 계속 통째로 보내면 수업용 인터넷이 느려집니다. 그래서 방금 바뀐 부분만 골라서 보냅니다. 문서 작업처럼 화면이 거의 안 바뀌는 상황에서는 오가는 데이터가 거의 없고, 그러면서도 글자는 뭉개지지 않고 또렷하게 보입니다.
보는 방식은 두 가지입니다. 평소에는 상대에게 요청을 보내 수락을 받아야 열리고, 이때 상대 화면에는 "공유 중"이 표시되며 본인이 언제든 끊을 수 있습니다. 강의실 전체 보기는 최고 관리자가 따로 허용한 강의실에서만 열립니다.
반대 방향도 됩니다. 강사가 자기 화면을 방송하면 같은 강의실 학생들이 그 화면을 받아 볼 수 있어서, 프로젝터가 잘 안 보이는 뒷자리에서도 시연을 따라갈 수 있습니다.
원격 제어와 파일 주고받기
화면만 봐서는 해결이 안 되는 문제는 관리자가 직접 마우스와 키보드를 잡습니다. 프린터 설정, 프로그램 설치, 네트워크 설정처럼 말로 설명하기 번거로운 일을 대신 눌러서 끝냅니다.
제어는 상대가 수락해야 시작되고, 진행 중에는 화면에 계속 표시가 떠 있으며, 상대가 단축키 하나로 언제든 끊을 수 있습니다. 제어 중에는 그 PC로 파일을 보내거나 그 PC에서 파일을 가져올 수도 있어서, 설치 파일이나 수업 자료를 따로 옮길 필요가 없습니다.
관리자·강사 자리는 아예 제어 대상이 되지 않게 막아두었습니다. 관리 권한을 가진 사람이라도 다른 관리자의 화면은 볼 수 없습니다.
공지와 메신저
공지를 보내면 윈도우 구석의 작은 알림이 아니라, 화면 한가운데에 확실히 보이는 창으로 뜹니다. "17시에 네트워크 점검이 있으니 저장해 두세요" 같은 공지는 못 보고 지나가면 의미가 없기 때문입니다. 강의실 전체나 특정 PC를 골라 보낼 수 있고, 보낸 공지는 공지함에 남아 나중에 다시 볼 수 있습니다.
메신저도 함께 들어 있습니다. 1:1 대화와 단체 채팅방을 만들 수 있고, 읽으면 표시가 사라지는 읽음 확인, 잘못 보낸 메시지 전송 취소, 파일 보내기, 특정 상대 차단, 알림 끄기, 방해금지 시간대 설정까지 익숙한 메신저에서 기대하는 것들이 들어 있습니다. 대화 내용은 그 PC에 30일 동안 보관됩니다.
PC 상태 점검과 일괄 명령
강의실을 고르고 점검을 누르면, 그 안의 PC들이 각자 자기 상태를 보고합니다. 디스크 여유가 부족하거나 메모리가 모자란 PC는 '점검 필요'로 표시되고, 지정해 둔 프로그램이 깔려 있는지도 함께 확인됩니다. 결과는 도착하는 대로 채워지고, 응답이 없는 PC는 몇 번 더 물어본 뒤 '응답 없음'으로 남습니다.
정리된 결과는 파일로 내려받을 수 있어서, 장비 교체 견적이나 실사 자료로 그대로 쓸 수 있습니다.
여러 대에 한 번에 내리는 명령도 있습니다. 공지 일괄 발송, 특정 프로그램이나 사이트를 모든 PC에서 동시에 열기, 일괄 재시작, 수업이 끝난 뒤 전체 전원 끄기 같은 것들입니다. 전원을 끄거나 권한을 바꾸는 무거운 명령은 최고 관리자만 쓸 수 있고, 누가 언제 무엇을 했는지 모두 기록에 남습니다.
요청사항 · 할 일 · 자동 업데이트

사용자는 메신저에서 바로 "1A-06 프린터가 인식이 안 됩니다" 같은 요청을 남길 수 있습니다. 어느 자리에서 보냈는지가 자동으로 붙기 때문에 "어느 PC였는지" 되묻는 일이 없고, 관리자 화면에는 곧바로 알림이 뜹니다. 처리하면 완료로 표시되고, 본인은 자기가 넣은 요청의 진행 상황을 볼 수 있습니다.
관리자용 할 일 목록도 있습니다. 마감 시각을 정해두면 프로그램이 알림을 띄우고, 공용 목록은 관리자들이 함께 보며 나눠 처리합니다.
프로그램을 새 버전으로 올릴 때 PC를 한 대씩 돌 필요가 없습니다. 서버에 새 버전을 올려두면 각 PC가 알아서 받아 조용히 설치하고, 급하면 관리자가 "지금 배포"를 눌러 즉시 반영시킬 수 있습니다. 사용자 화면에는 설치 창이 뜨지 않습니다.
반대로 학생이 프로그램을 임의로 꺼버리면 관리가 안 되기 때문에, 종료할 때는 관리 비밀번호가 필요하고 그 비밀번호는 서버가 확인합니다.
푸드트럭 운영 통합 시스템
푸드트럭 여러 대를 지점 단위로 운영하는 회사가 실제 영업에 쓰고 있는 시스템입니다. 출퇴근·일일 정산부터 매출·재고·발주·급여까지 한 흐름으로 이어집니다.
푸드트럭 여러 대를 지점 단위로 운영하는 회사가 실제 영업에 쓰고 있는 시스템입니다.
직원 : 위치 기반 출퇴근, 일일 판매 정산
사무실 : 매출, 재고, 발주, 급여, 직원 위치 관리
등을 현장에서는 휴대폰으로, 사무실에서는 PC로 함께 처리합니다.
한 번 입력한 숫자가 매출과 재고, 급여까지 알아서 이어지도록 만들었습니다.
출근은 정해진 자리에서만, 근무지는 요일별로
푸드트럭은 매일 서는 자리가 다릅니다. 그래서 직원마다 요일별로 어디에 몇 시에 서는지를 지도에서 찍어 배정합니다. 직원 휴대폰에는 오늘 갈 자리들이 순서대로 뜨고, 실제로 그 자리에 도착해야 다음 자리로 넘어갑니다. 길찾기를 누르면 내비 앱이 바로 열립니다.
출근 버튼은 그날 첫 근무지 반경 안에 있어야 눌립니다. 집에서 출근을 누르는 일을 막기 위한 것인데, 사정이 있으면 지도와 함께 예외 출근을 신청하고 관리자가 승인합니다. 반대로 퇴근·정산은 위치와 무관합니다 — 장사를 끝내고 어디로 이동했든 마감할 수 있어야 하니까요.
이미 정산까지 끝낸 날 출근을 다시 누르면, 재출근 대신 출퇴근 시간 정정 요청 화면으로 자동으로 넘어갑니다.
하루를 마감하는 정산
장사가 끝나면 직원이 그날 판매를 입력합니다. 품목마다 몇 개 팔았는지와 남은 재고를 넣으면 매출이 자동으로 계산되고, 가스비·자릿세 같은 그날 지출을 더하면 순수익까지 나옵니다. 마감을 누르면 그대로 퇴근 처리되고 위치 추적도 꺼집니다.
문제는 직원마다 파는 게 다르다는 것이었습니다. 트럭과 지역에 따라 취급 품목도 가격도 달라서, 관리자가 "이 트럭은 이 품목을 이 가격에 판다"는 틀을 만들어 직원에게 지정합니다. 지정된 직원은 품목과 단가가 고정돼 수량만 넣으면 되고, 지정되지 않은 직원은 품목을 직접 추가해 입력합니다.
나중에 그 틀을 고쳐도 이미 지나간 정산 금액은 그대로입니다. 지난달 매출이 오늘 단가 변경 때문에 바뀌면 안 되니까요.
매출 조회와 수정 승인
기간을 골라 매출 추이를 봅니다. 최근 7일·30일·90일·전체 중에 고르고, 일별이 너무 촘촘하면 주별이나 월별로 묶어 볼 수 있습니다. 막대는 총매출, 선은 순수익이고 원하면 한쪽만 볼 수도 있습니다.
목록의 행을 누르면 그날 무엇을 몇 개 팔았는지, 기타 지출이 무엇이었는지가 펼쳐집니다. 합계만 보고 "이날 왜 적지?"에서 멈추지 않고 바로 안을 들여다볼 수 있습니다.
숫자를 잘못 넣었을 때는 직원이 직접 고치지 못하고 수정 요청을 올립니다. 대표가 승인해야 반영됩니다 — 마감된 매출이 조용히 바뀌는 일을 막기 위한 장치입니다.
급여 · 정산 — 매출이 그대로 이어집니다
대표는 매달 급여와 정산을 한 묶음 화면에서 처리합니다. 급여는 따로 계산할 필요가 없습니다 — 직원이 매일 마감한 판매 기록에서 판매개수 × 단가로 지급액이 자동으로 잡혀, 지점별·직원별로 정리돼 나옵니다. 아직 정산을 마감하지 않은 날이 있으면 "미마감 O건"으로 먼저 알려줘서, 빠진 데이터 위에서 급여가 계산되는 일을 막습니다.
급여 외에 그달에 얹는 항목도 함께 답니다. 추가 수당이나 차주 지원금은 날짜·금액·메모를 달아 등록하고, 차주 정산은 매출에서 재료비·소모품비·기타 지출·급여를 빼 순정산액까지 자동으로 뽑아줍니다. 한 사람 몫만 보고 싶으면 지점이나 직원으로 걸러 보고, 달은 화살표로 넘겨 지난달과 비교합니다.
실제로 돈이 나갔는지는 따로 관리합니다. 관리자가 지급을 '입금 완료'로 체크하면 대표가 '확인'으로 잠가서, 미지급 → 지급 → 확인 세 단계로 상태가 남습니다. 마감된 지급 내역이 조용히 바뀌지 않도록 하는 장치입니다.
재고와 발주가 저절로 맞물립니다
유통사에 발주를 넣고 배송 완료로 처리하면 그 수량이 물류센터 재고로 자동으로 들어옵니다. 직원이 출근하며 챙겨간 만큼 창고에서 빠져 트럭으로 옮겨가고, 저녁에 정산하며 넣은 판매·폐기 수량만큼 트럭에서 빠집니다.
핵심은 재고를 위해 따로 입력하는 일이 없다는 것입니다. 이미 하고 있던 발주와 정산이 그대로 재고가 됩니다. 정산을 고쳐 다시 저장해도 차이만큼만 반영되기 때문에, 두 번 저장했다고 재고가 두 배로 빠지지 않습니다.
품목이 늘어나면 목록이 길어지니 닭꼬치류·소스·비품처럼 그룹으로 묶어 볼 수 있고, 언제 무엇이 왜 움직였는지가 기록으로 남습니다.
지금 어디에 있는지, 어디에서 장사하는지
출근한 직원의 위치가 지도에 표시되고, 정산을 마감하면 꺼집니다. 오늘 어디를 거쳐 다녔는지 동선도 함께 볼 수 있고, 요일별로 걸러 "매주 화요일엔 어디를 도는지" 같은 것도 확인합니다. 동선은 7일치만 남습니다.
가까이 있는 직원들은 지도에서 겹쳐 보이는데, 확대하면 자동으로 각자 떨어져 나와 개별로 고를 수 있습니다.
장사 지역 지도는 따로 있습니다. 배정된 자리들을 지점별 색으로 찍어두고, 점을 누르면 누가 몇 시에 서는지와 상세 주소, 길찾기 버튼이 나옵니다.
차량 관리 — 정비 · 점검 · 수리
트럭도 관리 대상입니다. 엔진오일·타이어·브레이크 같은 정비 항목을 등록해두면 마지막 교체일로부터 얼마나 지났는지, 주행거리가 얼마나 쌓였는지를 항목마다 추적해서 교체 시기가 다가온 것을 먼저 짚어줍니다. 냉각수 누수 같은 수리는 날짜·내용·수리비와 함께 사진으로 이력에 남깁니다.
직원도 자기 차량을 챙깁니다. 본인 트럭의 소모품 교체나 사고 이력을 직접 남길 수 있어서, 현장에서 있었던 일이 사무실 기록과 따로 놀지 않습니다.
수리비 같은 차량 지출은 투자자 입금과 연동돼, 누가 얼마를 넣어 무엇을 고쳤는지가 정산과 이어집니다.
공지 & 개인 메모
대표나 공지 권한이 있는 관리자가 공지를 올리면 전 직원에게 전해집니다. 아직 안 읽은 공지는 메뉴에 배지 숫자로 표시되고, 중요한 건 앱 안에서 배너로 떠서 "못 보고 지나가는" 일을 줄였습니다. 읽으면 배너가 닫히고 배지도 줄어듭니다.
개인 메모는 각자 자기 것만 남기는 공간입니다. 거래처 미팅 내용이나 비품 주문 리스트처럼 잊지 말아야 할 것을 그때그때 적어두고, 본인만 보고 관리합니다.
역할마다 다른 화면, 그리고 운영
같은 시스템이지만 직원·지점장·대표·투자자가 보는 것이 다릅니다. 지점장은 기본적으로 자기 지점만 보고, 대표는 전체를 봅니다. 투자자에게는 정산 현황과 캘린더를 읽기 전용으로 엽니다.
권한은 역할에 고정돼 있지 않고 스위치처럼 켜고 끕니다. "매출 조회" "전체 지점 보기" "물류센터 관리"를 특정 지점장에게만 열어주는 식이라, 사람을 승진시키지 않고도 일만 나눌 수 있습니다.
현장에서는 안드로이드 앱으로 씁니다. 공지는 항상 푸시로 가고, 다음 근무지로 이동할 시간은 10분·5분 전에 주소·길찾기와 함께 알려줍니다(이 알림만 직원이 끌 수 있습니다).
영업 데이터라 잃으면 곤란해서, 매시간 자동 백업이 돌고 엑셀로도 내려받을 수 있습니다. 복구나 오래된 데이터 정리처럼 되돌릴 수 없는 작업은 비밀번호를 다시 확인한 뒤에만 실행됩니다.
지금이 아니라 앞으로를 보고 짠 데이터베이스
당장 돌아가는 것만 보고 짜면 규모가 커질 때 반드시 발목을 잡습니다. 그래서 트럭·지점·품목·직원이 몇 배로 늘어나도 구조를 갈아엎지 않도록 설계했습니다. 품목을 컬럼이 아니라 행으로 쌓는 헤더+라인 구조, 권한을 역할에 박지 않고 스위치로 켜고 끄는 구조, 재고를 잔량과 로그로 나눠 두는 구조 모두 "규모가 커졌을 때"를 기준으로 고른 선택입니다.
회계 성격의 데이터는 그때의 값을 그대로 박제해, 나중에 단가·품목이 바뀌어도 과거 정산이 흔들리지 않습니다. 새 지점·새 품목·새 역할이 생겨도 기존 데이터를 건드리지 않고 얹기만 하면 되도록, 확장을 데이터 모델 단계에서 미리 열어 두었습니다.
서버 관리기 — 개발자 없이도 서버를 돌보게
실제 영업에 쓰는 시스템이라 서버가 멈추면 그날 장사 기록이 막힙니다. 그래서 관리자가 개발자를 부르지 않고도 서버 상태를 확인하고 조치할 수 있는 서버 관리기를 함께 만들었습니다. 서버 상태와 자원 사용을 눈으로 확인하고 필요한 조치를 화면에서 바로 실행합니다.
재시작·정리·복구처럼 되돌릴 수 없는 작업은 반드시 비밀번호를 다시 확인한 뒤에만 실행되도록 잠가, 관리 편의와 안전을 동시에 잡았습니다.
데이터 백업 시스템 — 영업 기록은 잃으면 끝이니까
매출·정산·재고는 한 번 잃으면 되돌릴 수 없는 영업 데이터입니다. 그래서 매시간 자동 백업이 돌고, 필요하면 엑셀로도 내려받아 손안에 사본을 둘 수 있게 했습니다. 백업본을 이용한 복구나 오래된 데이터 정리 같은 위험한 작업 역시 비밀번호 재확인 뒤에만 실행됩니다.
How I work
도구와 원칙웹 개발
- Java · Spring Boot
- Thymeleaf · JPA
- MariaDB · PostgreSQL
- Python · FastAPI
프로그램 · 앱
- C# · .NET · WPF
- Android · Kotlin
- SignalR · SSE 실시간
- 배포 · 자동 업데이트
AI · LLM
- 로컬 LLM · Ollama
- RAG · 벡터 검색
- 이미지 생성 파이프라인
- 도구 호출 · MCP