In this article, I’ll share my experience developing a mentorship platform using Django, focusing on the key features, user flow, and deployment process. The project was built using the Django Starter Template, and it includes a complete user flow, two user types, Progressive Web App (PWA) features, and Tailwind CSS for styling. After completing the development, I pushed the code to GitHub and deployed the app on Render.com

Key Features and User Flow
The mentorship platform was designed to connect mentees and case managers, with two distinct user types: Mentees and Case Managers. Mentees can submit surveys and track their progress, while case managers can manage sessions, write reports, and view mentee surveys.

User Flow
The app includes a complete user flow:

Registration:
Users can sign up as either a mentee or a case manager via /users/register/. Upon registration, they are redirected to their respective dashboards (mentee:dashboard for mentees, case_manager:dashboard for case managers).

Image description

Login/Logout: Users log in at /users/login/ and log out at /users/logout/, with proper redirects to the login page after logout.

Image description

Password Reset: A password reset flow is implemented at /users/password_reset/, allowing users to reset their password via email (using Django’s built-in views and a console email backend for development).
Password Change: Logged-in users can change their password at /users/password_change/.
User Profiles with Profile Images
Each user has a profile accessible at /users/profile/, where they can view and update their details. I extended the custom User model to include a profile image field:

users/models.py (partial)
profile_image = models.ImageField(upload_to='profile_images/', null=True, blank=True)
Users can upload a profile image during registration or update it later via the profile page. The image is displayed on their dashboard.

Styling with Tailwind CSS
The client-side was styled using Tailwind CSS, providing a modern and responsive design. I included Tailwind CSS via a CDN in the base template (templates/layout/base.html) and used its utility classes for consistent styling across all pages, such as the registration form, dashboards, and password reset pages.

Image description

Deployment: GitHub and Render.com
After completing development, I pushed the project to GitHub for version control:

Image description

GitHub Repository:[(https://github.com/sanaipei001/django-starter-template.git)]
I then deployed the app on Render.com, a free hosting platform:

Created a new web service on Render.com and connected it to my GitHub repository.
Configured the build settings: Python 3.12, requirements.txt for dependencies, and python manage.py migrate as the start command.
Set environment variables on Render.com (e.g., DEBUG=False, SECRET_KEY, and database settings).

Image description

Image description

Deployed the app, making it live at:[(https://django-starter-template.onrender.com)]

The deployment process was smooth, and the app is now accessible online with all features (registration, login, password reset, dashboards, etc.) fully functional.

Image description

Conclusion
This project was an exciting journey, from building a mentorship platform with distinct user types (mentees and case managers) to implementing a complete user flow and PWA features. Using Tailwind CSS ensured a polished UI, while deploying on Render.com made the app accessible to users. The code is well-documented on GitHub, and the live app demonstrates the power of Django for building robust web applications.