← All projects

RAIM Schedule Manager

AI-ASSISTED FULLSTACK

서울로봇인공지능과학관 직원 일정·교육·초과근무 통합 관리

Period
2026.06 (약 2주)
Role
기획 · 1인 풀스택 (Claude 기반 바이브 코딩)
Cycle
발견 → 기획 → 개발 → 적용·운영

Why

직원 일정과 교육 신청이 엑셀과 수기로 흩어져 있었습니다.

하지만 손이 제일 많이 가는 쪽은 외부 교육이었습니다 — 연간 일정이 외부 사이트 표에만 있어 사람이 옮겨 적어야 했습니다.

전 직원이 같은 캘린더를 보고, 외부 일정은 Puppeteer 크롤러가 채우고, 정원은 Firestore 트랜잭션이 지킵니다.

기획부터 배포까지 약 2주. 지금도 근무 현장에서 쓰고 있습니다.

My Role in the Architecture

백엔드 서버 없이 혼자 기획부터 배포까지 진행했습니다.

Firebase Auth·Firestore를 백엔드 대신 사용해 인증·권한·데이터 계층을 설계했습니다.

관리자 승인 기반 계정 상태(대기 → 활성 · 정지)를 두고, Vue Router 가드에서 권한별 접근을 차단했습니다.

Vue 클라이언트부터 외부 일정을 긁어오는 Puppeteer 자동화 스크립트까지 시스템 전체를 직접 구현했습니다.

Stack

Frontend
Vue 3TypeScriptTailwind CSSv-calendar
Infra
Firebase FirestoreFirebase HostingServerless
자동화
Puppeteer

Highlights

서버 없이 설계한 인증·권한 체계

별도 백엔드 없이 Firebase Auth·Firestore만으로 인증과 데이터를 처리해 유지 비용을 최소화했습니다.

관리자 승인 기반 계정 상태(대기/활성/정지)를 두고 Vue Router 가드에서 권한별 접근을 차단했습니다.

월간 캘린더로 전 직원 일정 공유

교육·출장·휴무·연차·반차 등 유형별 일정을 등록하면 전 직원이 한 화면에서 봅니다.

v-calendar 기반 캘린더에 유형별 색상을 입혀 한눈에 파악되도록 구현했습니다.

유형별 색상을 적용한 월간 캘린더

불규칙한 외부 표 구조를 자동 수집

Puppeteer 크롤러로 외부 교육 사이트의 연간 일정을 수집해 Firestore에 저장합니다.

숨겨진 셀·날짜 뭉침 등 불규칙한 표 구조는 파싱 로직으로 보정해 데이터 정확도를 확보했습니다.

Puppeteer 크롤러로 자동 수집한 연간 교육 일정

동시 신청에도 안전한 정원 관리

교육 신청 인원은 Firestore 트랜잭션으로 처리해 동시 신청 시 정원 초과를 막았습니다.

AI가 생성한 코드를 그대로 쓰지 않고, 권한 가드·키 관리 같은 구조와 보안을 직접 검증했습니다.

Friction & Resolution

회원가입 기능을 배포한 직후, 가입이 되지 않는 문제가 발생했습니다.

직원들이 매일 쓰는 시스템이라 원인을 찾기 전에 먼저 되돌렸습니다 — 배포에서 롤백까지 34분이었습니다.

원인은 제 실수였습니다. 서버 없이 Firebase만으로 인증·권한을 처리하는 구조를 택했는데, 인증 규칙에 대한 이해가 부족한 상태에서 손을 댄 것이 가입 경로를 막았습니다.

고쳐서 다시 올리는 것보다, 쓰는 사람이 멈춰 있는 시간을 줄이는 것이 먼저라고 판단했습니다.

Result

  • 실제 근무 현장에 배포, 운영 중

Next project