A modern, futuristic university scheduling system built with Python Flask and featuring a cyber-styled interface. This comprehensive application provides real-time timetable management, conflict detection, and hall availability tracking for universities.
- Dark Theme: Sleek dark background with neon accents
- Glassmorphism Effects: Modern glass-effect cards and components
- Neon Colors: Cyber-blue, purple, pink, and green accent colors
- Responsive Design: Works perfectly on desktop, tablet, and mobile
- Smooth Animations: Hover effects, transitions, and loading animations
- Create Timetable Entries: Add new classes with full details
- Edit/Delete Entries: Modify existing timetable entries
- Advanced Conflict Detection:
- Hall conflicts (same hall, overlapping times)
- Faculty conflicts (teacher double-booked)
- Student group conflicts (same class overlapping)
- Calendar View: Visual weekly timetable display
- Notes & Resources: Optional notes for each class entry
- Real-time Updates: Instant updates across all users
- Multi-Time Slot Selection: Students select multiple free time slots
- Real-Time Filtering:
- Building selection
- Minimum capacity requirements
- Amenity filters (Projector, AC, Lab Equipment)
- Live Status Updates: Real-time occupancy status
- Detailed Information: Room details, capacity, amenities
- Interactive Cards: Click for detailed hall information
- Usage Statistics: Most used halls, busiest faculty
- Export Functionality: PDF and CSV export for reports
- Search System: Global search across classes, teachers, halls
- Real-Time Notifications: Schedule changes and booking confirmations
- API Integration: RESTful APIs for all functionality
Smart Campus Scheduler/
βββ app.py # Main Flask application
βββ requirements.txt # Python dependencies
βββ templates/
β βββ index.html # Main frontend template
βββ timetable.csv # Timetable data
βββ lecture_halls.csv # Hall information
βββ hall_bookings.csv # Booking data
βββ users.csv # User accounts
βββ notifications.csv # System notifications
- Python 3.7+
- pip (Python package manager)
-
Clone or download the project files
-
Navigate to the project directory:
cd "path/to/Smart Campus Scheduler"
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python app.py
-
Open your browser and visit:
http://127.0.0.1:5000/
-
Navigate to "Manage Timetable" section
-
Fill out the form:
- Select Department and Semester
- Choose Day and Time Slot
- Enter Subject and Faculty name
- Select Lecture Hall
- Add optional Notes/Resources
-
Submit the form - the system will check for conflicts automatically
-
View results in the timetable table or calendar view
- Navigate to "Available Halls" section
- Select your free time slots using checkboxes
- Click "Find Available Halls"
- Filter results by building, capacity, or amenities
- Click on halls for detailed information
- Use the search bar to find specific classes
- Apply filters for department, semester, or faculty
- View in table format or calendar view
- Export data as CSV or PDF
GET /api/timetable
- Get all timetable entriesPOST /api/timetable/create
- Create new timetable entryPUT /api/timetable/edit/<id>
- Edit existing entryDELETE /api/timetable/delete/<id>
- Delete entry
GET /api/available-halls
- Get available halls for specific timeGET /api/available-halls-student
- Get halls for student-selected slotsGET /api/halls
- Get all lecture halls
GET /api/export/timetable?format=csv
- Export timetable as CSVGET /api/export/timetable?format=pdf
- Export timetable as PDFGET /api/export/halls?format=csv
- Export halls as CSVGET /api/export/halls?format=pdf
- Export halls as PDF
GET /api/analytics
- Get usage statisticsGET /api/search?q=<query>
- Search across all data
The application uses CSS custom properties for easy theme customization:
:root {
--cyber-dark: #0a0a0f; /* Main dark background */
--cyber-blue: #00d9ff; /* Primary accent color */
--cyber-purple: #7b2cbf; /* Secondary accent */
--cyber-pink: #ff006e; /* Highlight color */
--cyber-green: #00ff88; /* Success color */
}
- New API endpoints in
app.py
- Frontend components in
templates/index.html
- Styling in the CSS section
- Data models in CSV files
The application is fully responsive and optimized for all devices:
- Large Desktop (1200px+): Full 4-column layout with all features
- Desktop (992px-1199px): 2-column layout with optimized spacing
- Tablet (768px-991px): Stacked layout with touch-friendly elements
- Mobile Large (576px-767px): Single column with essential features
- Mobile Small (320px-575px): Compact layout for phones
- Ultra Small (320px-): Optimized for smallest devices
β
Touch-Friendly Interface - 44px minimum touch targets for accessibility
β
Responsive Tables - Horizontal scrolling for data tables on mobile
β
Mobile Navigation - Collapsible navbar with glassmorphism effects
β
Adaptive Forms - Stacked form layouts for easy mobile input
β
Touch-Optimized Buttons - Larger buttons for better mobile interaction
β
Print Optimization - Clean printing layouts for mobile and desktop
β
Landscape Support - Optimized layouts for mobile landscape mode
β
High DPI Support - Retina display optimizations
- Smart Typography: Fluid font sizes using
clamp()
for perfect scaling - Touch Gestures: Smooth scrolling and touch interactions
- Mobile-First CSS: Progressive enhancement from mobile to desktop
- Performance Optimized: Minimal JavaScript for mobile devices
- Battery Friendly: Reduced animations on mobile for better battery life
- Input Validation: All form inputs are validated
- Conflict Detection: Prevents scheduling conflicts
- Data Sanitization: CSV data is properly escaped
- Error Handling: Comprehensive error handling and user feedback
Application won't start:
- Ensure all dependencies are installed:
pip install -r requirements.txt
- Check if port 5000 is available
- Verify Python version (3.7+ required)
CSV files not found:
- Ensure all CSV files are in the same directory as
app.py
- Check file permissions
Styling not loading:
- Ensure
templates/index.html
exists and is properly formatted - Check browser console for JavaScript errors
The application includes sample data for:
- 10 Timetable Entries across different days and subjects
- 10 Lecture Halls with varying capacities and amenities
- 5 Hall Bookings for extra activities
- 6 User Accounts (admin, teachers, students)
- 5 Notifications for system events
Important: This Flask application cannot be deployed directly to Netlify because:
- Netlify is designed for static sites and serverless functions
- Flask requires a Python runtime environment
- Netlify does not support Python server-side applications
# Prerequisites
heroku --version
git --version
# Deploy to Heroku
git init
git add .
git commit -m "Initial commit"
heroku create your-unique-app-name
git push heroku main
- Go to railway.app
- Create a new project
- Connect your GitHub repository
- Railway will auto-detect Python and deploy
Railway Configuration Files Created:
nixpacks.toml
: Advanced Railway configuration with build and deploy settingsrailway.toml
: Alternative Railway configuration
Railway Deployment Features:
- β Automatic Python detection
- β Auto-scaling based on usage
- β Built-in database support (if needed later)
- β Custom domains and SSL
- β Environment variable management
- Go to render.com
- Create a new Web Service
- Connect your GitHub repository
- Build Command:
pip install -r requirements.txt
- Start Command:
gunicorn app:app
- Go to DigitalOcean
- Create a new App
- Choose GitHub integration
- Select Python runtime
The following deployment files have been created for you:
Procfile
: Heroku deployment configurationruntime.txt
: Python version specificationnetlify.toml
: Netlify configuration (informational only).gitignore
: Excludes unnecessary files from deploymentdeploy.sh
: Interactive deployment helper script
Before deploying, ensure:
β
All CSV files are present (timetable.csv, lecture_halls.csv, etc.)
β
Python dependencies installed (pip install -r requirements.txt
)
β
Git repository initialized (git init
)
β
All files committed (git add . && git commit -m "message"
)
β
Choose appropriate deployment platform (Railway recommended for beginners)
β
Railway configuration files (nixpacks.toml or railway.toml) present
For production deployment, consider setting:
# Example for Heroku
heroku config:set FLASK_ENV=production
heroku config:set SECRET_KEY=your-secret-key-here
After successful deployment:
- Heroku:
https://your-app-name.herokuapp.com
- Railway:
https://your-app-name.up.railway.app
β Recommended - Render:
https://your-app-name.onrender.com
- DigitalOcean: Your assigned domain
Common Issues:
β Port binding errors: Ensure app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))
β CSV files not found: Make sure CSV files are in the project root
β Module not found: Run pip install -r requirements.txt
before deploying
β Memory issues: Consider using a database instead of CSV files for large datasets
Development (Local):
python app.py
# Access: http://127.0.0.1:5000/
Production (Deployed):
gunicorn app:app --bind 0.0.0.0:$PORT
# Access: Your deployed URL
For production deployment:
π Security: Set strong SECRET_KEY
π Database: Consider replacing CSV files with SQLite/PostgreSQL
π Scaling: Monitor resource usage
π Backups: Regular data backups
π Logging: Implement proper logging
Your Smart Campus Scheduler is now Railway-optimized and deployment-ready!
Railway is the fastest and easiest way to deploy your Flask application:
- Sign up at railway.app (free)
- Create a new project
- Connect your GitHub repository
- Railway auto-detects Python and deploys instantly!
Your app will be live at: https://your-app-name.up.railway.app
- β‘ Zero configuration - Auto-detects Python projects
- π Auto-scaling - Scales with your usage
- πΎ Built-in database support (for future upgrades)
- π Custom domains and SSL certificates
- π Built-in monitoring and logs
- π° Generous free tier with $5/month starter plan
π Detailed Railway deployment guide: See RAILWAY_DEPLOYMENT.md
Alternative platforms:
- Heroku: Good for simple deployments
- Render: Free tier with good performance
- DigitalOcean: More control and power