An open-source digital library and study desk for students and faculty, providing access to academic materials and focused on empowering knowledge for every student
A high-performance academic resource management system built with Next.js, TypeScript, and Supabase. The platform provides a centralized hub for students to access, download, and contribute study materials while implementing a robust administrative workflow for content moderation.
- Hierarchical Browse: Navigate resources organized by Faculty → Department → Academic Level → Course
- Full-Text Search: Search across keywords, course codes, and filenames
- Anonymous Access: Browse all resources without authentication
- User Accounts: Create account to download resources, create bookmarks
- Contributions: Faculty and students can upload resources
- Community Ratings: Download, bookmarks and views counts on resources to help other students
- Admin Dashboard: Moderate and manage resources at
/admin(admin role required)
- Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS
- Database: PostgreSQL (Supabase)
- Authentication: Supabase Auth
- Deployment: Vercel
- Node.js 20+
- Supabase account
- Vercel account (for deployment)
-
Clone the repository:
git clone https://github.com/Spectra010s/mcl.git cd mcl -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env.local
-
Fill in your Supabase credentials in
.env.local -
Run database migrations:
- Open your Supabase dashboard
- Go to SQL Editor
- Copy and run the script from
scripts/schema.sql
- Start development server:
npm run dev
Visit http://localhost:3000 to see the application.
- Sign up through the app at
/signup - Go to your Supabase Dashboard > Table Editor > users
- Find your user record and change
rolefromusertoadmin - Log out and log back in
- Access admin features at
/admin
mcl/
├── app/ # Next.js app directory
│ ├── admin/ # Admin dashboard (role-protected)
│ ├── auth/ # Authentication pages
│ ├── browse/ # Browse by faculty → course
│ ├── search/ # Search interface
│ ├── resource/ # Resource details
│ ├── help/ # Help and FAQ page
│ ├── about/ # About us page
│ ├── api/ # API routes files
│ ├── upload/ # Upload form
│ ├── settings/ # User settings
│ └── page.tsx # Homepage
├── assets/ MCL brand assets
├── components/ # React and Page components
├── lib/ # Utilities and configurations
├── docs/ # Full documentation
├── scripts/ # Database migrations
└── README.md
For detailed documentation, see the /docs folder.
We welcome contributions! Please read our CONTRIBUTING.md for guidelines.
- Issues: Report bugs on GitHub Issues
- Discussions: Join our GitHub Discussions
- Email: spectra010s@gmail.com
See SUPPORT.md for detailed support information.
This project is licensed under the MIT License - see LICENSE file for details.
Please review our CODE_OF_CONDUCT.md before participating in this community.
- Admin resource moderation dashboard
- In-browser file preview (PDF/Image viewer)
- Advanced analytics dashboard (Resource popularity, activity tracking)
- Advanced search filters (by level, department)
- Resource recommendations
- API documentation
- Mobile app
- Multi-language support
Built with love for the academic community by students, for students.