MoniMurray / bookworms-et-al

1 stars 1 forks source link

BOOKWORMS et al

Project Overview

Bookworms et al is a ficticious eCommerce bookshop, built using Django, Python, Javascript and Bootstrap 4.

Bookworms is a Business to Customer online retailer selling books.

Developed by Monica Murray

techsini!

An image of the finished site generated from techsini which displays the application at four screen size breakpoints.

Please visit the live site via this link.

Purpose

The 'Bookworms et al' application is designed and build as a fictitious online presence of a physical bookshop, with the purpose of creating an online presence for the store to extend its customer reach.

The design encourages users to browse and to make a purchase.

Business Owner's Goals

The business owner's goal is to have a profitable eCommerce presence of its physical bookshop, which extends its customer base by providing an intuitive, robust and visually appealing website with secure and simple payment system. The Store Owner wants to manage the product offerings of the eCommerce site securely, and add, edit or delete items via a secure interactive front-end.

User/Customer's Goals

A customer of Bookworms et al wants to buy books. They will understand the application's purpose when first arriving to the site, be able to navigate intuitively around the pages of the website, view all products, click on any product to view it in more detail, and be able to purchase one or many books securely. A user or customer of this website may also want to be able to Register to create a user profile, and so can Login and Logout of their account on website, view and edit their personal data securely via their account, and view their purchase history. Registered Users with a delivery address in Ireland can avail of free delivery. All customer actions are met with feedback via the interactive front end to confirm their chosen action has been performed successfully or has been unsuccessful.

Project Goal

Bookworms is my fifth and final Portfolio Project for Code Institute's Diploma in Full Stack Software Development (Ecommerce Applications) and is a Full Stack site based on business logic used to control a centrally-owned dataset.

Bookworms et al contains an authentication mechanism and provides for the online, secure payment for products which are available and stored via the site's relational database.

Business Model

Bookworms is a Business to Consumer (B2C) direct seller of books which takes single payments - the transaction ends once the payment is made.

CONTENTS

  1. User Experience(UX)

  2. Agile Methodologies

  3. Design

  4. Features

  5. Technologies

  6. Testing

  7. Deployment

  8. Credits

User Experience (UX) Design

Strategy

Our user is browsing for books, and wants an efficient, visually appealing, and secure means of book shopping. Being able to filter by genre and sort the product listing is a bonus. Website use is designed to be intuitive. Branding is clean, uncluttered, without distraction, but not sparse. The features are created with user ease of use in mind.

All interaction with the site is designed to produce a positive emotional response within the user. This is down to the flow of information layout, use of colour, clear and unambiguous navigation structures and user action feedback. There are no aggressive automatic pop-ups. A user can control all actions and is shown a progress indicator and feedback on financial transactions.

Scope

An intuitive simple, responsive online shopping experience with the following features is the Minimum Viable Product (MVP):

The six-week deadline is fixed and the timeline is tight. MVP is priority.

Feature/Capability Target
User Profile/My Account All Site Users
Payment Capability/ecommerce Payment System = Stripe All Site Users
Authentication and Authorisation Registered Users + Store Owner
Form with validation for CRUD Store Owner
Secure access to authenticated views Store Owner
Shopping Cart All Shoppers, logged in or not
Checkout All Shoppers, logged in or not
Feedback System
Implement a feedback system to report successful & unsuccessful activities - Interactive Front End All Site Users
Main navigation menu
View navbar items, navigate linked pages All Site Users
Role-based User Registration and Login Registered Users + Store Owner
Restricted Content and Functionality Registered Users + Store Owner
Data Validation Registered Users + Store Owner
Search
Enter search criteria, view result All Site Users
Footer
View footer items, navigate all linked pages All Site Users
Products - cloud hosted SQL database
Browse, View detail and Select All Shoppers, logged in or not
Product CRUD Store Owner
My Account/Profile
Register & Login All Shoppers
View My Profile Registered, authenticated users only
Edit/Update Profile data Registered, authenticated users only
Shopping Cart
View Shopping Cart, Add, Edit items All Shoppers, logged in or not
Checkout - Ecommerce payment system
View Checkout, Add shipping details,secure checkout All Shoppers, logged in or not
Make Stripe Payments All Shoppers, logged in or not
Email
Registration Confirmation All site users
Order Confirmation email All Shoppers, logged in or not
Newsletter
View Signup page All site users
Subscribe All Site users

