A comprehensive course management and planning system designed specifically for University of Manchester students to optimize their academic journey through intelligent module selection and workload management.
UoMMods is a full-stack web application that helps University of Manchester students make informed decisions about their course modules. The system provides powerful tools for course planning, workload analysis, and academic optimization through data-driven insights.
- Assessment Splitting: Break down module assessments into manageable components with detailed weighting analysis
- Course Program Optimization: Intelligent algorithms to suggest optimal module combinations based on workload, prerequisites, and academic goals
- Fuzzy Search: Advanced search capabilities to quickly find modules, courses, and related content
- Summary Tables: Comprehensive overview of module information including credits, assessment types, and historical performance
- Program Dependency Graphs: Visual representation of module prerequisites and program pathways
- Interactive Workload Charts: Visual comparison of lectures, labs, study hours, and placements
- Grade Insights: Historical grade distributions and performance analytics
- Real-time Data Sync: Automated scraping ensures up-to-date course information
- Framework: Next.js 15 with React 19
- Styling: Tailwind CSS 4 with Radix UI components
- Visualization: React Flow for dependency graphs, Recharts for analytics
- Search: Fuse.js for fuzzy searching capabilities
- State Management: React hooks with Context API
- Authentication: Iron Session with University of Manchester SSO integration
- Database: Supabase (PostgreSQL) for real-time data synchronization
- Scraping: Python with BeautifulSoup4 and Requests for data collection
- Data Processing: Pandas for data analysis and CSV/JSON exports
- APIs: RESTful APIs with Next.js API routes
- Language: TypeScript for type safety
- Bundler: Turbopack for fast development builds
- Linting: ESLint with Next.js configuration
- Package Manager: npm
- Node.js (v18 or higher)
- npm (v9 or higher)
- Python (v3.8 or higher)
- Git
-
Clone the repository
git clone https://github.com/your-username/UoMMods.git cd UoMMods -
Set up Python environment (for data scraping)
# Create virtual environment python -m venv venv # Activate virtual environment # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate # Install Python dependencies pip install -r requirements.txt
-
Set up Next.js application
cd uommods npm install -
Configure environment variables
# Copy the environment template cp .env.template .env.local # Edit .env.local with your configuration # Generate session password: openssl rand -base64 60
-
Start the development server
npm run dev
-
Access the application
- Open http://localhost:3000 in your browser
- The application will be running with hot-reload enabled
To update course data from University of Manchester sources:
-
Configure scraping environment
# Ensure Python virtual environment is activated source venv/bin/activate # or venv\Scripts\activate on Windows
-
Run course data scraper
python scrape_course_data.py
-
Process marks data (if PDF available)
python marks_scraper.py
# Build Next.js application for production
cd uommods
npm run build# Run ESLint
cd uommods
npm run lintCurrently, no automated testing framework is configured. Manual testing guidelines:
- Frontend Testing: Test all user interactions in the course planner
- Data Integrity: Verify scraped data accuracy against university sources
- Performance: Monitor page load times and search responsiveness
- Accessibility: Ensure proper keyboard navigation and screen reader support
The system maintains up-to-date course information through automated scraping of:
- University of Manchester course catalogues
- Module descriptions and requirements
- Assessment breakdowns and weightings
- Historical grade distributions
- Prerequisite and corequisite relationships
Data is processed and stored in Supabase for real-time access and synchronization across the application.
We welcome contributions from the University of Manchester community and beyond!
- TypeScript: Use strict typing, avoid
anytypes - React: Use functional components with hooks
- Styling: Follow Tailwind CSS conventions, use Radix UI components
- Python: Follow PEP 8 guidelines for scraping scripts
- Git: Use conventional commit messages
-
Fork the repository and create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes following the code standards above
-
Test your changes
- Run linting:
npm run lint - Build the application:
npm run build - Test functionality manually
- Run linting:
-
Commit your changes
git commit -m "feat: add your feature description" -
Push to your fork and submit a pull request
- Provide a clear description of changes
- Link any related issues
- Include screenshots for UI changes
- Performance: Ensure new features don't significantly impact load times
- Accessibility: Test with keyboard navigation and screen readers
- Mobile: Verify responsive design on various screen sizes
- Data Privacy: Never commit real student data or credentials
- Security: Follow security best practices for authentication and data handling
This project is developed for educational purposes at the University of Manchester. Please respect university policies and student data privacy when contributing.
- University of Manchester for providing course data sources
- The student community for feedback and feature requests
- Open source contributors and maintainers
Developer: Brendan Ling
Email: brendan.ling@student.manchester.ac.uk
University: University of Manchester
UoMMods is an independent student project and is not officially affiliated with the University of Manchester.