개발 동아리를 위한 참여도 · 과제 · 운영 관리 플랫폼
Crewman은 개발 동아리에 특화된 운영 관리 플랫폼입니다.
기존 동아리 운영은 오픈카톡방, 구글폼, 노션 등 여러 도구에 분산되어 있어 관리 비용이 높고 참여도 추적이 어렵다는 문제가 있습니다. Crewman은 이를 하나의 플랫폼으로 통합합니다.
현재 초점: 운영 중인 개발 동아리의 내부 운영 관리 (과제 관리 · 참여도 추적 · 게시판)
마일스톤: 하반기 모집 기능 확장 — 지원서 수집부터 합불 안내까지 단일 플랫폼으로 통합
🔗 서비스 바로가기
개발 동아리를 직접 운영하면서 아래 문제를 경험했습니다.
- 모집 프로세스 비효율 — 지원서 수집, 검토, 합불 통보를 수작업으로 처리
- 과제 관리 파편화 — 공지는 카톡, 제출은 구글폼, 채점은 노션으로 분산
- 참여도 파악 불가 — 출석률, 과제 제출률을 한눈에 볼 수 있는 도구 부재
범용 동아리 관리 툴이 아닌 개발 동아리의 운영 방식에 맞춘 서비스를 직접 만들었습니다.
과제 관리
- 과제 등록 및 마감일 설정
- 코딩 과제 / 단답식 / 서술식 유형 지원
- 과제 제출 및 채점 기능
- 멤버별 제출 현황 일괄 조회
참여도 관리
- 세션별 출석 체크
- 멤버별 출석률 및 과제 참여율 통계
게시판
- 공지사항 및 자유게시판
- 댓글 / 좋아요
알림
- 인앱 실시간 알림 (Supabase Realtime)
- 이메일 알림 (Resend)
- 동아리 모집 공고 등록 및 마감 관리
- 지원자 목록 조회 및 승인 / 거절 처리
- 합불 결과 자동 이메일 발송
- 특정 분야의 동아리뿐 아니라 범용 동아리 관리 플랫폼으로 발전예정
| 분류 | 기술 |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS v4 |
| 상태관리 | Zustand, TanStack Query v5 |
| 폼 검증 | React Hook Form, Zod |
| Backend | Supabase (Auth, DB, Storage, Realtime) |
| 메일 | Resend |
| 차트 | Recharts |
| 배포 | Vercel |
[React Client]
│
├── Supabase Auth → 회원가입 / 로그인 / 세션 관리
├── Supabase DB → 멤버, 과제, 게시판, 출석 데이터
├── Supabase Storage → 프로필 이미지
├── Supabase Realtime → 인앱 실시간 알림
└── Resend API → 이메일 알림 발송
src/
├── components/ # 공통 UI 컴포넌트
├── hooks/ # 커스텀 훅 (useAttendance, useProfile 등)
├── lib/ # Supabase 클라이언트, 유틸 설정
├── pages/ # 라우트별 페이지 컴포넌트
├── stores/ # Zustand 전역 상태
└── utils/ # 공통 유틸 함수
문제: 페이지 재방문 시 동일 채널에 중복 구독이 발생해 알림이 여러 번 수신
원인: 컴포넌트 언마운트 시 채널 구독 해제 처리 누락
해결: useEffect cleanup에서 supabase.removeChannel() 호출로 해결
문제: 로그인 후 프로필 로딩이 완료되지 않아 앱이 무한 로딩
원인: auth 상태 변경 이벤트에서 fetchProfile 비동기 대기 로직 오류
해결: auth 이벤트 핸들러 내 프로필 fetch 순서 재정리
문제: 모바일에서 사이드바 오버레이가 일부 컴포넌트 아래로 렌더링
원인: 부모 요소의 transform 속성이 새로운 스태킹 컨텍스트를 생성해 z-index 무력화
해결: 오버레이를 Portal로 분리하여 body에 직접 렌더링
문제: 과제 조회수 upsert 시 403 Forbidden 발생
원인: Supabase RLS(Row Level Security) 정책 미설정
해결: 해당 테이블에 적합한 RLS 정책 추가
- Spring Boot 백엔드 전환 — Supabase → Spring Boot 3 + PostgreSQL 마이그레이션
- JavaMail 메일 서버 직접 구현 — SMTP 직접 제어로 Resend 의존성 제거
- Ubuntu 홈서버 배포 — Nginx 리버스 프록시 구성
- 모집 기능 확장 — 지원서 수집, 합불 이메일 자동 발송
| 이름 | GitHub |
|---|---|
| 박진영 | @john9803 |