Structure

As is usual with an ecommerce business, a user of Bookworms is not required to be registered to browse and make a purchase. However, greater convenience of use of the site comes with registration, for example a user's shipping details and previous purchases are saved to their Profile when registered and can be edited on their Profile when they are logged in. To ensure the security of the ecommerce business and its product offering, only Store Owner/Admin users will have access to the Product table and to its features and functionality following authenticated superuser login.

User registration and login links are located on the Navigation bar. Successful login expands the Navigation bar to contain a 'Profile' page link for registered users, and if an authenticated user is a superuser, ie is the Store Owner, login returns 'Bookworms Store Management' link to add further products to the store. In addition, the Store Owner can add, edit, and delete products from the main Products page to conveniently manage the product offering of the online store.

Search feature on the Navigation bar is available to all users.

Logout feature's display is automatic following successful login and appears on Navigation bar to all logged in website users. Logout returns the site user to Home page.

The interactive footer contains internal links to the About Us and Privacy Policy pages. It also contains a link to Bookworm's Newsletter VIP Club subscription form, and external links to the website's social media.

The functionality of Bookworms is a website with a cloud-based relational database to contain and manage the product offering, and which uses Stripe payment system to handle secure payments with a transaction ending after a single payment is made. The data is stored in a consistent and well-organised manner on the database and any changes to the data is immediately available to the user at the front-end.

Skeleton

This ecommerce website follows all the conventions followed by other online stores. A user will be familiar with clicking on links and on icons to perform an action, with adding products to a Shopping Cart and with completing a Checkout process and card validation process to make a secure payment for a product or service. This app will conform with all this convention. All information displayed on the site is presented in an organised fashion with each piece of information being easy to find.

Surface

Colours are crisp, clean, sophisticated. The colour palette generated is based on the home page and favicon image with soft greens and khaki tones. Fonts follow the clean, uncluttered scope with Montserrat chosen as it is easy to read on all devices. The contrast between text and colour has been considered and colour choices made to optimise that contrast for screen reader and assistive technology.

A User's interaction with this responsive application should be simple and natural. Use of links and icons will make actions intuitive. Efficient use of feedback messages will confirm successful and unsuccessful actions to the user at the front-end.

Agile Methodology

Please follow this link to open my AGILE.md file and read about how I used Agile Methodology in the planning and development of Bookworms et al application.

Design

I began my design of the database structure by creating an Entity Relationship Diagram using LucidChart.com, which can be viewed here. The Diagram planning and layout helped me to consider what to include in each Model and the relationships between the models of the database.

Colour Scheme

Bookworms' colour scheme is designed to be crisp, clean and sophisticated. The colour palette is primarily black and white to optimise colour contrast.

I used Coolors to generate a complimentary colour palette.

The colour palette is generated from the landing page image.

landing page image! colour palette!.

Typography

I chose Montserrat font from Google Fonts for my website.

Montserrat font!

Wireframes

I created my wireframes using Figma.com to create the early UX Design Wireframe images.

Page Desktop Mobile
Home Page Homepage - Desktop wireframe Homepage Mobile wireframe
Bestsellers/All Products Page Bestsellers - Desktop wireframe Bestsellers - Mobile wireframe
Bestsellers/All Products Page - Store Owner View Bestsellers - Desktop - Store Owner wireframe
Product detail Page Product detail - Desktop wireframe
Product detail Page - Store Owner View Product detail - Desktop - Store Owner wireframe
Profile Page Profile - Desktop
Shopping Cart Shopping Cart wireframe
Checkout Checkout - Desktop wireframe Checkout - Mobile wireframe
CRUD Add Crud - Add_product wireframe
CRUD Edit Crud - Edit_product wireframe
Newsletter signup Newsletter signup
About Us About us
Footer Footer

Favicon

A favicon appears in the browser tab with the website name as a visual reminder to enable a user to easily recognise and identify a company's website in a busy browser with many open tabs.

The favicon for Bookworms is also the website's landing page image. I chose this image from freepik.com, saved it to my local machine, and used favicon.io to download the image and generate the favicon files and the link tags to insert in the Head of my base.html.

Favicon!

Database ERD

