Jean7667 / RBM_APP

0 stars 1 forks source link

Python compatibility

Django 5.03 and Python 3.12.4 October 2023 Upgraded heroku stack and added a new buildpack

Tools and settings

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

Title: Business Case for Customer Booking App for Consultant Services
Objective:

To develop an application that enables customers to easily book consultants and experts with specific skills.

Problem Statement:

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.

Solution:

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.

Benefits:

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.

Conclusion:

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.

Link to the project

🔗 https://rbm-app-aa6d3f2add38.herokuapp.com/

project demo :tv: in 3.16 minutes https://youtu.be/m6ZLSaCJsPM

How it Works

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.

Customer need and business case

Link to the live site


Table of contents

  1. UX
  2. Agile Development
  3. Features implemented
  4. Features Left to Implement
  5. Technology used
  6. Testing
  7. Bugs
  8. Deployment
  9. Resources
  10. Credits and acknowledgements

UX

I use Linux Pencil and hand drawing

Database planning

Data structure

Data models

▶️ 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

UX design

Overview

Design

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

Goals for the website

Wireframes

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]

Back to Top

Agile Development

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.

Overview

User Stories

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

Navbar and Footer:

A video is available on Youtube to demonstrate the responsiveness for each media query

https://youtu.be/uZGk-1jmttI

Index page:

About Us page:

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.

Authentication and profile management:

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

Bookings:

Responsiveness:

Back to Top

Features Left to Implement

Back to Top

Technology used

Back to Top

Testing

https://youtu.be/m6ZLSaCJsPM

Responsiveness

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

🔗

Security

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

🔗

Performance accessibility

Light House Chrome extension

🔗

Manual testing

Account Registration Tests

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

Account Registration Tests

Test Result
User can create profile Pass
User can log into profile Pass
User can log out of profile Pass

User Navigation Tests

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

Expert Booking and Profile Tests

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

Back office section create an expert edit delete

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

Back to Top

Known bugs

Back to Top

Deployment

The deployment stage of the website should follow the steps below:

🔗

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'

🔗

Heroku deployment

🔗

Forking the repository

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:

Create a clone of this repository

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:

Back to Top

Resources

Back to Top

Credits and acknowledgements

Images

Code

Back to Top