Overview
K-Vault is a modern web application designed to help KAIST students access and manage course resources, including past exams, lecture slides, textbooks, and assignments. The platform features role-based access control, secure file storage, and an intuitive user interface.
Features
- 🔐 KAIST Email Authentication - Secure login with @kaist.ac.kr email validation
- 📚 Course Resource Management - Browse and filter resources by course, semester, and type
- 📄 File Upload/Download - Support for large files with chunked uploads (up to 50MB per chunk)
- 👥 Role-Based Access - Student and Admin roles with appropriate permissions
- 🔍 Advanced Search - Search across resources, courses, departments, and professors
- 📁 Course Catalog - Hierarchical view of courses and resources (Google Drive-style)
- 🎨 Modern UI - Responsive design with dark mode support
- ⚡ Real-Time Progress - Upload and download progress tracking
Tech Stack
- Frontend: Next.js 14 (App Router), TypeScript, TailwindCSS, shadcn/ui
- Backend: Supabase (PostgreSQL, Authentication, Storage)
- State Management: React Query
- Hosting: Vercel (Frontend), Supabase Cloud (Backend)
Security
- Row Level Security (RLS) enabled on all database tables
- KAIST email validation on authentication
- Signed URLs for secure file downloads (1-hour expiration)
- Role-based access control (Student/Admin)
- Private storage bucket with authenticated access only
File Upload Limits
- Single upload: 40MB (safety margin for Supabase's 50MB limit)
- Chunked uploads: Files larger than 40MB are automatically split into 40MB chunks
- Storage: Managed by Supabase (1GB on free tier)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request in the repository.