This section captures the cardinality between the entities, or tables, in the database, and how they relate to the functionality of the website itself.

The data model type used for this project is the Relational Model [list models] - User (allauth), Profile, Product, Category, Author, Order, OrderLineItem and Newsletter.

The Entity Relationship Model for the relational database was first created on paper and then a model designed using LucidChart.

LucidChart

Entity Relationship Diagram!

Data Schema Planning

Using LucidChart I set out the entities I needed in this Project, the attributes I required within each entity and then defined the relationships between the entities.

Features

Homepage

Bookworms home page is the primary web page that a visitor will view when they navigate to the website via a search engine, and it also functions as a redirection point following many of site's actions. It establishes Bookworms' brand and entices a visitor to delve deeper into the website. Our home page contains one call to action, the 'Shop Now' button.

Registration/Authentication

Wikipedia defines website user registration and login as a function which "enables a system to personalize itself". This personalisation is what offers users exclusivity, and convenience for a returning user. The Bookworms website personalises the experience for a registered and logged in user by displaying a welcome message containing the user's name on login, and the Navigation content is changed to reflect the access level of the authenticated user. Bookworms allows a logged-in user to view and modify personal shipping details and previous purchase information, and even receive free shipping if they have an address in Ireland.

Navigation

The Navigation bar of Bookworms is designed to help a site user to move smoothly around the site, allowing users to navigate the layout of the site intuitively. It is organised in a way to link the other pages of the website. Our user can use the following functions with ease:

The Navigation bar is available and offers the same functionality on each page of the website.

My Account

My Account is a tool designed for ease of use of the site user. It also creates a sense of exclusivity for a user, with certain content only available to a logged in user.

The My Account tool contains features for all users, be that Registration for an account, Login to an account, or when logged in changes to contain a link to the user's Profile and a Logout link to logout and preserve the user's secure content of the site. It also provides a front-end means of managing the store's product offering for the Store Owner and requires authentication of their credentials to display this functionality.

Shopping Cart

The shopping cart is for the site user to add products to for purchase.

When a product is successfully added to the shopping cart a success message is displayed to the user giving a thumbnail view and synopsis of the product added. It conveniently provides a total monetary value of the products in the shopping cart so the user can keep a running count of the cost of the contents of the cart.

Within the shopping cart page, a user has additional functionality and can increase or decrease the quantity of a product they have selected to purchase up to a maximum of 5, or remove it entirely, and can see the running total of their purchase update with every change they make.

The shopping cart contains a button link to the secure Checkout.

Checkout

A user can finalise their purchase of the products on this page. They are required to add shipping details for their order, and securely add their card details. The processing of the user's card is managed using Stripe secure payments system.

On the checkout page, a user can opt-in to update their profile with their shipping details for speed of checkout on their next visit to the store and so a returning logged-in user will have most of their details pre-populated into this form, save for the Name field, and the credit card field, both of which they are required to complete for each checkout process.

Products

The products available for purchase on Bookworms are listed on this page and the page provides easy-to-use sorting and filtering options to help users find what they want within the product listings.

A product can be added directly to the shopping cart using the 'Add to My Cart' button function on each product. Alternatively, a user can opt to open a product detail page for a product to view that offering in more details.

The 'Add to My Cart' button is not displayed to the Store Owner on this page as they do not need the function to add products to the shopping cart.

Product Detail

The product detail page outlines everything a user might wish to know about a product offered on Bookworms. Product name, description, rating, price and a quantity picker are all features of this page. A product can be added to the shopping cart, and the quantity of the product can be increased up to a maximum of 5 before the 'Add to My Cart' button is clicked.

The 'Add to My Cart' button is not displayed to the Store Owner as they do not need the function to add products to the shopping cart.

CRUD

All of the major functions of the product management of the Bookworms store can be controlled by the authenticated Store Owner via the front-end on either the Products page or the Product detail page. New products can be added, and existing product detail can be edited, or deleted from the store entirely, with all changes being reflected immediately to the Store Owner on the front-end and to the data on the database.

User Feedback Messages

Feedback to all user interactions is provided via messages which appear from below the shopping cart icon. A user can see their action has been performed successfully, and feedback in the event of an unsuccessful action is provided also, with a helpful message. A message can be dismissed by clicking the 'x' button on the top right corner of any feedback message.

