Building "OpenSource": A University Volunteer Project for Code Assignment Management
Introduction
In the ever-evolving landscape of education, providing students with robust tools to manage their assignments efficiently is crucial. As part of a university volunteer project, I embarked on creating "OpenSource," a platform designed to streamline the process of code assignment submissions. This project aimed to facilitate students in my class, allowing them to submit their assignments easily while enabling professors and group leaders to manage and review submissions effectively.
Project Overview
Objectives
- Simplify Assignment Submission: Enable students to submit their code assignments seamlessly.
- Efficient Group Management: Allow professors to create groups, assign group leaders, and monitor progress.
- Feedback Mechanism: Provide a platform for professors and group leaders to give feedback on submissions.
- Performance Tracking: Implement features to track student performance over time.
Key Features
-
User Roles:
- Professor: Create groups, assign group leaders, check submissions, give feedback, and track performance.
- Group Leader: Assign questions to group members, review submissions, and provide feedback.
- Group Member: Solve assigned questions and submit their code.
-
Authentication and Security:
- Utilized JWT (JSON Web Tokens) for secure authentication and authorization.
-
User-Friendly Interface:
- Developed with React.js to ensure a well-organized, intuitive, and easy-to-navigate user interface.
Tech Stack
- Frontend: React.js
- Backend: Node.js with Express.js
- Authentication: JWT
- Database: MongoDB (for data storage)
Development Process
1. Planning and Design
The initial phase involved understanding the requirements and planning the features accordingly. Wireframes and UI designs were created to visualize the user flow and ensure a seamless experience.
2. Setting Up the Backend
The backend was built using Node.js with Express.js. Key functionalities included:
- User Authentication: Implemented JWT for secure login and role-based access control.
- Group Management: APIs to create groups, assign leaders, and manage members.
- Assignment Management: Endpoints to assign questions, submit solutions, and give feedback.
- Performance Tracking: APIs to fetch and display performance metrics.
3. Building the Frontend
React.js was chosen for its component-based architecture, allowing for a modular and maintainable codebase. Key components included:
- Dashboard: Different views for professors, group leaders, and members.
- Assignment Submission: Forms and interfaces for submitting code.
- Feedback System: Components for reviewing and providing feedback.
- Performance Metrics: Visualization of student performance data.
4. Integration and Testing
The frontend and backend were integrated, and thorough testing was conducted to ensure all functionalities worked seamlessly. This phase included:
- Unit Testing: Testing individual components and APIs.
- Integration Testing: Ensuring the frontend and backend communicated correctly.
- User Acceptance Testing: Gathering feedback from peers to refine the user experience.
User Experience
The primary focus was on creating a user-friendly interface. Key aspects included:
- Intuitive Navigation: Easy access to different sections based on user roles.
- Clean Design: A minimalistic approach to keep the interface uncluttered.
- Responsive Layout: Ensuring the platform works well on various devices.
Challenges and Learnings
Challenges
- Role-Based Access Control: Implementing and managing different user roles securely.
- Feedback Mechanism: Creating a system for efficient feedback and performance tracking.
Learnings
- Effective Communication: Understanding user requirements and translating them into features.
- Security Best Practices: Implementing JWT and other security measures to protect user data.






































Conclusion
"OpenSource" successfully addressed the need for an efficient code assignment management platform in our university. By leveraging modern web technologies and focusing on user experience, the project provided a valuable tool for students, professors, and group leaders. This experience not only enhanced my technical skills but also underscored the importance of creating solutions that cater to real-world needs.
Feel free to share your thoughts or ask any questions in the comments below. Let's keep the conversation going and continue to improve educational tools together!