Welcome to Blossom Haven, where beauty blooms in every petal! We're a floral haven dedicated to crafting unforgettable experiences through exquisite arrangements and impeccable service. Based in London, UK, we bring the charm of fresh flowers to your doorstep.
The site allows users:
Features |
---|
Navbar |
Index |
Register |
Sign in/out |
Profiles |
Reviews |
Products List |
Products Details |
Add & Edit Products |
Facebook Page |
Instagram Page |
Footer |
Error Pages |
Django Admin |
Testing |
---|
Manual Testing |
Bugs & Issues Encounterd |
Validation Testing |
---|
Python |
JavaScript |
CSS |
HTML |
Contrast |
Lighthouse |
---|
Index LH |
Products LH |
Reviews LH |
Cart LH |
Checkout LH |
Profiles LH |
Django Alltuh LH |
Setup |
---|
Database |
Cloudinary |
Deployment |
Email Setup |
More |
---|
Wireframes |
Credits |
Future Features |
Sprint One
User Stories | Needed for MVP | Completed |
---|---|---|
As a user, I can visit the website and see a homepage with navigation to different sections. | Yes | Yes |
As a user I can browse different arrangements of flowers | Yes | Yes |
As a user I can view details of a specific flower bouquet so that I can make informed buying decisions. | Yes | Yes |
Sprint Two
User Stories | Needed for MVP | Completed |
---|---|---|
As a user I can add items to my shopping cart so that I can purchase them later. | Yes | Yes |
As a user I can view my shopping cart so that proceeded to check out or edit my order | Yes | Yes |
As a User or Admin I can provide my shipping and payment information to complete the purchase. | Yes | Yes |
Sprint Three
User Stories | Needed for MVP | Completed |
---|---|---|
As an Admin, when I add, or edit a product to where it has no product image it will show a default no image | Yes | Yes |
As a User, when a product has no image I want to see a default no image so that I know there are no images available for this product | Yes | Yes |
As a Admin I can view and edit existing products so that it updates and users can see the changes | Yes | Yes |
As a admin I can Add products so that users can see and purchase them | Yes | Yes |
As a Admin I can Login to admin panel so that I can view admin panel | Yes | Yes |
Sprint Four
User Stories | Needed for MVP | Completed |
---|---|---|
As a user, I want to see if products are available before adding them to the cart. | Yes | Yes |
As an admin, I want to manage the inventory of flowers to ensure availability. | Yes | Yes |
Sprint Five
User Stories | Needed for MVP | Completed |
---|---|---|
As a Admin, I want to be able to delete inappropriate reviews to maintain integrity of the site. | No | Yes |
As a User, I want to see all reviews and be able to leave a review on products I have purchased so that myself and other users can make educated purchases. | No | Yes |
As an Admin, I want to manage the availability and pricing of add-on items so that they can only be added if they are in stock. | No | Yes |
As a user, I want to add additional items to compliment my purchase. | No | Yes |
Sprint Six
User Stories | Needed for MVP | Completed |
---|---|---|
As an admin, I want to view a summary of orders and manage order statuses so that I can ensure the smooth operation and get the jump on any issues that arise. | Yes | Yes |
As a user, I want to create an account to track my orders and save my shipping information for future purchases. | Yes | Yes |
Sprint Seven
User Story or Action | Needed for MVP | Completed |
---|---|---|
As a User or Admin, when i visit the site there is a footer with links to social media and any other relevant footer links. So that I can follow them accordingly. | Yes | Yes |
robots.txt file. and sitemap.xm | Yes | Yes |
Newsletter Signup | Yes | Yes |
Create Products in live database | Yes | Yes |
HTML SEO | Yes | Yes |
Instagram page | No | Yes |
Facebook Bussiness page | Yes | Yes |
(MVP = Minimal Viable Product)
Sprint Eight
Create Engaging Content
Leverage Facebook Groups
Run Contests and Giveaways
Engage with Your Audience
Optimize Instagram Profile
Create Visually Appealing Content
Use Hashtags Strategically
Engage with Your Community
Run Contests and Giveaways
Search Engine Optimization (SEO)
Keyword Research
On-Page SEO
Content Marketing
Local SEO
Backlink Building
Social Signals
Other
If have the £££ look into paid marketing stradegies to get a broader reach look for a good ROI by investigating the target market and plan accordingly.
Email link to confirm account activation and page
Forgot Password Emails
Forgot Pass Change Pass Page
Change Password Email
Change Shipping Details Email
Review Confirmation Email
Review Edit Confirmation Email
Review Delete Confirmation Email
Add Product
Edit Product
400
403
404
500
Login | |
---|---|
Groups | |
---|---|
Users | |
---|---|
Orders | |
---|---|
Inventory | |
---|---|
Categories | |
---|---|
Products | |
---|---|
Reviews | |
---|---|
Social accounts | |
---|---|
Social app tokens | |
---|---|
Social applications | |
---|---|
Accounts/Profiles
What test was completed | Passed? | Other information |
---|---|---|
Login to site as a superuser(Admin) | Yes | |
Log out of site as a superuser | Yes | |
Login to site as a staff (BB) | Yes | |
Log out of site as a staff | Yes | |
Sign up as a customer/user (John.Doe) | Yes | |
Login to site as a customer/user | Yes | |
Log out of site as a customer/user | Yes | |
Email verification Email sent | Yes | |
Can't progress with out verifying | Yes | |
Forgot Password Email sent | Yes | |
Link working and resets password | Yes | |
Change password form | Yes | Changes the password after submission |
Save details check box (checkout) updates | Yes | Changes the form after submission |
Profile details page form loads | Yes | |
Profile page orders made and links work | Yes | |
Profile update information button works | Yes | Changes the form after submission |
Products
What test was completed | Passed? | Other information |
---|---|---|
Can add products and get a prompt confirming add | Yes | Staff and superuser |
Can edit products and get a prompt confirming edit | Yes | Staff and superuser |
Can remove products and get a prompt confirming deletion | Yes | Staff and superuser |
All products are avialable to be viewed by everyone | Yes | |
Can designate products as addon and they appear in addons | Yes | |
To top scroll arrow works | Yes | |
Sort by A-Z | Yes | |
Sort by Z-A | Yes | |
Sort by rating low to high | Yes | |
Sort by rating high to low | Yes | |
Sort by price low to high | Yes | |
Sort by price high to low | Yes | |
View catigory nav roses | Yes | |
View catigory nav vibrant | Yes | |
View catigory nav Luxurious | Yes | |
View catigory nav all arangements | Yes | |
View catigory nav Valintines | Yes | |
View catigory nav Birthday | Yes | |
View catigory nav Mothers Day | Yes | |
View catigory nav Houswarming | Yes | |
View catigory nav Thank You | Yes | |
View catigory nav Anniversaries | Yes | |
View catigory nav Graduations | Yes | |
View catigory nav Sympathy | Yes | |
View catigory nav all ocassion's | Yes |
Inventory
What test was completed | Passed? | Other information |
---|---|---|
Can add inventory | Yes | Staff and superuser |
Can edit inventory | Yes | Staff and superuser |
Can remove inventory | Yes | Staff and superuser |
Inventory updates with purchases | Yes | Decrease as bought by correct ammount |
Users can see the stock available | Yes | |
Out of stock shows visibly | Yes | |
Cant add more then availble to cart | Yes | |
Cant checkout with more then available | Yes | |
Out of stock items display visual messages | Yes |
Cart
What test was completed | Passed? | Other information |
---|---|---|
Can set quantity of product to add to cart | Yes | |
Can set quanity of addons to add to cart | Yes | |
Cant add more then allowed to cart | Yes | |
Get a prompt when adding to cart | Yes | |
Can view cart as superuser | Yes | |
Can view cart as staff | Yes | |
Can view cart as customer | Yes | |
Can update product quantity in cart | Yes | |
Get prompt for new cart update | Yes | |
Can remove product from cart | Yes | |
Get prompt for new cart deletions update | Yes | |
Cart carries over to checkout | Yes |
Checkout
What test was completed | Passed? | Other information |
---|---|---|
Cart carries over to checkout | Yes | |
Checkout shipping info form loads | Yes | |
Checkout strip form loads | Yes | |
Checkout form submits | Yes | |
Checkout loaing blue and white arrows loads | Yes | |
Checkout successful | Yes | |
Checkout unsuccessful | Yes | |
Checkout mssing needed information error | Yes | |
Checkout success confirmation page | Yes | |
Checkout success confirmation email | Yes | |
Order shows on admin site | Yes |
Reviews
What test was completed | Passed? | Other information |
---|---|---|
Make review as a customer/user | Yes | |
Make review as a superuser | Yes | |
Make review as staff | Yes | |
Edit review as a customer/user | Yes | |
Edit review as a superuser | Yes | |
Edit review as staff | Yes | |
Delete review as a customer/user | Yes | |
Delete review as a superuser | Yes | |
Delete review as staff | Yes | |
Review creation email sends | Yes | |
Review edited email sends | Yes | |
Review deletion email sends | Yes |
Admin
What test was completed | Passed? | Other information |
---|---|---|
Make a super user (Admin) | Yes | |
make staff role and permissions | Yes | |
Login to Django admin as customer/user | Yes | Only staff can log in successfully |
Login to Django admin as superuser | Yes | Only staff can log in successfully |
Login to Django admin as staff | Yes | Only staff can log in successfully |
Log out of Django admin as superuser | Yes | |
Log out of Django admin as staff | Yes | |
Successfully change any users data on admin site | Yes | |
Superuser can visit all links | Yes | |
Staff can visit appropriate links only | Yes | |
Accounts functionality working as intended | Yes | |
Products functionality working as intended | Yes | |
Checkout functionality working as intended | Yes | |
Admin Action send order shiped email | Yes | Email Recieved |
Admin Action send order delivered email | Yes | Email Recieved |
Admin Action send order cancled | Yes | Email Recieved |
Reviews functionality working as intended | Yes |
Bugs/Issues Encountered link | More about the issue | Fixed? |
---|---|---|
Issues loading css from file | Ended up being a issue in settings.py | Yes |
Stock going negative | added checks to any where stock can be effected | Yes |
Ratings not showing | Users could set 0 rating leading to no ratings showing | Yes |
Sort by ratings | Ratings had caused pages not to load | Yes |
Sort by ratings | No Rating shows before ratings in high to low | No |
Webhook Issue | Missing env varriable | Yes |
Webhook payment_intent.succeeded Issue | Missing env varriable | Yes |
All Scripts checked with PEP8 Code institute
blossom_haven
File | Line | Image |
---|---|---|
blossom_haven\settings.py | All | |
blossom_haven\urls.py | All | |
blossom_haven\wsgi.py | All |
Cart
File | Line | Image |
---|---|---|
cart\apps.py | All | |
cart\contexts.py | All | |
cart\urls.py | All | |
cart\views.py | All | |
cart\templatetags\cart_tools.py | All |
Checkout
File | Line | Image |
---|---|---|
checkout\admin.py | All | |
checkout\apps.py | All | |
checkout\forms.py | All | |
checkout\models.py | All | |
checkout\signals.py | All | |
checkout\views.py | All | |
checkout\webhook_handler.py | All | |
checkout\webhooks.py | All |
Home
File | Line | Image |
---|---|---|
home\apps.py | All | |
home\urls.py | All | |
home\views.py | All |
Inventory
File | Line | Image |
---|---|---|
inventory\admin.py | All | |
inventory\apps.py | All | |
inventory\models.py | All | |
inventory\signals.py | All |
Products
File | Line | Image |
---|---|---|
products\admin.py | All | |
products\apps.py | All | |
products\forms.py | All | |
products\models.py | All | |
products\urls.py | All | |
products\views.py | All | |
products\widgets.py | All |
Profiles
File | Line | Image |
---|---|---|
profiles\apps.py | All | |
profiles\forms.py | All | |
profiles\models.py | All | |
profiles\signals.py | All | |
profiles\urls.py | All | |
profiles\views.py | All |
Reviews
File | Line | Image |
---|---|---|
reviews\admin.py | All | |
reviews\apps.py | All | |
reviews\forms.py | All | |
reviews\models.py | All | |
reviews\urls.py | All | |
reviews\views.py | All |
Others
File | Line | Image |
---|---|---|
manage.py | All |
File | Line | Image |
---|---|---|
Cart HTML JS | All | |
Stripe js | All | |
Async loading product image | All | |
Scroll button | All | |
Add/Edit product html js | All | |
Sortby js | All | |
Country Field js | All |
static\css\base.css
Page | Image |
---|---|
Home | |
Products list | |
Product Details | |
Cart | |
Checkout | |
Order view | |
Profiles | |
Reviews | |
Django-allauth Register | |
Django-allauth Login | |
Django-allauth Logout | |
Django-allauth Change Password | |
Django-allauth Reset Password | |
Add Product | |
Edit Product | |
Add Review | |
Edit Review |
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Product Add LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Product Edit LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Products List LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Product Details LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Product Reviews LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Product Reviews Add LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Product Reviews Edit LH
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Login
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Logout
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Register
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Change Password
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Forgot Password
Chrome lighthouse desktop | Chrome mobile lighthouse |
---|---|
Seting Up Database
Heroku Cofig Variables | Key | Value |
---|---|---|
DATABASE_URL | postgres database url |
python manage.py makemigrations
python manage.py migrate
Visualization of Databae
Creating a Cloudinary Account
Integrating Cloudinary with Django
Install Cloudinary Library: Run the following command in your terminal to install the Cloudinary Python library:
run in terminal |
---|
pip install cloudinary |
Configure Settings: In your Django project's settings.py file, add the following configurations:
.env env.py or equivilent follow correct stucture for local deployment
Line to enter |
---|
CLOUDINARY_API_KEY = Api key value |
CLOUDINARY_API_SECRET = Api secret value |
CLOUDINARY_CLOUD_NAME = Cloudinary Name |
CLOUDINARY_FOLDER_NAME = Cloudinary folder name |
(Replace all after "=" with your information)
Heroku Cofig Variables for live delpoyment
Key | Value |
---|---|
CLOUDINARY_API_KEY | Api key value |
CLOUDINARY_API_SECRET | Api secret value |
CLOUDINARY_CLOUD_NAME | Cloudinary Name |
CLOUDINARY_FOLDER_NAME | Cloudinary Folder Name |
(Replace all Values with your information)
Add to settings.py |
---|
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage' |
Accessing Cloudinary URLs: Whenever you upload media files in your Django application, they will automatically be stored in Cloudinary. You can access the URLs of these files to display them in your application.
Optional: Resize and Manipulate Images: Cloudinary provides various transformation options for images. You can resize, crop, and apply filters to images using Cloudinary's URL-based transformations.
Testing Integration: Upload a sample media file through your Django application and verify that it gets stored in Cloudinary.
Further Customizations: Explore Cloudinary's documentation for more advanced features and customizations, such as video processing, secure URLs, and transformation options.
Congradulations you should be all set up
Key Name | Key Value |
---|---|
STRIPE_PUBLIC_KEY | API_Public_Key |
STRIPE_SECRET_KEY | API_Secret_Key |
Next set up a webhook on stripe and copy its secrect key (Signing secret) to do this Follow step 2 and then hit webhook this time. | Key Name | Key Value |
---|---|---|
STRIPE_WH_SECRET | WH_Signing_Secret |
Used Heroku to deploy the website. You can Visit Live Site by clicking here
Heroku Cofig Variables
Key | Value |
---|---|
DISABLE_COLLECTSTATIC | 1 |
DATABASE_URL | postgres database url |
DJANGO_SECRET_KEY | Django secret key for the project |
SENDGRID_API_KEY | sendgrid api key |
CLOUDINARY_API_KEY | Api key value |
CLOUDINARY_API_SECRET | Api secret value |
CLOUDINARY_CLOUD_NAME | Cloudinary Name |
(Replace all Values with your information)
Using Gmail for this site others may varry slightly
Add to your settings.py
Line to enter |
---|
import os (if not already imported) |
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_USE_TLS = True |
EMAIL_PORT = 587 |
EMAIL_HOST = 'smtp.gmail.com' |
EMAIL_HOST_USER = os.getenv('EMAIL_HOST_USER', '') |
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASS', '') |
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER |
Set Up Configuration Variables for Email Credentials
.env env.py or equivilent follow correct stucture for local development
Line to enter in settings.py |
---|
EMAIL_HOST_USER = your_email@gmail.com |
EMAIL_HOST_PASS = your_app_password |
(Replace all after "=" with your information)
Heroku Cofig Variables for live deployments
Key | Value |
---|---|
EMAIL_HOST_USER | Your gamil email |
EMAIL_HOST_PASS | your_app_password |
Landing Page
Product Page
Product detail Page
Cart Page
Checkout Page
Reviews Page
Images
More Credits
My wife who’s been super supportive of this change in career for me and just being out right amazing we will get her into this one way or another I am sure.
Code Institute for providing an excellent accelerated learning platform worth every penny.
Botique Ado walk through from code instiute as this was the basis of the project. I originally was going to expand on that but I had a spur of the moment idea for a floarist site and I think I have nailed my version of a MVP and even tweaked it some more.
My farmers market food stall Bokit'la they helped insprie the project unknowingly as I told them I had this project coming up and I will possibly be helping them soon impliment shopify to their website. As a side project I want to remake their site in Django and they said do it and send it so next up is theirs. I would have done it for this but they are specifically looking for shoppify and thats possibly out side the grading for this. They got my brain thinking of ideas and Blossom Haven came out of the wood works from that.
Feature Ideas | Why Not Implimented |
---|---|
Cuppons/voucher | Time and it wasn't needed for MVP |
Blog page | Decided at time of writing marketing plan |
Further bug squashing | Time left till project is due |
Better product rendering | Time to complete and needs to be re thought also couldn't find a good CDN free |
Custom Domain | Cost |
Rebranding | Noticed it to late but many Blossom Havens Exist |
Figure out webhook issue | Was unable to debug it in time for submission alternative email method provided leaving webhook in submission as its still mostly working just payment_intent.succeeded keeps giving 500 code all others are working correctly with 200 code |