Email Confirmation

Upon registering for an account on the Bookworms site, a user is sent a registration confirmation email and asked to verify their email address by clicking on the link issued to them in the confirmation email.

On making a purchase, an order confirmation email is issued to a user which confirms all the detail of their purchase and the shipping address to which it will be sent.

Search Feature

Search feature, which is available to all site users, can be found in the Navigation bar and is used to search the website's content with convenience for the user in mind. A user's search term is checked against product titles and descriptions, category names or author names and any matches found are returned to the front-end, with the number of the returned matches displayed over the list of those items.

Footer

The bespoke footer contains internal links to an 'About Us' page, the application's generated 'Privacy Policy', and an invitation to subscribe to 'Join VIP Club' to receive a newsletter. The footer also contains a line of text "Made by Monica Murray for CI P4" with an external link to my GitHub profile, together with external links to the Facebook Business Page for Bookworms et al, and external links to Instagram and Twitter.

Bespoke Error Page

A bespoke 404 Page has been created for Bookworms et al, a screenshot of which is below.

Bespoke 404 Error page!

Future Implementations

Future features to develop will be:

Accessibility

Throughout this project I have endeavoured to implement good accessibility practices.

I tested each site page on Lighthouse and detail these tests and scores in Testing.md

The A11y Collective is a useful site at which I saw why I was scoring poorly in relation to links on my application.

The CI a11y accessibility Slack channel is a useful and detailed resource which I will resolve to use early in future development projects post-Diploma.

WebAIM Colour Contrast checker helped me choose colours based on their accessibility rather than appearance.

Technologies Used**

Languages Used

Languages in this project were:

Frameworks, Libraries & Programs Used

Defensive Programming

Defensive Programming was at the forefront of the site's development, with user authentication and authorisation implemented for all site users and limiting access to data to only the authenticated registered owner of that data. In addition, Store Owner access is further restricted using the 'login_required' decorator with those front-end management views only rendering at the front-end to the authenticated superuser.

Marketing

In the planning of my eCommerce application, I asked myself the following questions to develop the marketing plan for Bookworms et al:

  1. Which eCommerce application types apply to this online business.
  1. With the eCommerce application type in mind, what kind of features might be included within the business website?

    • Easy Payment Gateway
    • Authentication System
    • Search + Filter functionality
    • High Quality images
    • Clear Product Descriptions
    • Ratings
    • Shopping Cart, Checkout and Payment System
  2. What entities would your database need, and what data might be included in these entities?

User (allauth) Profile Products Category Author Checkout: Order Checkout: OrderLineItem VIP Club
ID (pk) id (pk) id (pk) id (pk) id (pk) order_number (pk) id id
username username ('User') rating name name user_profile ('Profile') order ('Order') user
password image name full_name product ('Product') subscribe
email bio category_name email quantity email
is_superuser phonenumber description phone_number lineitem_total
email price country
country author town
address line1 type address line1
address line2 image_url address line2
town image_url county
postcode order_date
county delivery_cost
order_total
grand_total
original_bag
stripe_pid

Purpose of the Application

The eCommerce aspect of the Bookworms et al business is specifically designed to facilitate commercial transactions, and it involves the online transfer of information. As mentioned above, this is a Business to Customer eCommerce application type, selling physical products online. Payments for those products is taken online. The transaction is finished after a single payment is made and the product is shipped.

Core Business Intents

The core business intent of Bookworms et al is to sell books online as a part of it's physical bookshop business, to extend it's market reach.

Marketing Strategies for app

Content Marketing

Newsletters - VIP Club

Bookworms can provide additional benefit to Subscribers by providing regular interesting content related to bestsellers, author signings and readings and special offers.

Newsletter Subscription Page!

Social Media Marketing - Facebook business page

As Facebook has the largest number of users and the widest demographic, I chose to set up a Facebook Business Page as part of the social media marketing strategy for Bookworms et al.

Bookworms Facebook Business Page Bookworms Facebook Business Page - About Tab Bookworms Facebook Business Page - Cover Picture Bookworms Facebook Business Page - Edit details tab Bookworms Facebook Business Page - Manage page tab Bookworms Facebook Business Page - Page Health view Bookworms Facebook Business Page - Page Posts, and Page Updates

