This is the eCommerce website of the D15 Movie Lovers Store. A store front specialising in the sale of top quality boutique label Blu Ray, 4k UHD and special editions of Movies. The overall idea from Portfolio Project 1 to this final project was to create a full D15 Movie Lovers Club which would incorporate a Blog (Portfolio Project 4), Quiz (portfolio Project 2) and a Store Front (portfolio Project 5) to cater to a healthy and growing Movie Lovers club in the Dublin 15 area. And also to grow a separate customer base with niche interests in Physical Media through this eCommerce platform. I have a secondary goal of signing up non club customers to a Newsletter with the intention of also growing the club member numbers by eventually offering Club Member only discounts and special deals, through the Newsletter, in association with the UK Blu Ray labels such as Eureka, Arrow Video, Indicator and 88 films.
The site caters to a niche customer base. People whom appreciate the experience of watching movies in the highest quality possible. Physical media enables us to enjoy films, of all types and genres, in their best formats through modern remastering techniques, proper and original colour gradings and free from the inadequacies of streaming platforms such as poor availability of titles and artefact creep (blocky transitions) in darkly shot scenes. There is a healthy customer base of 'Movie Lovers' as evident in the availability of extremely rare films on modern boutique label releases. A quick scan of the bigger boutique label companies in the UK such as 88 Films, Eureka, Indicator and Arrow Video (not to mention the myriad of labels in the US) and its clear there is a healthy desire still for high quality physical media.
This platform will cater to the Irish customer base and I believe it is the only Physical Media dedicated site in Ireland. The primary product focus is the sale of high quality Blu Ray, 4k UHD and Special Editions of films. The product will be sourced in bulk from the UK labels 88Films, Eureka, Arrow Video and Indicator. With future expansion the company could source US editions from labels such as Vinegar Syndrome, Shout Factory, Scream Factory etc. The company also intends to stock Movie Memorabilia, T-Shirts, Action Figures, Vinyl Soundtracks etc as the customer base grows.
Stripe has been implemented to the site as a relatively user friendly payment system. The payment structure to the site is a common process. Client will add the items they wish to buy to the Bag, enter secure checkout, validate the purchases on the summary, enter the payment screen, enter personal details and credit card details and complete purchase.
Users are people interested in Physical Media collecting and Movie Lovers. Users can regularly be found in dedicated blogs, Dedicated FaceBook groups, Instagram channels and commenting on Physical Media youtube videos. While it's hard to make an informed judgement on the age group of Physical Media customers I will say, from my own engagements and club memberships, that it seems to be more common in the 30-60 age group.
According to Hootsuite.com (Link: https://blog.hootsuite.com/facebook-statistics/):
It is clear from the stats above that using Facebook to promote the D15 Movie Lovers Store is essential. However Youtube and Instagram will also be implemented in the future. According to Wallaroomedia (link: https://wallaroomedia.com/blog/social-media/tiktok-statistics/) 80% of US Tik Tok Users are aged between 18-34. The age range and the general use of Tik Tok as a performance platform I don't see how Tik Tok could help the promotion of the D15 Movie Lovers Store at this time. Efforts should be spent on promotion through Facebook.
From my own experiences as a movie collector and avid Physical Media champion I find a lot of my information comes from Facebook groups, Youtube creators and reviewers and Instagram influencers regularly creating content around upcoming releases, rumoured releases and unboxing and review based content. It is my intention to start a channel with Youtube and a page with Instagram to compliment the Facebook page at a future date. Online creators have been instrumental in my own sourcing of Blu Ray, 4k UHD and special editions of certain Movies and I believe I can also engage with customers, Club Members and a wider untapped audience through such content.
The business will run Sales over holiday periods and intermittent Club Member discount campaigns throughout the year. However the Offers section of the website is currently blank and will be updated once an actual offer campaign is devised.
The business goal is to first and foremost sell our product, for profit to our target demographic. A secondary goal is to add memebers to the D15 Movie Lovers Club and to grow the business customer base in Ireland using the Club and Newsletter. The marketing strategy for the site will be Search Engine Optimisation, email marketing through the Newsletter and social media marketing with the implementation of a Facebook page. I intend to grow the Facebook page and regularly post updates on new releases, low stock items, general movie 'banter' etc.
The beauty of using basic SEO, the Facebook page and the Newsletter for marketing is its free. I don't intend to spend on advertising until I know I have used this strategy as far as it will take the platform.
I set up a custom Newsletter service. Once the User registers with the site they can then sign up for the Newsletter.
https://www.privacypolicygenerator.info was used to generate a standard Privacy Policy.
Please see Privacy Policy here: https://www.privacypolicygenerator.info/live.php?token=rvpuphBIoDGo13y658txPwQQ9RnYARQQ
The site was built with Key Words in Mind. Throughput the site you will note the use of keywords directly related to Movies. A basic list of keywords I include below for reference:
A sitemap was generated and included using XML-sitemaps.com. This lists the relevant URLs to facilitate search engine navigation through the site with a goal to making the site more likely to display as high up the search engine listing as possible. The sitemap was generated by following these steps:
I created a robots.txt file to ensure search engines dont crawl through sensitive sections of the site. Which ultimately facilitates a more robust search engine process and improving the SEO overall.
I have listed the models used below for quick reference and included in a basic schema:
class Order(models.Model)
class OrderLineItem(models.Model)
class Subscriber(models.Model)
class Genre(models.Model)
class Region(models.Model)
class Format(models.Model)
class Stockitem(models.Model)
class Review(models.Model)
Full Models Schema:
As a regular visitor to the site I can:
login with ease so that I can get to shopping quickly or write up reviews
read simple product descriptions so that I am better informed of my product choices
easily search for products so that I can find specific products without the need to view all products
view high quality images of the products so that I can pick my desired product with ease
sign up for a newsletter so that I can stay informed of new updates to the store
filter the stock items so that I can quickly find what I am looking for
view my cart but also return to shopping without entering the payment screen so that return to shopping and payment are two separate options which makes it easier to return to shopping or go to payment
easily pay for my selected products so that I am more likely to visit the store again
gather my selected products in a user friendly shopping cart so that I can review and pay for my products with ease
delete my reviews so that I can remove my reviews when I see fit
write reviews of products on a user friendly form so that I feel more connected with the club and the company
easily edit my reviews so that I can make sure my reviews are accurate
As a regular visitor to the site I can:
leave reviews and ratings so that I can help better inform the next person of the quality of the product
select a 'Notify Me' option when a product is out of stock so that I am notified when the product is in stock
clearly see stock availability for each product so that I can make a more informed decision when shopping
easily visit the stores social media presence** so that I can engage with the business more regularly
The four user stories not completed have been noted for future development. It was simply a timing issue in this case to not include these stories in the initial development block. An effort to prioritise work items rendered the four above non essential.
The project scope was reduced and simplified as I approached my deadline. I decided to concentrate on coding the store in a simple fashion with full CRUD functionality intact.
The user stories relating to 'ratings', 'Notify me', 'Stock availability' and 'social media presence', while not implemented at this stage of development due to timing constraints will be added to the store at a later date.
I relied very heavily on the course content walkthrough project 'Boutique Ado' and while a lot of the desigin elements from the project has carried over I made sure to 'reengineer' the design to my own purposes. Hence the colour scheme and Typograpy are used from the previous portfolio projects PP1, PP2 and PP4. This is to maintain a uniform approach so as when the individual projects are merged into one Store/Club offering for the D15 area, the design will match.
The main colour scheme used is:
As the site is a movie physical media store I have included 11 films as example products. I chose films that are a mixture of well known classics and some rarer titles to appeal to the collector sensibility
When the user clicks 'Shop Now' on the landing page, they are presented with all products. They can then sort and search as they need as per feature entries above.
Stripe was implemented as the payments system. The test card used was: 4242 4242 4242 4242 Date: 04 24 CVC: 242 ZIP: 42424. I include a screenshot of recorded purchases below:
User profiles. Implementing a User Profile would make the user experience more detailed by giving the user access to previous purchases for their own reference. Extra functionality like a points system, in which users will earn points with each purchase to use toward future purchases to reduce the price, could be incorporated into this.
Special Offers. The special offer page is currently not coded. This was a timing issue and I plan to add a robust special offer section to the site in the future.
Ratings. The rating system is also not implemented despite showing on the product images. I would like to incorporate the rating system to work along side the user review section in future development.
I intended to add a 'Notify me when back in stock' function to the site. I planned to include a product that was noted as sold out. When a user would click the 'Notify me when back in stock' button it would generate a note on the profile in the admin panel and send them an email confirming their selection.
Stock availability. Adding a stock counter to each stock item would help to inform users of low stock on items. This would be particularly pertinent to special editions aor low stock run items. This functionality would also help to service collectors and their more demanding approach to obtaining particular items.
As this store is intended to be merged with the D15 Movie Lovers Club, the D15 Movie Lovers Quiz and the D15 Movie Lovers Blog, it was my intention to add the links back to these delpoyed sites as well as adding a link to the D15 Movie Lovers Store facebook page. This shoulod be a relatively easy next step for future development. However as the scope of the development was bearing down toward the deadline I chose to add this work item to future development.
I also plan to develop a club logo and replace the rudimentary D15 Movie Lovers heading on each of the PP1, PP2, PP4 and PP5 projects.
The product descriptions accompanying each product was copied from Amazon. I would prefer to take the time to write up my own product descriptions for each stock item.
Fixing the Nav Bar for Mobile devices. While in its current state it is fully functional It looks uneven and needs further development to align across the top of the header.
I used the W3c Markup validator, the W3C CSS Validator and the Pylint tool built into the terminal.
Lighthouse test desktop:
Lighthouse test mobile:
If the user has a chrome download bar (the bar that contains your downloaded item) at the bottom of the desktop screen it will push some text upwards on the signup and login pages.
The add remove items from the checkout screen is uneven and ugly on the mobile view. This is a throwback to the boutique ado code which was used in this section of the project.
I have used a generic SKU number for the products - I was unsure where to fiund the actual skus. I decided to use a general sku for the purposes of showing where the SKU would go. This is obviously an importnat item and can be fixed/implemented at a later date.
There was an attempt made to implement cloudinary however this was scrapped. You will note veistigaes of the attempt in the requirements.txt file
Due to the Heroku changeover (dyno change and chare structure implemented) I deployed early. When I loaded my site locally my static files didnt render. I fixed this after some time by changing Debug back to True.
Goal - This user story was requested to ensure the user had a seamless path from selecting a product to buying the product
Action - I logged in as a registered user and processed a purchase. I was able to complete my purchase quickly and hassle free.
Expected Outcome - Simple and standard track from logging in to product purchase.
Actual Outcome - As a user I was able to log in, select my product and purchase my product in a very user friendly and quick fashion.
Test passed - Yes.
Goal - Implement a very standard and common shopping cart/bag function
Action - I processed an order of a number of stock items.
Expected Outcome - The stock items would gather in a structured order in the cart and display a user friendly summary.
Actual Outcome - The stock items when selected for purchase organised in a very standard shopping bag and displayed very clearly for the user to reference
Test passed - Yes.
Goal - Adding the review section to the site was a way to give the user more functionality and a reason to stay a little longer on the page. Users should be able to add a review of a selected stock item, edit that review and delete the review.
Action - I logged in as a registered user and created a review, edited the review and deleted the review.
Expected Outcome - Create, edit and delete a review.
Actual Outcome - I was able to create, edit and delete a review.
Test passed - Yes.
Goal - adding a return to shopping button on the checkout summary will give the user an easy way to return to shopping without entering the checkout page. This makes it easier for users to purchase more items in a user friendly way.
Action - I logged in as a registered user and selected a stock item to purchase. Once I clicked 'Add to Bag' the checkout summary generates without proceeding to the checkout leaving me to continue shopping with ease.
Expected Outcome - Add stock items to bag, click continue shopping and continue shopping with ease.
Actual Outcome - While there is no 'Return to Shopping' button in the checkout summary, there is instead a 'Go to secure checkout' button. This meant that I was able to continue shopping with ease without the need to click a button. This is in fact a more user friendly approach without having the user to click a button.
Test passed - Yes, I note there is no return to shoppping button on the checkput summary but there doesnt need to be. Instead I left it up to the user to click 'Go to secure checkout' when they are ready to do so.
Goal - Adding a filter function to the store gives the user the ability to filter the stock items to their preference.
Action - I logged on as a registered user and filtered the items by Price, Genre and Name .
Expected Outcome - The stock items would generate by price low to high unless I select Price High to low from the drop down list. The Genres would group one beside the other and the Name would alphabetize A-z or Z-a depending on my selection.
Actual Outcome - Genres grouped together, Price generated low to high or high to low depending on my selection and Name alphabetized A-Z or Z-a depending on my selection.
Test passed - Partially, There are options to sort by rating which has been noted for future development.
Goal - Adding a Newsletter to the site for registered users is a good way to keep in touch with your customers and clients.
Action - Logged on as the superuser and sent a test newsletter to those users that signed up for the newsletter.
Expected Outcome - The newsletter would arrive in the registered users inbox.
Actual Outcome - The test newsletter arrived in the registered users inbox.
Test passed - Yes.
Goal - Using high quality images for the site is an essential step in ensuring your clients trust what they want to purchase.
Action - Visited site and reviewed each stock item image. All are quality representations of the actual stock item.
Expected Outcome - High Quality images present on site.
Actual Outcome - High quality images are visible on site.
Test passed - Yes.
Goal - Adding a search function to the site gives users the ability to search for a single item further streamlining their experience.
Action - Logged onto the site and searched for each stock item separately.
Expected Outcome - Each stock item would show when I search for it.
Actual Outcome - On each search the right stock item would present on clicking search.
Test passed - Yes.
Goal - Each stock item should have a detailed breakdown of the item accompanying the high quality image. This is an essential step in securing repeat custom.
Action - logged on to site and inspected each stock item. A detailed product description accompanies each stock item.
Expected Outcome - A detailed product description accompanies each stock item.
Actual Outcome - each stock item has a detailed description.
Test passed - Yes.
Goal - Easy log in should be an essential addition to this site giving users a peace of mind that to shop on this site is hassle free.
Action - logged on and started shopping.
Expected Outcome - I would log in very quickly.
Actual Outcome - I logged in very quickly.
Test passed - Yes.
Goal - adding a rating system to accompany the review functionality would make the site more dynamic for returning users nd give existing users a reason to visit the site more often.
Action - Logged in and wrote a review however I was unable to leave a rating.
Expected Outcome - Ability to write a review however unable to leave a rating
Actual Outcome - Review was written however I was unable to leave a rating.
Test passed - partially, the rating functionality has been noted for future development.
Goal - Including links to social media is essential to maintaining engagement with the users and clients.
Action - No action - this has been included for future development.
Expected Outcome - No expected outcome - noted for future development
Actual Outcome - No Outcome.
Test No - This work item has been noted for future development.
Goal - Including stock availability numbers is a good idea to keep the users informed of stock levels. This will become particularly pertinent when stocking special editions or limited editions.
Action - No action - this has been included for future development.
Expected Outcome - No expected outcome - noted for future development
Actual Outcome - No Outcome.
Test No - This work item has been noted for future development.
Goal - Adding this functionality would give users the ability to click a 'Notify me when back in stock' button giving users the peace of mind that should the item they want arrive back in stock they will be notified.
Action - No action - this has been included for future development.
Expected Outcome - No expected outcome - noted for future development
Actual Outcome - No Outcome.
Test No - This work item has been noted for future development.
I tested the site extensively, all links, pages and functions are working and in a good state.
A huge amount of testing was done with friends and family Members. My wife proof read this ReadMe file. General feedback was very positive.
I tested the site on Google Chrome, Mozilla Firefox and Microsoft Edge. I did not test it on Internet Explorer as it is no longer supported.
The site is fully functional across Desktop, Tablet and mobile devices. However as noted for future development the Nav Bar needs work in mobile view.
Heroku was used to deploy the site. The project was deployed using the following steps:
Log into Heroku and create a new app
Create an external database using ElephantSQL
Log into Elephant SQL, click create new instance
Set up plan, select Tiny Turtle which is free, leave tags field blank
Select your region, mine was amazon-web-services::eu-west-1
Click Review
Ensure details are accurate and click Create Instance
Return to the ElephantSQL dashhboard and click on your project instance
Copy the URL to the clipboard
In the terminal install dj_database_url and psycopg2 to connect to the external database
Update the requirements.txt file
Import dj_database_url in the settings.py file
Run the showmigrations command to confirm you are connected to the external database
Migrate the database models
Create a superuser
On the elephantSQL page for the database select browser
Click the table queries button and select auth_user
On the deploy tab on Heroku, click settings, click reveal config vars
Add the following:
On the Deploy tab, connect to GitHub, (search for the repository name)
At the bottom of the deploy page, Enable Automatic Deploys. This allows for automatic deployment when you push to GitHub
We can make a copy of the of the original repository by forking the GitHub repository. This allows us to view or amend the without affecting the original repository
Log in to GitHub and select the repository
The fork Button is located at the top of the Repository, click it
A copy of the Repository should be created
I heavily relied on the course content walkthrough project for Boutique Ado. The entire project was built using the guidance of the Boutique Ado course content in particular the boostrap application and some CSS which I used from the walkthrough to help make the site responsive and functional. My sincere thanks to Code Institute for the Boutique Ado Walkthrough Project content as without it I would not have completed this project.
Stack Overflow, W3Schools web tutorials.
My wife and children for their unwavering support and patience. Finally now I can make up for lost time over this extremely difficult year
Tutor support
Mike Sheehan for his unwavering support
Kevin Loughrey for his invaluable tutoring and encouragement in the darkest hours