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
phonenumberslibrary - Chose JWT over session-based authentication for better scalability
- Used Next.js for its excellent developer experience and performance
Challenges Faced
Google OAuth Complexity: Managing multiple OAuth flows (authentication vs. Classroom API access) required careful token management and refresh strategies.
Phone Number Validation: Implementing proper international phone number validation with E.164 format while maintaining user experience was challenging.
Role-Based Access Control: Designing the system to handle different user roles (student/teacher) with appropriate permissions and dashboard views.
API Documentation: Creating comprehensive OpenAPI documentation that accurately reflects the authentication flows and error handling.
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
- django
- nextjs
Log in or sign up for Devpost to join the conversation.