SEO

After adding meta tags to my head element to optimize my website's visibility and improve search engine performance, I also added keywords to attract both search engines and users. I then added my deployed url to XML-Sitmaps to generate an xml file. Google uses this xml file to help it understand the website's structure and how the pages link to each other.

[Google Site Verification]()

The ideal keyword combination is to have long-tailed keywords with High Volume (lots of people using the keywords) but Low Competition (few other sites providing pages for your keywords).

The following table, based on Hubspot's SEO Starter Pack, helped me plan the SEO for Bookworms et al:

Page Page Title Page Description Target Keywords Internal LInks Call to Action
Home Bookworms + Home Bookworms et al are expert Irish booksellers. With Free shipping
in Ireland, browse and purchase from our bestsellers in store or online.
We are book-lovers, passionate readers and love recommending the right
book for our customer. Shop our range now.
view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Products Shop Now
Products Bookworms + Bestsellers Bookworms et al offers secure and encrypted checkout powered by Stripe.
Purchase from our range of bestseller books.
view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Product_Detail, Bag, Checkout Add to My Cart
Product Detail Bookworms + {product.name} Bookworms et al's range are recommended by book-lovers and readers. With Free shipping
in Ireland, browse and purchase from our bestsellers in store or online.
view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Products, Bag, Checkout Update item quantity, Bestsellers/Keep Shopping, Add to My Cart
Add Product Bookworms + Store Management - Add Product or Authorised Shop Owner only. Add a new book to Bookworms bookshop. Bookworms et al Irish bookshop, for all your bestseller reads. view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Products, Bag, Checkout Add Product, Cancel
Edit Product Bookworms + Store Management - Edit {{ product.name }} For Authorised Shop Owner only. Edit a product on Bookworms bookshop.
Bookworms et al Irish bookshop, for all your bestseller reads.
view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Products, Bag, Checkout Edit Product, Cancel
Shopping Bag Bookworms + Shopping Cart Shopping Cart for Shop Bookworms view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Products, Checkout Update item quantity, Remove Item, Keep Shopping, Secure Checkout
Checkout Bookworms + Checkout Shop Bookworms payments processing is handled securely by Stripe ensuring your data is encrypted and protected view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Products, Product Detail, bag, Stripe, Profile Save user data, Adjust Bag, Complete Order
Register view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Register, Login, Profile Back to Login, Register
Login view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Login, Home page, Profile Login, Home page
Logout view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Logout, Login, Home page Logout, Confirm logout, Cancel
Profile Bookworms + {{user.username}}'s Account Profile Only for logged in users. Review your past orders, edit your details. Browse our range of bestsellers. view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Login, Home page, Profile, Order Number Edit details, Logout, Bestsellers/Keep Shopping
VIP Club Bookworms + Newsletter VIP Club for book, reviews, updates access to exclusive deals, and more. Shop Bookworms for recommended books. view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Home page, Register, Login, Profile Subscribe
Policy Bookworms + Privacy Policy Here's everything you need to know about how we collect, store and manage our customers data. Shop Bookworms for all your holiday bestselling books view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Home page Bestsellers/Home page.
About us Bookworms + About Us Bookworms et al are expert Irish booksellers. With Free shipping
in Ireland, browse and purchase from our bestsellers in store or online.
We are book-lovers, passionate readers and love recommending the right
book for our customer. Shop our range now.
view our bestseller range of books, free shipping in Ireland
with secure payment, book-lovers and readers, Irish-owned shop
Home page Bestsellers/Home page.

Robots.txt and Sitemap.xml

Privacy Policy

A Privacy Policy, or Notice, is a document provided by the web application. It's purpose is to be transparent and inform Bookworm's users about how their data is being collected and processed.

It is concise, transparent and easily accessible via the footer on every page of the website. This Privacy Policy generator was used to generate the text content for this Bookworm et al's Privacy Policy.

Testing

Testing is documented in TESTING.md file here

Setup and Deployment

Setup

My site is deployed using Heroku - Bookworms et al

To Deploy the site using Heroku:

The app is now created and is listed in the Heroku dashboard.

Click on your newly created app.

In the 'Settings' tab of your Heroku app, add Config Variables. The following is the key list required for this project:

Heroku Config Var Key List!

In the 'Deploy' tab of your Heroku app:

