About the Project

What Inspired Me

I was inspired to build this educational platform after witnessing the challenges teachers and students face when trying to integrate multiple Google services in their daily workflows. The need for a unified solution that bridges Google Classroom with custom educational tools became evident during remote learning scenarios, where seamless authentication and data synchronization are crucial for effective online education.

What I Learned

This project taught me several key concepts:

  • OAuth 2.0 Flow Implementation: Deep dive into Google's authentication ecosystem, including JWT token management and refresh token strategies
  • Django REST Framework Architecture: Building robust APIs with proper error handling, serialization, and documentation using OpenAPI/Swagger
  • Google Classroom API Integration: Working with Google's educational APIs to fetch courses, assignments, and student submissions
  • Full-Stack Authentication: Implementing secure token-based authentication between Django backend and Next.js frontend
  • Phone Number Validation: International phone number formatting using the E.164 standard with proper validation

How I Built It

The project follows a clean separation of concerns:

Backend (Django REST):

  • Custom user model with Google OAuth integration
  • JWT-based authentication with access/refresh token pairs
  • RESTful API endpoints for user management and Google Classroom data
  • Comprehensive error handling with standardized JSON responses
  • OpenAPI documentation for easy integration

Frontend (Next.js):

  • Google Identity Services integration for seamless login
  • Role-based dashboards (student/teacher) with different functionalities
  • Responsive design with modern UI components
  • Secure token storage and API communication

Key Technical Decisions:

  • Used Django's built-in authentication system extended with Google OAuth
  • Implemented phone number validation using the phonenumbers library
  • Chose JWT over session-based authentication for better scalability
  • Used Next.js for its excellent developer experience and performance

Challenges Faced

  1. Google OAuth Complexity: Managing multiple OAuth flows (authentication vs. Classroom API access) required careful token management and refresh strategies.

  2. Phone Number Validation: Implementing proper international phone number validation with E.164 format while maintaining user experience was challenging.

  3. Role-Based Access Control: Designing the system to handle different user roles (student/teacher) with appropriate permissions and dashboard views.

  4. API Documentation: Creating comprehensive OpenAPI documentation that accurately reflects the authentication flows and error handling.

  5. Frontend-Backend Integration: Ensuring secure communication between Next.js and Django while maintaining a smooth user experience.

The project successfully addresses these challenges through careful architecture design and thorough testing of the authentication flows.

Built With

Share this project:

Updates