This is the main marketing site and sales channel for The Spa Stockholm, a spa in the heart of Sweden's vibrant capital. The Spa Stockholm, offers a sanctuary where customers can escape the hustle and bustle of everyday life and indulge in luxurious treatments for body, mind, and spirit.
The Spa Stockholm's e-commerce platform will primarily focus on a B2C model, targeting individual consumers seeking luxurious spa treatments and wellness products. This model aligns with the spa's mission to provide personalised and exceptional service to its clients, enhancing their relaxation and well-being.
Purpose: Streamline the appointment scheduling process, allowing clients to book treatments and services online at their convenience.
Real-time availability of treatments. Easy rescheduling and cancellation options (to be added). Automated confirmation of booking (also add automated reminders of appointments via email or/and sms).
Purpose: Expand the spa's revenue streams by selling premium skincare products and wellness items online.
Wide range of products from leading skincare brands. Detailed product descriptions and customer reviews. Membership discounts and special promotions.
Purpose: Enhance customer loyalty and attract new clients through membership programs and gift cards.
Different membership tiers offering exclusive benefits and discounts. Purchase and redemption of gift cards online. Special packages for corporate gifting.
Purpose: Provide clients with bundled treatment options tailored to their specific needs.
Customisable spa packages for various wellness goals. Seasonal and thematic packages.
Customer Reviews and Testimonials (to be added): Purpose: Build trust and credibility by showcasing positive client experiences.
Section for customers to leave reviews and ratings. Display of testimonials on the homepage and relevant service pages.
Optimise the website for search engines to improve visibility and attract organic traffic. Focus on keywords related to spa treatments, wellness products, and luxury relaxation.
Leverage platforms like Instagram (to be added), Facebook, and Pinterest (to be added) to showcase the spa's serene environment, treatments, and products. Use influencer partnerships within the beauty sector to reach a broader audience.
Build a mailing list to send newsletters, special offers, and updates. Personalised email campaigns based on customer preferences and purchase history.
Create a blog featuring articles on wellness, skincare tips, and the benefits of spa treatments. Use high-quality images and videos to engage visitors.
Run targeted ads on Google and social media platforms to reach potential clients. Retargeting ads to convert visitors who have previously shown interest in the spa.
Collaborate with hotels, travel agencies, and wellness influencers to create exclusive offers. Partner with local businesses for cross-promotional opportunities.
Choose and integrate reliable software for online bookings and product sales. Ensure secure payment processing and data protection.
Develop high-quality content, including professional photos, videos, and blog articles. Regularly update content to keep the website fresh and engaging.
Plan a launch campaign to generate buzz and attract initial traffic. Use promotional offers to encourage early bookings and product purchases.
Continuously monitor website performance and user feedback. Regularly update the site with new treatments, products, and content based on customer needs and market trends.
The e-commerce model for The Spa Stockholm will enhance the customer experience by providing convenient online booking, an extensive range of products, and personalised service options. By leveraging effective marketing strategies and a user-friendly website, The Spa Stockholm can attract a wider audience, increase revenue, and establish itself as a premier destination for luxury wellness in Stockholm.
As a First Time Visitor/user, I want to easily understand the main purpose of the site and learn more about the Spa: The Home page and Home section displays the logo and a Hero image which immediately gives the uer an idea what the website is about. it also displays a Read more button which takes the user directly to the section giving the user more information about The Spa. In the about section there is also a read more about us buttonwhich takes the user to a page with more comprehensive information about The Spa. This page is also linked in the footer that is displayed on every page of the website.
As a user I want to easily get in contact with The Spa to get any questions answered. If as user has any queries there is also a contact link in the footer (visible on all pages)
As a First Time Visitor/user, I want to be able to easily navigate throughout the site to find content. The Spa's main navbar is a dropdown navbar displayed as a hamburder menu on all screens sizes. In it are links to the most essential pages and sections. there ae also buttons convenitently placed through out the site to make navigation easier.
As a First Time Visitor, I want to easily locate the Spa's social media link(s) to see their followings on social media to determine how trusted and known they are. The link to FB is threfore placed in the main navbar.
As a First Time or returning Visitor/user (logged in or not), I want to easily brows the services available. These are therefore placed on the landing page and can be reached by manually scrolling or via the dropdown links in the menu which scrolls directly to the section. In the Treatments section the treaments are presented and can be clicked for more indepth information about the service.
As a customer/user I want to be able to select services and add them to the cart. There are threfore two buttons with booking messages on the site. One in the second navbar visible on al pages and one inte the prices and booking section (reached via the dropdown navbar).
As a user/customer I want to easilyt chose a service and add to my cart. I also wantot be able to delete, increase quantity and update my cart before going to checkout and payment which is possible in the cart via buttons to update, increase quaantity (only relevant for Spa access). The user can also easily navigate back via a button to add more service to their cart.
As a customer/user I want to be able to pay for my selected services and receive a confirmation of my booking/purchase. when the services have been selected and added to the cart the user can click the button and go to checkout and fill out their payment information and then make the payment. A booking confirmation message is displayed and the user is also redireced to a booking confirmation page with more information, at the same time an email is sent to their registered email.
As a user I want to connect with the Spa and keep updated about events, special offers etc. I also want to follow the Spa on Social Media and be able sign-up for, and receive promotional emails from The Spa. The FB button is located in the dropdown menu so the user can easily find it The Spa uses Mail Chimp to handle their newsletters and a pop-up is conviently displayed to the user to sign-up for newsletters, promotions etc.
As a user/customer, first time or returning, I want to easily register an account/profile and know that my account was successfully registered. The link for registration is located in the dropdown menu and takes the user to a registration form. A confirmations page is displayed after registering letting the uer know they need to confirm their email beofore login.
As a user I want to be able to easily log in and logout: I want to access my personal account information, and I want to have a personalised UserProfile, where I can view my bookings/purchases. login and logout links are located in the dropdown menu and conveniently logs the user into the account and takes the user to a logout page which checks if they are sure they want to log out.
As customer/user I want to easily update my profile informatio (email, phone number) and this can be done on the profile page accessed via the dropdown menu when the uer is logged in. When profile is updated a confirmation message is displayed on the screen.
As customer/user I want to easily delete my account/profile and assocciated account information, there is therefore a link to a delete page located in the dropdoen menu accessible for logged in users. Here the user is asked if the are sure they want to delete the account, if the click the delte button the account is deleted and a message is displaye informting them the account has been deleted, they are logged out and returne to the Home page.
Responsive on all device sizes
Interactive elements
The sites content and features are available to all user whether logged in or not. But only registered users can access their account and the information associated with it, such as for example their bookings.
Only registered staff members can access the Manage Time slot section which is a frond end extension of the back admin to make it easy to add or delete available time slots for services and dates.
Featured on all pages, the fully responsive navbar includes the logo which also works as a link back to the home page and a Make a Booking button that takes the user to the booking page.
Featured on all pages, the fully responsive dropdown navigation bar on left hand side includes links to Services (with its own dropdowns linking to sections treatments and prices & booking), cart, checkout, Sign-in, sign-out (when the user is signed in, Register (Account when the user is signed in), Delete Account (when signed in) – and for Staff a link to Manage Availability (admin) from the front end (only visible when a user is logged in and staff). It also includes a Home-link and a Facebook-link linking to the Spas FB-page.
The navbars are identical on every page to allow for easy navigation.
This section will allow the user (logged-in and non-authenticated) to easily navigate from page to page across all devices without having to revert to the previous page via the ‘back’ button.
The featured logo works as the link to the home/landing page.
*Expected: The Book now button is expected to take the user to the booking page/feature when the user clicks the link.
Clicking the logo is expected to take the user back to the home page.
Testing: Tested the button and logo by clicking them.
Result: The links link to the correct pages/endpoints when clicked. And the logo works as a link back to the home page.
Expected: The links are expected to take the user to the declared page/feature when the user clicks the link.
Testing: Tested the links by clicking them.
Result: The links home, register, cart, sign-in and FB-symbol takes the user correct pages/endpoints when clicked.
Checkout can only be accessed when there is something in the cart, otherwise the user will get a message telling them there is nothing in the cart.
Services displays a dropdown when clicked with links to the sections: treatments and prices & booking. When these links are clicked the page scrolls down to these sections on the home page – from any page.
Comment: It was noted it would be beneficial to users to have a booking link in the dropdown menu, so a link to the booking page was added.
Expected: The links are expected to take the user to the declared page/feature when the user clicks the link.
Testing: Tested the links by clicking them.
Result: The links takes the user correct pages/endpoints when clicked.
The section features cards with images and excerpts text for spa treatments, and each card can be clicked linking the user to a details page with more information about the treatment. The cards also feature a count of reviews left for each treatment.
Expected:
Testing:
Result:
An email signup powered by Mail Chimp appears when the user first enters the page. It provides the user with the opportunity to sign up for the Spas newsletter and recieve exclusive updtes and offers.
Expected:
Testing:
Result:
Expected: The links are expected to take the user to the declared destination when the user clicks the link.
Testing: Tested the links by clicking them.
Result: The links link to the correct pages/endpoints.
The top of the landing page features a hero image, the section below gives the users an overview of the Spa is about. All content is accessible for all users. The page is divided into sections which can be reached by scrolling down or using the links linking to specific sections. The first section acts as the landing “page” and features a hero image and the top navbar with the logo and Make a booking button is clearly visible.
The About section features a text about the spa and there is also a button that will take the user to a page where they can read more about the spa.
The section features cards with images and excerpts text for spa treatments, and each card can be clicked linking the user to a details page with more information about the treatment. The cards also feature a count of reviews left for each treatment.
Expected:
Testing:
Result:
The section features a list of spa services grouped into main headings: Massages, Facials, Pedicures & Spa Access (more to be added in the future). Under each heading the Spa treatments are listed as links so that users can click the link and read more about the treatment. The section also features a text about the spa and the treatments as well as Book Now button that will take the user to the booking page.
Expected:
Testing:
Result:
The details page features a text about the treatment, details about duration, price etc. as well as a book now button.
There is also a function to add a review for the treatment.
Expected:
Testing:
Result:
Form | Description | Expected | Testing | Result | Comment |
---|---|---|---|---|---|
Booking-form/function, App: booking, Template: book_spa_service.html | Lets the user book spa services. | The booking-form consists of a dropdown to choose a spa service, a dropdown to choose a date (The date is choose in a caledner where the the dates with available timeslots are in grey. Somtimes this highlights actual date in yellow - and the calender has to be clicked again for the available time slots to show!) – when this is done and the user clicks the show time slots button – time slots for that service and date are shown (both available and unavailable (marked)). The user can choose a time slot and click the add to cart button , for spa access there is also the possibility to choose quantity (this option is hidden when the user chooses any other spa service). But for the other spa services each service must be added individually, and the user can only add the same spa service for the same time and date once. When the user clicks the add to cart the service will be added and the user is redirected to the cart. |
A spa service was chosen, a date was chosen, the button show time slots was clicked. First one service was added to the cart, then another and finally a spa access was added to the cart. | the user was able to choose a spa service and date. For all services apart from spa access the quantity was hidden. The time slots were shown when the show time slot button was clicked. The user could choose a time slot and then add the service, date and time to the cart. | To improve UX the date picker was changed so that the calendar shows the dates that have time slots available. |
Description: The cart displays the services added in the booking. It lists the name of the service, the quantity added, the price and a separate remove button for each line item. It also shows the total cost of all services, as well as a button to clear the cart, a button to add another service and a button to move ahead to the checkout.
Expected: The cart is expected to show the service added in the booking function. The delete button is expected to delete the single line item when clicked. The clear cart button is expected to clear/empty the whole cart. The add another service button is expected to take the user back to the bookings page and the proceed to checkout button is expected to take the user ahead to the checkout page.
Testing: The cart was viewed after the service was added from the booking page. The buttons were clicked to test their function.
Result: The services added were visible. When the buttons were clicked, they performed the tasks described in expected. It was noted that a adding a shortcut to the cart in the booking page would improve UX. A link directly to the cart from the booking page was added.
Description: The checkout displays a booking summary, the total price for all services in the checkout. It also features a formed that needs to be filled in to complete the booking and payments. It features two buttons – update cart and book now.
Expected:
When the user fills in the form with name, email, phone number and clicks book after adding their card details – a booking confirmation message should be displayed on the page. An email should also be sent to the user’s email.
On the admin side a booking should be created in the spa bookings in the admin. The booking should contain all the details for the booking. When checking Stripe a there should be an event/record for the booking and its charge.
The update cart button should take the user back to the cart.
Testing:
The Checkout feature was tested by filling out the form and making a payment booking.
The updated cart button was clicked.
Result:
When the form is filled out and the book now button is clicked the booking and payment goes through and a confirmation message is displayed.
An email is also sent to the users email address and a booking containing all information appears in the admin (the process is a little slow and it would be good to add a spinner so the user know what is happening). An entry for the charge is also visible in Stripe.
The update cart button takes the user back to the cart when it is clicked.
Note!
The input field for card details was tested on a laptop, a large screen, iphone 10, Ipad and Iphone 8. it works well on all but one screen, the iphone 8 where there seems to be an issue with th input overlapping. I was unable to resolve this issue. but it works fine on all other screens.
Features visible to logged-out users:
Form | Description | Expected | Testing | Result | Fix |
---|---|---|---|---|---|
Register, Template: register.html |
Allows users to register as a user/member. The user is asked to submit their email, username, first and last name, phone number, date of birth (optional), city 8optional), and to choose a password and confirm it. | ||||
The form can be filled in and the sign-up button clicked. When the correct information is filled in the form is submitted. The user info. and details are saved to the database and the user is sent a conf. email with a functioning link to confirm the sign-up. The email and username need to be unique and trying to use the same email as another user will result in an error message. When the link in the conf. email is clicked the user is redirected to a page to confirm their email for sign-up, the are then redirected to the login page. If for some reason they don't receive the email, or the link has expired - they can request a new link either on the page they are redirected to if the link is expired or via the link on the sign-in page. If the email has already been conf. a message telling the user this is displayed on the screen. |
To solve the issue with the user getting access to a new conf. link a custom view, url and template was created. And a link to access the resend_email_conf. was added to the sign-in template as well as to the allauth verification template. The user receives a new link and can confirm their email. |
Registered/signed-up users can login. The page also contains a link to the sign-up form, and a link to issue a new confirmation email, as well as a link to reset their password.
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
SignIn, Template: login.html/allauth | The user the ability to signin with their email and password. | The user should be able to fill in their email and password to sign in and be redirected to the home page for logged in users. There is also an option to click remember me. The user should also be able to click the links to reset password, request a new email verification link and click the link to the sign-up page. Errors should be raised if incorrect information is filled in. |
The form was tested by filling in login info correctly and incorrectly and clicking the sign-in button. The links were clicked. (The endpoint features were tested separately.) |
When a registered user email and correct password is filled in, the sign-in button clicked the user is logged in and gains access the whole site (some features are restricted depending on auth. level). After signing-in users are directed to the home page. If incorrect info is filled in, or the user email doesn’t exist an error is raised alerting the user. |
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
Resend Verification, Form App: Core, Template: resend_verfication.html | Lets the user request a new verification link sent to their email. Note! New verifications can be sent more than once but straight after each other. It seems there is a limit on how many emails can be sent to the same email address with a certain time span. | When an email is filled in and the re-send verification button is clicked an email should be sent with a new link. A message letting them know the email has been sent should be shown. If the email exists but is already registered a message should be shown informing the user of this. If the email doesn’t exist in the database a message should be shown informing the user of this. | An incorrect and a correct email were entered and the re-send verification button clicked. | When an email existing in the database was entered an email with a new verification link was sent. When the link in the email was clicked the email was verified and the user asked to login. When an already verified email was entered a message was displayed informing the user. When an email that doesn’t exist in the database a message is displayed informing the user of this. |
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
Password Reset, Form App: AllAuth, Template: allauth/password reset | Lets the user reset their password. | When the user enters a registered password an email with a password reset link should be sent. When the link in the email is clicked, they should be redirected to the change password page. When a new password is entered (twice) and the change password button clicked the password should be reset, and the user redirected to a page informing them of the change. If a user enters a non-registered email an email is sent informing the user that their email isn’t in the database. In both cases the user should be directed to a page informing them an email was sent. | A registered and an unregistered email was entered and the reset my password button clicked. The link in the sent email was clicked and the change password form tested by providing a new password and clicking change password. The new password was tested by login in after the password change. | When a registered email is entered an email with reset link is sent and the user is directed to a page informing them of this. When the link is clicked it takes the user to the reset page, where the user can choose a new password and when they click “reset the password” ii is reset. When the user tries to login with their new password is logs them in. If the user enters an email not in the database, they are redirected to the page informing them an email has been sent. The email informs the user their email is not registered. |
Form | Description | Expected | Testing | Result | Fix |
---|---|---|---|---|---|
Account/My Profile, App: Accounts, Template: customer_profile.html | Gives the user the ability to change their details. The user can update their profile by changing and confirming first name, last name, phone number, date of birth and city. The form is pre-populated with existing details. When names or phone number is changed and submitted by clicking the button these are expected to be saved and the new info. should display in the form. The form is expected to render and show and pre-populate first and last name, phone number and if a date of birth and city have been added (which are both optional). First and last name as well as phone number should be required, and the form shouldn’t be able saved without these. |
The form was filled in correctly and with missing information and submitted by clicking update. If the first, last name or phone number is missing the user is asked to add these. If the fields are filled out correctly the profile is updated, a message lets the user know that it’s been updated, and the form displays the updated information. | The names and phone number wasn’t set as required so that was fixed. |
Function | Description | Expected | Testing | Result |
---|---|---|---|---|
Signout, Template: logout.html/Allauth | When the Signout link in the dropdown navbar is clicked it takes the user to the sign-out page. |
When the user clicks the sign-out button they should be signed out, a message should display informing them they’ve signed-out and redirected to the home page for non-logged in users. The page also includes a button that should take the user back to the home page if they’ve changed their mind and no longer want to logout. |
The buttons were clicked. | Clicking the link in the navbar takes the user to the sign-out page where they are given the option to sign-out. When the sign-out button is clicked the user is signed out, as message is displayed, and they are redirected to the home page for non-logged in users. The Back took the user back to the home page without logging out. |
Link visible in the Account dropdown menu when user is logged in. Registered users can change/update their email.
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
Change email, AllAuth, email.html | The user can add an email and therefore technically changing it. They can also mark an email as primary as well as removing it. Users can also request a reverification if their email isn’t verified. More than one email can be associated with an account. | When a user enters an email in the field and clicks add email it should be added to the account. A verification email should be sent. By clicking the verification link in the email the email should be verified. When the user clicks remove email, it should be removed from the account. When the user clicks the radio-buttons next to the email address and then clicks make primary the email should be marked as primary for the account. A resend verification mail should only be sent if the one of the emails for the account isn’t verified. | When a user enters an email and clicks add email it is added to the account. A verification email is sent to the added email. When the verification link in the email is clicked the email displays as verified. The user can choose an email with the radio-buttons and then click make primary and it is made the primary email for the account. If the user clicks re-send verification for an unverified email an email is sent (doesn’t happen for already verified email addresses). When a user chooses an email with the radio-buttons and clicks remove the email is removed from the account. |
Gives the user the ability to change their password. Registered users can change their password.
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
Change password, AllAuth, password_change.html | Form for changing user password and recovering password if forgotten. | When the user enters their current password and then chooses a new one, confirms it before clicking change password the password is reset. When the user clicks the link forgot password, they should be redirected to the password reset page to enter their email and receive an email with a reset link. When the reset link is clicked, the user should be directed to the page where they can choose and confirm a new password. After clicking the change password button, they should be re-directed to a page with a conf. message. |
The current password was filled in, a new one chosen, confirmed and change password clicked. The new password was tested by trying to login. The Forgot password button was clicked and a registered email provided. The link in the password reset email was clicked a new password chosen and confirmed on the change password page. The password was tested by trying to login with the new password. | The password is changed when the current password is provided a new one chosen and confirmed. Login with the new password is successful. Providing the user email and requesting a password reset sends a reset email to the user. When the reset link is clicked it takes the user to the reset password page. Entering a new password and confirming it resets the password. A message is displayed informing the user. Login in with the new password is successful. |
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
DeleteAccountForm, App: Accounts, delete_profile.html | Lets user delete their account and all associated information. |
When the link in the dropdown menu is clicked the user should be redirected to the delete account page. When thy check confirms account deletion and click delete account the account should be deleted, and they should be logged out and redirected to the home page. | The Delete Account link in the dropdown was clicked. The confirm delete checkbox was checked and the delete button clicked. The feature was also tested without checking the delete account confirm box. | The menu link takes the user to the delete profile page. When the user checks the checkbox and clicks delete the account is deleted and the user is signed-out and returned to the home page for logged out users. All user info and any profile information related to the user is deleted from the admin panel and the database. When the delete account confirm wasn’t checked the deletion isn’t possible – the user is then prompted to check the box if they want to continue. |
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
Manage Time slots, App: Services (admin), manage_time_slots.html | Lets staff users manage time slots from the frontend. |
When the link in the dropdown menu is clicked the user should be redirected to the Availability overview page. When they click the link for the service they are redirected to a page where the service should be pre-selected in the dropdown (they can select another service from the list if the whish). They should then be able to select a date and the possible time slots for that service should display. Time slot checked and blue are already set as available and time slots marked with grey are already booked. | The links were clicked, a service chosen on the manage time slot page. A date was then chosen, and a time slot was clicked/set unset to test the functionality. | When the links were clicked the user was taken to the correct pages. The correct service was displayed, and when a date was chosen the possible time slots were displayed. When a date was set or unset and then saved it was correctly displayed both in the front and backend. |
Form | Description | Expected | Testing | Result |
---|---|---|---|---|
Contact form, App: Home, contact.html | Page and form for sending a contact message to the Spa. Accessible for all users – logged in and logged out | When the users fill in their name, email, send a message should be sent to The Spas email. | The form was tested by filling out the required info. And clicking send | A message appears on the screen letting the user know the message has been sent and received by The Spa and that they will be in touch shortly. A message also appears in the Spas inbox |
assets_readme/images/contact_form_submission.png
Description: A back to top button that takes a user back to the top of the page. Located on the right-hand side at the bottom of the page. Becomes visible when the user starts scrolling down.
Expected: When the user is at the bottom of the page, they can use the button to get back to the top .
Testing: Tested by clicking the button when at the bottom of the page.
Result: When the page scrolls up taking the user back to the top of the page.
Expected: When a page is not found the custom 404 page should display.
Testing: Tested by entering a url that doesn't exist
Result: When knowingly entering a url that doesn't exist on the site it returns the custom url.
In env.py:
os.environ["DEVELOPMENT"] = "1" os.environ['DEBUG'] = '1'
In settings: DEBUG = os.getenv('DEBUG') == '1'
Explanation:
Quite alot of work has gone into trying to make the admin user friendly and creating a booking system taht works. Ther is still some work to be done on this and the loading times with regards to dates and timeslots are slow.
Availabilities: Handles availability for the spa services - and dates and timeslots. The user can choose a service and add dates and times for availability. It also shows which times slots are available and which are already booked. Reviews: Reviews are handled heere. Can be approved and deleted Service categories: The the Spa categories are handled here - added or delted. Spa Services: Spa services are handled here. Can be added, changed and deleted. All details regarding a service is also handled here as dration, price etc. Specific Dates: Dates are added here and then used in availabilites. Specific Times: General time slots are added here - and associated with a spa service. these are then used in availabilites.
The W3C Markup Validator and W3C CSS Validator Services were used to validate every page of the project to ensure there were no syntax errors in the project.
The project was deployed to GitHub Pages using the following steps...
By forking the GitHub Repository we make a copy of the original repository on our GitHub account to view and/or make changes without affecting the original repository by using the following steps...
git clone
, and then paste the URL you copied in Step 3.$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
> Cloning into `CI-Clone`...
> remote: Counting objects: 10, done.
> remote: Compressing objects: 100% (8/8), done.
> remove: Total 10 (delta 1), reused 10 (delta 1)
> Unpacking objects: 100% (10/10), done.
Click Here to retrieve pictures for some of the buttons and more detailed explanations of the above process.
Steps to follow for deployment to Heroku:
Go to Heroku, create account, if you don't have one, and log in.
Go to the dashboard and click New after which you click Create new app
Choose name and region. Click Create app
Go to Settings, under the "Config Vars" set your Key/Value Pairs.
You must then create a Config Var called PORT
. Set this to 8000
If you have credentials, you must create another Config Var called CREDS
and paste the JSON into the value field.
When you create the app, you will need to add two buildpacks from the Settings tab. The ordering is as follows:
heroku/python
heroku/nodejs
In the Buildpacks section, add buildpacks. Note order in which you add buildpacks: Python first and nodejs.
No go to Deployment. In deployment method click on "GitHub"(for repository)
The connect to GitHub, find your repository and click connect.
Under connect to GitHub-section, you can either chose automatic deploys with Enable Automatic Deploys or Manual Deploy, to deploy manually.
Now you can view the deployed app.
The Boutique Ado walthrough forms the base for this project and has been consulted extensively. I have also used the blog walkthrough. Django docs have also been used as well as Bootstrap documentation. Stackoverflow and other forums have been used exensively to find solutions ans suggestions. No code has been directly copied - but code has been adapted for this projects purpose.
Bootstrap5: Bootstrap Library used throughout the project mainly to make site responsive using the Bootstrap Grid System.
My Mentor for continuous helpful feedback.
Tutor support at Code Institute for their support and help.