Create a new database on ElephantSQL

Heroku uses an ephemeral file system - which means it is wiped clean every time Heroku updates, or every time the app is redeployed.

So Gunicorn which will act as the web server for the project, and the project will also use a server-based database called 'Postgres'. It will be seperated from the application, so it will survive even if the application server is destroyed.

To Create the Postgres database:

The Postgres database is now created on ElephantSQL and you can see it on your ElephantSQL dashboard.

Connect Gitpod development environment to Postgres database

Through Gitpod, connect ElephantSQL through settings.py with a variable named 'DATABASE_URL', and then migrate the database structure to the newly connected ElephantSQL database.

Test the connection in ElephantSQL:

You should see that the dropped down list has been populated from the Django migrations.

Create Procfile in Gitpod

Heroku needs a Procfile so it knows how to run a project.

In the newly created Procfile, add the line 'web: gunicorn PROJECTNAME.wsgi'.

How to Fork this Project

A Fork of a repository is a copy of the original repository that you now own. Any changes made to the project in your fork will not affect the original.

Use the following steps:

You should now have a copy of the original repository in your GitHub account. To deploy your forked project following customisation, follow the steps above.

How to Clone this Project

Creating a clone enables you to make a copy of the repository at that point in time - this lets you run a copy of the project locally.

To do this, you should:

How Stripe Works - what's going on in the background

Stripe Webhook

Connect to Stripe

Connect to AWS

AWS is a cloud-based storage service which we use to store our media and static files for this project.

You can see all this code in my settings.py in this repo.

Credits

For my Project I followed the advice given in the CI Guide to MVP video for Project 5 to use the Boutique Ado Walkthrough Project code as a boilerplate to get started and save precious time, and I then customised as much as I could. So full credit to Boutique Ado walkthrough which I have used extensively throughout this eCommerce project. I also used the knowledge I learned from the design of both the 'Hello Django' and the 'Django Blog' Walkthrough projects during the CI Module on FST Frameworks.

I found Dee Mc's YouTube videos on creating a Django Recipe Sharing tutorial useful to solidify what had been taught on the FSF Django module as she explained similar aspects in a different way that made sense to me. I found the video series on creating a User Profile particularly useful in creating my own Profile app in this project. The videos for creating a Favicon, Sitemap and Flex were also very helpful at different stages of this project's development.

I had used SummerNote in my fourth project and used it again in this Bookworms project.

Favicon - the image I chose, which states it requires crediting or I’ll be charged, comes from [Freepik.com]](Www.freepik.com). The Image is by Freepik

I used the website Tinypng to reduce the size of my homepage image.

Credit to the many CI Community Q&A videos for advice from MVP of Project 5, to how to study, to very valuable videos on Readme essential sections.

Credit to this Stack Overflow post from which I learned to apply a counter to the Shopping Cart icon on the nav bar.

I took inspiration for the design of the Bookworms et al Bookshop from many leading Irish bookshops with strong online presence such as Easons and Dubray.

To fix my footer to the bottom of every page, regardless of body content size, I used flex as outlined on this article.

The PyLessons article about Newsletter subscriptions helped me to lay out the model for my own custom newsletter subscription in this project.

Bug fixing my search function took a little further research into how to structure a search in Django and the following YouTube video helped me to formulate the search and structure the view, in particular the author and category queries which needed double underscores to search in the name field of the author and category foreignkeys of Product model.

I used Wikipedia to define features of a website, such as Registration and Login.

Freeconvert.com was where I converted my jpeg product images to webp format to improve site responsivity.

WebAIM Colour Contrast Checker helped me select a better contrast combination to address WAVE warning.

All wireframes, ERD and screenshots are my own creation. This Readme is based on the extensive Readme.md file I created for my PP4, The Shopping List

Acknowledgments

The CI Slack Community is a resource I used almost as much as Google for this project! This community is so kind and generous with their collective and individual knowlege and I used them to bounce ideas off, ask for advice, and to seek guidance where code went awry. A Big thank you to CI colleagues for taking the time to thoroughly test the site for me.

CI Tutor Support were an invaluable resource for this project and I'm so grateful to all the patient Tutors from whom I received a huge amount of reasurance and guidance.

Thanks to my mentor Jubril Akolade for all his encouragement!