Django 5.03 and Python 3.12.4 October 2023 Upgraded heroku stack and added a new buildpack
Pyenv to manage different versions of python on the machine Virtualenv to create Python virtual environements Virtualwrapper to help to manage virtual environments automation of repositories creation and and remote repositories with gh
To develop an application that enables customers to easily book consultants and experts with specific skills.
Currently, there is a lack of efficient and user-friendly platforms for customers to book consultants and experts for project tasks. This results in time-consuming processes and potential delays in project delivery.
Developing a application that allows customers to browse available consultants and experts, select the ones suitable for their project needs, and book them directly through the app. The app will notify both the customer and the chosen consultant of the booking details, including the customer's address and all necessary information for the consultant to join the customer on-site.
Improved customer experience through a seamless booking process. Enhanced efficiency by streamlining consultant selection and booking. Increased transparency with all relevant information provided upfront. Reduced administrative burden for both customers and consultants. Higher customer satisfaction leading to repeat business and referrals.
By developing a customer booking app for consultant services, we aim to address the current challenges in the booking process. This initiative aligns with our goal of providing innovative solutions to meet customer needs and stay ahead of the competition in the industry.
🔗 https://rbm-app-aa6d3f2add38.herokuapp.com/
project demo :tv: in 3.16 minutes https://youtu.be/m6ZLSaCJsPM
Booking Consultant: The website acts as a booking consultant, guiding clients through the process of finding the right expert for their requirements. Clients can input their needs, preferences, and desired skill sets into the platform, which then generates a curated list of experts who match those criteria.
Check the List of Experts: Once the client has specified their requirements, they can browse through the list of experts provided by the website. Each expert is accompanied by a detailed profile outlining their skills, areas of expertise.
Find the Skillset You Need: Clients can easily filter and search through the list of experts to find the specific skillset they require.
Get the Expert Right to Your Door: After selecting the desired expert, clients can proceed to book their services directly through the website. RBM ensures a seamless experience by handling all the logistics, including scheduling and coordination, to ensure that the expert arrives at the client's location promptly.
I use Linux Pencil and hand drawing
▶️ CustomUser Field Name Field Type Description location CharField User's location name CharField User's name is_customer BooleanField Indicates if user is a customer is_expert BooleanField Indicates if user is an expert is_manager BooleanField Indicates if user is a manager created_at DateTimeField Date and time of user creation updated_at DateTimeField Date and time of user profile update
▶️ Skill Field Name Field Type Description name CharField Name of the skill category CharField Category of the skill level SmallIntegerField Level of proficiency in the skill
▶️ Expert (this part is manage in the backend of the application) Field Name Field Type Description user OneToOneField Link to CustomUser model skills ManyToManyField Skills associated with the expert start_date DateField Start date of expertise
▶️ Booking Field Name Field Type Description id AutoField Primary key for the booking BookingExpert ForeignKey Link to CustomUser model for the expert CustomerUser ForeignKey Link to CustomUser model for the customer checkin DateTimeField Check-in date and time for the booking checkout DateTimeField Check-out date and time for the booking location CharField Location of the booking notes TextField Additional notes for the booking created_at DateTimeField Date and time of booking creation updated_at DateTimeField Date and time of booking update
Initial design planning
Early design stage of this project included making png versions of a homepage and login page prototypes. Thanks to that I could decide on the aesthetic choices before entering the coding stage.
Color and
The next stage of UX design planning was creating the basic wireframes using Pencil Create minimalist and visual interface that is easy navigate.
Large to medium screens
[Home Page]
Customer Profile
[Welcome Page]
![]()
[Sign Up page]
![]()
[Our Experts per skills ]
![]()
[Our Experts page with booking option delete edit]
In our project, we utilized GitHub for project management, harnessing its robust issue tracking system to effectively manage bugs. Adhering to Agile principles, we divided our work into multiple iterations, ensuring incremental progress and adaptability to evolving requirements. We embarked on two separate projects aimed at defining the optimal architecture and design. Through iterative development cycles, we refined our architectural decisions iteratively, prioritizing flexibility and scalability. Continuous feedback loops enabled us to gather insights, iterate on designs, and promptly address emerging challenges. By embracing Agile methodologies, we fostered collaboration and transparency among team members, facilitating smoother communication and alignment towards project goals. The iterative approach allowed us to incorporate stakeholder feedback iteratively, ensuring the final product met user expectations effectively. Through GitHub's project management features, we maintained visibility into project progress, enabling informed decision-making and timely adjustments. Our dedication to Agile practices and iterative development yielded a robust, adaptable project architecture and design that effectively met functional requirements and stakeholder expectations.
List of Mandatory User Stories
[USER STORY] : book a consultant 🔗 https://github.com/users/Jean7667/projects/6/views/8?pane=issue&itemId=56170260
[USER STORY] : sign-up form 🔗 https://github.com/users/Jean7667/projects/6/views/8?pane=issue&itemId=56170837
[USER STORY] : login 🔗 https://github.com/users/Jean7667/projects/6/views/8?pane=issue&itemId=56179506
[USER STORY] : view edit view my profile 🔗 https://github.com/users/Jean7667/projects/6?pane=issue&itemId=56170838
[USER STORY] : consult available consultants 🔗 https://github.com/users/Jean7667/projects/6?pane=issue&itemId=56170695
![alt text](
You can review the project management at 🔗 https://github.com/users/Jean7667/projects/6
A video is available on Youtube to demonstrate the responsiveness for each media query
Generic about page
The "About Us" page introduces the company or individual, establishes credibility, and builds trust by sharing the history, mission, values, and team members. It differentiates the business from competitors by highlighting unique aspects. This page fosters connection and engagement with visitors while providing essential information and navigation links.
I used the UserAbstrat Model for this project
The custom user model abstract in Django offers flexibility by allowing developers to tailor user models to specific project needs. It empowers customization of user attributes and authentication methods without altering the core Django framework. This abstraction enhances scalability, enabling seamless integration of additional features and third-party packages. Moreover, it promotes better code organization by centralizing user-related logic within the project. Additionally, the custom user model abstract facilitates adherence to security best practices by providing control over authentication mechanisms and user data storage.
https://learndjango.com/tutorials/django-custom-user-model
[USER STORY ] As a Client , I want to indicators of number of bookings and consultant available so I can check new profiles and skills on the platform
[USER STORY] As a Customer , I want to display my location on Google Maps So that I can easily share it with customers and consultants.
among the device tested
Device Resolution Device Pixel Ratio (DPR) User Agent Apple iPhone SE 375 x 667 2 iPhone Apple iPhone XR 414 x 896 2 iPhone Apple iPhone 12 Pro 390 x 844 3 iPhone Apple iPhone 12 Pro Max 428 x 926 3 iPhone Apple iPad Mini 768 x 1024 2 iPad Apple iPad Pro 1024 x 1366 2 iPad Samsung Galaxy S20 Ultra 412 x 915 3.5 Galaxy Samsung Galaxy S21 Ultra 412 x 915 3.5 Galaxy Google Pixel 4 411 x 869 2.75 Pixel Google Pixel 5 393 x 851 2.75 Pixel Microsoft Surface Duo 540 x 720 2 Surface Microsoft Surface Pro 7 912 x 1368 1.5 Surface Samsung Galaxy Fold 280 x 653 (folded) 3.5 Galaxy
🔗
🔗
Test done with chrome dev tools check the video.
📺 🔗 https://youtu.be/uZGk-1jmttI
📺 🔗 https://youtu.be/pTt0BiT5Jtk
Optmised for large and wide screens due dynamic tables 📺 🔗 https://youtu.be/pTt0BiT5Jtk
Html code fixed and tested with Html Checker
👍
👍
🐍 Python code verified with flake8, pylint and pylinter CI
🔗
css code validation with W3C CSS Validation Service
🔗
Test | Result |
---|---|
Prevention of brute force actions via URL | Pass |
No secret available in the code | Pass |
Redirect to sign-in page after attempted unauthorized action | Pass |
🔗
Light House Chrome extension
🔗
Test | Result |
---|---|
User receives notificationm when profile is created or updated or deleted | Pass |
User receives notificationm when booking is created or updated or deleted | Pass |
Test | Result |
---|---|
User can create profile | Pass |
User can log into profile | Pass |
User can log out of profile | Pass |
Test | Result |
---|---|
User can easily navigate to Bookings | Pass |
User can access About Us page | Pass |
User access their account page | Pass |
User can access the card content in About Us | Pass |
SuperUser can access admin page | Pass |
SuperUser can create a expert add skills add a flag for customer or expert admin page | Pass |
Test | Result |
---|---|
User can make a booking | Pass |
User can view all of their bookings | Pass |
User can delete their booking | Pass |
User can edit booking | Pass |
User can make more than one booking | Pass |
User can delete their account | Pass |
User can edit their information | Pass |
Test | Result |
---|---|
SuperUser can add expert and flag the user as an expert | Pass |
SuperUser can see the list of expert and add edit one or multiples skills | Pass |
🔗 📺 https://youtu.be/8goWMuRIrV8 video demo backoffice
🔗 📺 https://youtu.be/qFmqEaqTb28 video demo after a new expert has been added
function cleandata not finished to implement, this function was created to set valid data in the formbooking form. the validation is working partially, there is no error message yet booking is simply not allowed if done in the past or if it overlap
The username of the expert is not passed in the form to book the expert
in the back office there is no rules to allow only the user with the flag expert to access to the skills and add skills.
🔗
Create the Heroku app
🔗
Check the log
Set up enviroment variables
- In the Django app editor create env.py in the top level
- In env.py import os
- In env.py set up necessary enviroment variables:
- add a secret key using: os.environ['SECRET_KEY'] = 'your secret key'
- for the database variable the line should include os.environ['DATABASE_URL']= 'Paste the database link in here'
🔗
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
web: guincorn PROJECT_NAME.wsgi
Heroku deployment
🔗
By forking the GitHub Repository you can make a copy of the original repository to view or change without it effecting the original repository. You can do this with following steps:
Creating a clone enables you to make a copy of the current version of this repository to run the project locally. To do this follow steps below: