A complete web-based assignment management system for Binyaminu Usman Polytechnic, Hadejia.
- π€ Submit assignments online from anywhere
- π Track assignment status and grades
- π¬ Receive feedback from instructors
- π Resubmit assignments if needed
- π Create and manage assignments
- π₯ View and download student submissions
- βοΈ Grade assignments and provide feedback
- π Manage multiple courses
- π₯ Manage users (students and instructors)
- π Create and assign courses
- π View system statistics
- π§ System oversight
- Backend: Python Flask
- Database: SQLite (easy to deploy, no setup needed)
- Frontend: HTML5, CSS3, JavaScript
- File Storage: Local file system
-
Clone or download the project
cd assignment-system -
Install Python dependencies
pip install -r requirements.txt
-
Run the application
python app.py
-
Access the application Open your browser and go to:
http://localhost:5000
- Username: admin
- Password: admin123
β οΈ Important: Change this password after first login!
- Register a new account (select "Student" role)
- Login with your credentials
- View available assignments on your dashboard
- Click "Submit Assignment" to upload your work
- Check back for grades and feedback
- Register a new account (select "Instructor" role)
- Contact admin to be assigned to courses
- Create assignments for your courses
- View submissions and grade student work
- Provide detailed feedback
- Login with admin credentials
- Create courses and assign instructors
- Monitor system usage and statistics
- Manage users if needed
-
Create a Render account at https://render.com
-
Create a new Web Service
- Connect your GitHub repository (or upload files)
- Choose "Python" as the environment
- Build Command:
pip install -r requirements.txt - Start Command:
gunicorn app:app
-
Add environment variables (optional)
SECRET_KEY: Your secret key for sessions
-
Deploy! Render will automatically deploy your app
-
Create account at https://www.pythonanywhere.com
-
Upload your files using the Files tab
-
Install requirements in a Bash console:
pip install --user -r requirements.txt
-
Configure Web App
- Go to Web tab
- Add a new web app (Flask)
- Point to your
app.pyfile - Set working directory
-
Reload your web app
-
Install Heroku CLI and login
-
Create a Procfile:
web: gunicorn app:app -
Deploy:
heroku create your-app-name git push heroku main
-
Install Python 3.8+ on the server
-
Copy project files to the server
-
Install dependencies:
pip install -r requirements.txt pip install gunicorn
-
Run with Gunicorn:
gunicorn -w 4 -b 0.0.0.0:5000 app:app
-
Use a reverse proxy (nginx recommended) for production
assignment-system/
βββ app.py # Main Flask application
βββ requirements.txt # Python dependencies
βββ assignment_system.db # SQLite database (auto-created)
βββ uploads/ # Student submissions (auto-created)
βββ templates/ # HTML templates
β βββ base.html
β βββ index.html
β βββ login.html
β βββ register.html
β βββ student_dashboard.html
β βββ submit_assignment.html
β βββ instructor_dashboard.html
β βββ create_assignment.html
β βββ view_submissions.html
β βββ grade_submission.html
β βββ admin_dashboard.html
β βββ create_course.html
βββ static/
βββ css/
βββ style.css # Styling
Edit app.py and change:
app.secret_key = 'your-secret-key-change-this-in-production'Edit app.py:
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MBEdit app.py:
ALLOWED_EXTENSIONS = {'pdf', 'doc', 'docx', 'txt', 'zip'}β Implemented:
- Password hashing using Werkzeug
- File upload validation
- Session management
- SQL injection protection (parameterized queries)
- Change default admin password immediately
- Use strong secret key
- Enable HTTPS
- Implement rate limiting
- Regular backups of database
- Secure file storage
The database is created automatically on first run. If you have issues:
python -c "from app import init_db; init_db()"Ensure the uploads directory is writable:
chmod 755 uploads/Change the port in app.py:
app.run(debug=True, host='0.0.0.0', port=8000)For issues or questions:
- Review the documentation
- Check the troubleshooting section
- Contact system administrator
This project is developed for Binyaminu Usman Polytechnic, Hadejia.
Developed to streamline assignment submission and management at BUPH, eliminating paper-based processes and improving efficiency for both students and instructors.