Our Journey Building LabTutee: A Tutor-Student Collaboration Platform

Welcome to our blog! Over the past few months, we’ve been working on LabTutee, a web-based platform designed to enhance communication between tutors and students during lab sessions. This blog documents our software engineering process, major design decisions, and the challenges we faced along the way.


1. The Idea Behind LabTutee

Lab sessions are an essential part of learning, but they often come with challenges:

  • Students struggle to get timely help from tutors.
  • Tutors find it difficult to manage multiple requests simultaneously.
  • There’s no easy way to track session progress or analyze performance.

We wanted to solve these problems by creating a platform that:

  • Allows students to request help with a single click.
  • Enables tutors to manage requests and view session analytics in real-time.
  • Provides a seamless experience for both tutors and students.

2. Requirement Analysis

Understanding the Problem

Before writing a single line of code, we spent time understanding the needs of our users:

  • Tutors: Needed a way to create sessions, manage student requests, and track session performance.
  • Students: Wanted an easy way to request help and see their position in the queue.

Defining Features

Based on our analysis, we identified the following key features:

  • Session Management: Tutors can create, join, and end sessions.
  • Student Requests: Students can raise their hands to request help.
  • Real-Time Updates: Both tutors and students receive real-time updates.
  • Analytics: Tutors can view session analytics, including resolution times.

3. Frontend and Backend Development

Choosing the Tech Stack

We decided to use:

  • Django: A Python-based web framework for backend development.
  • PostgreSQL: A robust relational database for data storage.
  • HTML/CSS/JavaScript: For building the frontend.
  • Bootstrap: For responsive and user-friendly design.

Frontend Development

The frontend was designed to be simple and intuitive. Key pages include:

  • Homepage: Provides options to join as a student or tutor.
  • Tutor Dashboard: Displays student requests, session analytics, and controls.
  • Student Dashboard: Allows students to raise their hands and view their queue position.

Backend Development

The backend handles:

  • Session Management: Creating, joining, and ending sessions.
  • Request Handling: Managing student requests and resolving them.
  • Analytics: Calculating and displaying session performance metrics.

4. Integration and Testing

Connecting Frontend and Backend

We used AJAX to enable real-time communication between the frontend and backend. For example:

  • When a student raises their hand, an AJAX request is sent to the backend to create a new request.
  • The tutor dashboard periodically fetches updates using AJAX to display new requests and analytics.

Testing

We conducted extensive testing to ensure the system worked as expected:

  • Unit Testing: Tested individual components (e.g., session creation, request resolution).
  • Integration Testing: Verified that the frontend and backend worked together seamlessly.
  • User Testing: Asked tutors and students to use the system and provide feedback.

5. Challenges and Solutions

Challenge 1: Real-Time Updates

Problem: The system required manual page refreshes to update data.
Solution: We implemented AJAX polling to fetch updates every 3 seconds.

Challenge 2: Multiple Users

Problem: The system struggled to handle multiple students and tutors simultaneously.
Solution: We optimized database queries and added unique identifiers for students and tutors.

Challenge 3: Deployment

Problem: Deploying the app to PythonAnywhere was challenging.
Solution: We configured production settings, collected static files, and set up environment variables.


6. Final Deployment and Feedback

Deployment

We deployed the app on PythonAnywhere, making it accessible to users via a web browser. The deployment process involved:

  • Configuring the production server.
  • Setting up the PostgreSQL database.
  • Collecting static files and configuring the WSGI file.

User Feedback

We received positive feedback from tutors and students:

  • Tutors appreciated the real-time updates and analytics.
  • Students found the system easy to use and helpful.

7. Looking Ahead

While we’re proud of what we’ve accomplished, there’s always room for improvement. Some planned enhancements include:

  • Push Notifications: Notify tutors and students in real-time.
  • Integration with LMS: Connect LabTutee with learning management systems like Moodle.
  • Scalability: Optimize the system to handle larger lab sessions.

8. Conclusion

Building LabTutee has been an incredible journey. We’ve learned a lot about software engineering, teamwork, and problem-solving. Most importantly, we’ve created a tool that makes lab sessions more efficient and enjoyable for both tutors and students.

Thank you for following our journey! If you have any questions or feedback, feel free to reach out to us.

Comments