尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
인하대학교 캠퍼스 정보 큐레이션 플랫폼 INFORM의 프론트엔드 레포지토리입니다. 학교 공지사항·동아리·행사 일정을 한 곳에서 확인하고 관리할 수 있습니다.檢視完整 README ↗
인하대학교 캠퍼스 정보 큐레이션 플랫폼 INFORM의 프론트엔드 레포지토리입니다. 학교 공지사항·동아리·행사 일정을 한 곳에서 확인하고 관리할 수 있습니다.
| 분류 | 기술 | 버전 |
|---|---|---|
| UI 프레임워크 | React | 19.2.0 |
| 빌드 도구 | Vite | 7.2.2 |
| 라우팅 | React Router DOM | 7.9.5 |
| 스타일링 | Tailwind CSS | 4.1.17 |
| 클라이언트 상태 | Zustand | 5.0.8 |
| 서버 상태 | TanStack React Query | 5.90.7 |
| HTTP 클라이언트 | Axios | 1.13.2 |
| 인증 | @react-oauth/google | 0.13.4 |
| 리치 텍스트 에디터 | TipTap | 3.22.2 |
| 아이콘 | React Icons | 5.5.0 |
| 분석 | react-ga4 (GA4) | 2.1.0 |
| 타입 | TypeScript | 5.9.3 |
| 폰트 | LINE Seed Sans KR | 0.1.0 |
src/
├── api/ # API 통신 함수
│ ├── axios.js # Axios 인스턴스 (인증 인터셉터 포함)
│ ├── *.js # 기능별 API 함수
│ └── manage/ # 관리자 API (TypeScript)
├── assets/ # 정적 리소스 (아이콘, 이미지, SVG)
├── components/
│ ├── common/ # 공통 컴포넌트
│ │ ├── ErrorBoundary.jsx
│ │ └── ProtectedRoute.jsx
│ ├── main/
│ │ ├── adaptive/ # 모바일·데스크톱 공용 컴포넌트
│ │ │ ├── common/ # SearchBar, Badge, BackHeader, NotificationModal
│ │ │ └── feature/ # 기능별 컴포넌트 (HOM, EVL, EVD, CBL, CBD, MYP)
│ │ ├── desktop/ # 데스크톱 전용 컴포넌트
│ │ │ └── common/ # TabBar, MiniCalendar, Imminent, ServiceLink 등
│ │ └── mobile/ # 모바일 전용 컴포넌트
│ │ ├── common/ # mobileHeader, mobileTabBar, BottomSheet 등
│ │ └── feature/ # HotEventList, mobileEventRow 등
│ └── manage/ # 관리자 전용 컴포넌트 (TypeScript)
│ ├── common/ # ActionBtn, TableList, Menu, AlertModal 등
│ └── feature/ # MANDTE(에디터), MANHOM(대시보드) 등
├── constants/ # 필터 옵션, 카테고리·상태 색상 정의
├── hooks/ # 커스텀 훅
│ ├── useAlertModal.tsx
│ ├── useSearchHistory.js
│ ├── useCalendarPrefetch.js
│ └── useClubPrefetch.js
├── mocks/ # 개발용 목 데이터
├── pages/
│ ├── main/ # 사용자 페이지 (JSX, 10개)
│ ├── manage/ # 관리자 페이지 (TSX, 7개)
│ └── NOT/ # 에러·404 페이지
├── stores/ # Zustand 스토어
│ ├── useAuthStore.js # 인증 상태 (토큰, 유저 정보, persist)
│ ├── deviceStore.js # 디바이스 유형 감지 (isMobile)
│ └── useEVLFilterStore.js # 이벤트 목록 필터 상태
├── utils/ # 유틸리티 함수
│ ├── CalendarUtil.js # 캘린더 그리드·이벤트 바 계산
│ ├── dateUtil.js # 날짜 파싱·포맷·비교
│ ├── statusUtil.js # 공지 상태 매핑
│ └── AnalyticsTraker.js # GA4 페이지뷰 추적
├── App.jsx # 루트 컴포넌트 (라우터 설정, GA4 초기화)
├── main.jsx # 앱 진입점 (Provider 설정)
└── global.css # 전역 스타일 (CSS 변수, 애니메이션, TipTap)
| 경로 | 코드 | 설명 | 인증 필요 |
|---|---|---|---|
/ | HOM | 메인 캘린더 (월별 공지 일정, HOT 게시글) | |
/login | LGN | Google OAuth 로그인 | |
/onboarding | ONB | 신규 사용자 온보딩 가이드 | |
/events | EVL | 학교 공지사항·이벤트 목록 (검색·필터·페이지네이션) | ✅ |
/events/detail/:id | EVD | 이벤트 상세 (북마크, 첨부파일, 캘린더 추가) | ✅ |
/clubs | CBL | 동아리 목록 | ✅ |
/clubs/detail/:id | CBD | 동아리 상세 | ✅ |
/mypage | MYP | 내 프로필·북마크·학과 수정·계정 삭제 | ✅ |
/privacy-policy | PRI | 개인정보처리방침 | |
/terms-of-service | TOS | 이용약관 | |
/error, /* | NOT | 에러·404 페이지 |
/manage/*, TypeScript)| 경로 | 설명 |
|---|---|
/manage | 대시보드 (상태별 게시글 현황) |
/manage/login | 관리자 로그인 |
/manage/detail/:id | 게시글 상세 조회 |
/manage/edit, /manage/edit/:id | 게시글 작성·수정 (TipTap 에디터) |
/manage/staged | 반영 대기 게시글 |
/manage/garbage | 휴지통 (복구·영구 삭제) |
/manage/unreviewed | 미검수 게시글 |
@inha.edu, @inha.ac.kr) 도메인 검증# .env 파일을 프로젝트 루트에 생성
VITE_GOOGLE_CLIENT_ID=your_google_client_id
# 저장소 클론
git clone https://github.com/Team-Alimi/IN-FORM_Frontend.git
cd inform_frontend
# 의존성 설치
npm install
# 개발 서버 실행 (http://localhost:5173)
npm run dev
npm run build # 프로덕션 빌드 (dist/ 폴더 생성)
npm run preview # 빌드 결과 로컬 미리보기
npm run lint # ESLint 검사
npm run format # Prettier 포매팅
| 대상 | 규칙 | 예시 |
|---|---|---|
| 컴포넌트 파일 | PascalCase | EventRow.jsx |
| 유틸리티 함수 | camelCase | formatDateKey() |
| 상수 | UPPER_SNAKE_CASE | FILTER_OPTIONS |
| 페이지 폴더 | 3글자 대문자 코드 | HOM/, EVL/, EVD/ |
| import 경로 | @/ 절대 경로 | @/components/main/... |
type: 간단한 설명
| type | 설명 |
|---|---|
feat | 새로운 기능 |
fix | 버그 수정 |
docs | 문서 변경 |
style | 스타일 변경 (CSS, 포맷) |
refactor | 기능 변화 없는 코드 개선 |
chore | 설정·패키지·빌드 |
test | 테스트 코드 |
main ← 프로덕션 배포
dev ← 개발 통합 (기본 브랜치)
manageDev ← 관리자 기능 개발
기능 브랜치는 feat/기능명, fix/버그명 형태로 분기 후 dev에 병합합니다.