Explore the universe with AstroShop, the ultimate e-commerce destination for all your astronomical needs. From high-quality telescopes and astrophotography equipment to star charts and celestial decor, we have everything to fuel your passion for the stars. Whether you're an amateur stargazer or a seasoned astronomer, AstroShop brings the cosmos closer to home with premium products, expert advice, and a seamless shopping experience. đâ¨
"Unlock the wonders of the universeâshop AstroShop today!"
A live version of the project can be accessed here: AstroShop
- Astro Shop
- E-commerce Applications for Astro Shop
- UX & Agile
- Development Tools
- CSS Management for Project Structure
- Colors
- Fonts
- Icons
- Technologies Used
- Ecommerce
- Testing
- Deployment
- License
- Credits
An E-commerce app, like Astro Shop, is specifically designed to facilitate commercial and business transactions by enabling the online transfer of information and payments.
-
Would a site for an astronomy shop selling telescopes and accessories be considered E-commerce?
Yes, as customers purchase items directly online, and payments are processed digitally. -
What about a site offering online consultations for setting up telescopes?
Yes, if customers pay for the consultation online, it would be considered E-commerce. -
What about a site providing free stargazing guides and star charts? Is this E-commerce?
No, if thereâs no payment involved, it is not E-commerce. However, selling downloadable premium guides would be considered E-commerce. -
What about a local astronomy club website accepting donations through PayPal? Would this be E-commerce?
No, the primary purpose of the website is to collect donations, not to conduct commercial transactions.
-
- Customers buying telescopes, astrophotography gear, or astronomy books for personal use.
- Impulsive purchases: Make checkout easy to encourage spur-of-the-moment purchases (e.g., limited-time offers on star maps).
- Customers typically donât need to justify their purchases.
-
- Astronomy clubs, schools, or research institutions purchasing multiple items like telescopes or bulk astronomy kits.
- Rational purchasing: These buyers take more time to evaluate options and compare products. Providing detailed product specs and comparisons can help them decide.
- As for the purpose of the webshop, it should be noted that significantly larger purchases are better handled by contacting the store manager of Astro Shop to ensure even better sales conditions.
Astro Shop offers three types of deliverables: products, digital products, and services.
-
Examples include telescopes, astronomy kits, star trackers, or space-themed apparel.
To deliver these products, Astro Shop needs:- Database features:
- Product details (name, description, price). (must haves)
- Stock numbers and low-stock notifications. (should haves)
- Shipping or delivery costs. (should haves)
- Product reviews and ratings. (should haves)
- Database features:
-
Examples include high-resolution space photos, star charts, and downloadable e-books.
- Database features:
- Product details (name, description, price). (must haves)
- Search and filter options. (must haves)
- Storing digital products securely. (must haves)
- Immediate product access after payment. (must haves)
- Database features:
-
Examples include virtual telescope setup assistance, online astrophotography workshops, or stargazing event planning.
- Database features:
- Service details (title, description, price). (must haves)
- Terms of service and liability disclaimers. (must haves)
- Navigation and customer testimonials for credibility. (should haves)
- Database features:
Astro Shop can offer two payment models:
-
(B2C Business Model) Suitable for one-time purchases like telescopes, astronomy kits, or digital downloads.
- The goal of this webshop is to focus on B2C Business Model.
-
(B2B Business Model)
- Monthly or yearly subscriptions for exclusive services, like access to a premium stargazing guide, online courses, or regular delivery of star charts and space-themed merchandise.
- Ideal for products or services requiring regular use or updates.
- The complete User Experience and Agile methology are explained to this link here.
- Bootstrap: Bootstrap is a popular front-end development framework that helps developers create responsive, mobile-first websites quickly and efficiently. It provides a collection of pre-designed HTML, CSS, and JavaScript components like buttons, forms, navigation bars, and grid layouts. By using Bootstrap, developers can build modern, visually consistent web pages without writing extensive custom code. It's widely appreciated for its ease of use, customization options, and ability to adapt to various screen sizes, making it a go-to tool for fast web development.
- Modular Design: Modular design is a system design approach that divides a system into independent, interchangeable modules. Each module performs a specific function, enabling flexibility, easy maintenance, scalability, and reusability.
- Consistent Aesthetic: To maintaining a unified and cohesive visual style across all elements of a design. This includes consistent use of colors, fonts, shapes, and layout, ensuring that all components appear harmonious. It enhances user experience by creating familiarity and brand identity, making designs more professional and visually appealing.
In my project, I decided to use a single CSS file, base.css, to manage all the styling across the application. These variables are defined within base.css, and ensuring they work correctly is crucial for applying themes consistently across the site.
By consolidating all the styles into one file, I make managing themes straightforward. If I need to switch themes or make adjustments, I only need to modify this single CSS file, which allows for a seamless transition to a new look and feel across the entire application. This approach not only simplifies maintenance but also reinforces my focus on code reuse and consistency.
Additionally, having a single CSS file helps me avoid complications related to injecting styles through Bootstrap, ensuring that the CSS variables function as intended throughout the application.
-
Account Management:
Includes options like:- "My Profile"
- "My Orders"
- "Login/Register" (depending on authentication status)
Admin users have additional options: - "Add Product"
- "View Orders"
- "Shipped/Unshipped Orders"
-
Shopping Cart:
A quick link to view cart contents. -
Store Branding:
Displays the store's name "ASTRO SHOP" prominently. -
Categories:
Links to product categories like:- Books
- Toys
- Telescopes
- Globes
- Binoculars
- Weather Stations
- Sale!
A link for "All Products" is also included.
- A large banner with:
- An image introducing the store.
- A welcoming message.
- Store hours:
Tuesday and Friday: 19:30â22:00
Wednesday: 14:00â16:00 - Appointment contact details: GSM 0999/99.55.99
- A prominent "SHOP NOW" button encouraging users to browse the product catalog.
- Displays images of four featured product brands:
- Baader
- Bresser
- Omegon
- TS-Optics
- A subscription form to sign up for the Astro Shop newsletter:
- Input field for email.
- A "Subscribe" button.
- Phone: 0499 99 11 99
- Email: [email protected]
- Links to pages like:
- "About"
- "Privacy Policy"
- "General Conditions"
- "Disclaimer"
- Quick links to:
- "Shopping Cart"
- "Login"
- "Register"
- Icons linking to:
- An external website.
- Built with:
- Bootstrap 5
- Font Awesome icons
- A custom stylesheet for branding.
- Fonts from Google Fonts (Lato).
- Displays a dark background with the page title "Product Details".
- Includes a short description beneath the title.
- Provides a dropdown for sorting products based on options like:
- Name (A-Z, Z-A)
- Price (low to high, high to low)
- The selected sorting option is visually highlighted with a border color change.
- Loops over
products
, displaying each product as a card. - If the product has a category, it displays a link to filter by that category.
- If the product is on sale:
- A "Sale" badge appears.
- The regular price is shown with a line-through, and the sale price is displayed.
- Displays a product image if available, otherwise shows a default "no image" placeholder.
- Responsive layout with dividers appearing at different screen widths.
- A floating button that scrolls the page back to the top when clicked.
- Scroll to Top Button:
- When the back-to-top button is clicked, the page scrolls to the top.
$('.btt-link').click(function (e) { window.scrollTo(0, 0); });
- Sorting Functionality:
- When the sorting dropdown is changed, the page reloads with the selected sorting options (
sort
anddirection
) applied as query parameters in the URL.$('#sort-selector').change(function () { var selector = $(this); var currentUrl = new URL(window.location); var selectedVal = selector.val(); if (selectedVal != "reset") { var sort = selectedVal.split("_")[0]; var direction = selectedVal.split("_")[1]; currentUrl.searchParams.set("sort", sort); currentUrl.searchParams.set("direction", direction); window.location.replace(currentUrl); } else { currentUrl.searchParams.delete("sort"); currentUrl.searchParams.delete("direction"); window.location.replace(currentUrl); } });
- When the sorting dropdown is changed, the page reloads with the selected sorting options (
-
Product Cards: Each product is wrapped inside a
.card
element, displaying:- A category tag (if applicable).
- Sale badge (if the product is on sale).
- Product image, with fallback if not available.
- Product name and price (with special styling for sale prices).
-
Responsive Layout: The product cards adjust based on screen size, using responsive classes (e.g.,
col-sm-6 col-md-6 col-lg-4 col-xl-3
).
- Sale Badge: A badge is added to products on sale to highlight them.
- Price Formatting: Regular price has a line-through style when the product is on sale, and the sale price is displayed in bold and black.
- Categories Filtering: Each product category is clickable, which could be used for filtering products by category.
The color palette for this project has been carefully selected to ensure a professional and clean aesthetic, aligning with the brand identity and enhancing user experience. Below is a breakdown of the primary colors used across the application:
As for colors I decided to use Color-Hunt. https://colorhunt.co
-
Primary Color:
#222831
- is a dark charcoal gray with subtle blue-green undertones, perfect for sleek and modern designs. -
Secondary Color:
#393E46
- (also atrribute color) s a dark plum or eggplant shade with a mix of deep purple and gray tones, ideal for rich and moody designs. -
Primary Color Highlight:
#222831
- is a vibrant teal with cool blue and green tones, evoking a fresh, modern, and energetic feel. -
Background Color:
#EEEEEE
- is a very light gray, almost white, offering a clean, soft, and neutral appearance. -
Accent Color:
#00ADB5
- is a vibrant teal with cool blue and green tones, evoking a fresh, modern, and energetic feel. -
Main Text Color:
#FFFFFF
- Tis pure white, the brightest and most neutral color, representing simplicity, cleanliness, and clarity. -
Secondary Text Color:
#000000
Is pure black, the darkest color, symbolizing elegance, power, and sophistication. -
Highlight Hover Color:
#FFC400
- is a bold, vibrant yellow-gold, exuding warmth, energy, and a sense of luxury. -
Dark Text Shadow:
2px 2px 4px rgba(0, 0, 0, 0.5)
- A bolder text shadow used on white backgrounds, ensuring that text stands out clearly.
The colour customization process in this project was designed to offer flexibility and personalisation. I have implemented a series of CSS Variables to define various colour palettes.
Key elements of the colour customization process include:
-
Multiple Colour Palettes: I have created several distinct colour palettes, each with its unique styleâranging from more traditional to modern and alternative designs. The default palette, known as the root palette, is the primary theme that all users see upon first visiting the site.
-
CSS Variables: The different colour palettes are implemented using CSS Variables, which allows for dynamic and flexible styling of various elements across the site. This ensures a consistent and responsive design while providing a personalised experience for each user.
I used a combination of classic and modern fonts to diversify myself, I've integrated Google Fonts to find a typeface that complements the website's aesthetic. For the main text, I've opted for Lato due to its classic appearance. Its make it easy to read long sentences.
To ensure accessibility and functionality across all devices and browsers, I included a fallback font stack. If Lato is unavailable, the design defaults to a generic sans-serif font, maintaining readability and visual appeal.
As for icons and officious reason Bootstrap Icons.
The wireframes for this project served as a crucial guide during the development process, essentially acting as a blueprint for the design and layout of the website. My focus was primarily on two key pages: the index (or homepage) and the product page shop. Given the repetitive nature of the products, I decided that it was a better idea to separate the homepage and the products pages. The homepage serves more as an introductory page, while the product page is a more introduction page for the webshop.
I chose to highlight only two wireframes in this README as they are the most critical to the overall user experience. Other pages did not require such detailed wireframing and followed more standard, basic templates.
All wireframes for the website were designed using the Balsamiq Desktop Application. These wireframes served as the foundation for planning the website's layout and user experience across different devices.
Below, you can find examples of how a typical page is structured on both desktop, tablet and mobile devices.
The favicon was created with Favicon.io.
- Python - Provides the functionality for the site.
- HTML5 - Provides the content and structure for the website.
- CSS3 - Provides the styling for the website.
- JavaScript - Provides interactive elements of the website
- Gitpod - Cloud based IDE
- Bootstrap - A CSS framework that helps building solid, responsive, mobile-first sites
- Django - A model-view-template framework used to create the Review | Alliance site
- Balsamiq - Used to create the wireframe.
- Pexels - Used for background image and animation video.
- Github - Used to host and edit the website.
- Eraser - Used to created the Database layout schema.
- Heroku - A cloud platform that the application is deployed to.
- Lighthouse - Used to test performance of site.
- Responsive Design Checker - Used for responsiveness check.
- Wave Web Accessibility Evaluation Tool - Used to validate the sites accessibility.
- Favicon - Used to create the favicon.
- Google Chrome DevTools - Used to debug and test responsiveness.
- ChatGPT AI tool for troubleshooting and repetitive tasks.
- HTML Validation - Used to validate HTML code
- CSS Validation - Used to validate CSS code
- PEP8 Validation - Used to validate code
- JSHint Validation - Used to validate JavaScript code
Libraries and modules
asgiref==3.8.1
ASGI (Asynchronous Server Gateway Interface) reference implementation. It provides utilities for building and maintaining asynchronous web applications in Python. This module is particularly useful for handling asynchronous protocols such as WebSockets and HTTP/2.
boto3==1.35.45
is the AWS SDK for Python, enabling Python apps to manage and automate AWS resources like S3, EC2, and Lambda. It provides updated APIs for seamless integration with AWS services.
botocore==1.35.45
is a core library for AWS SDK in Python, providing low-level access to AWS APIs. It underlies boto3
, handling service requests, authentication, and responses for seamless AWS interactions.
cart==1.2.2
A cart module in Django is used to manage shopping cart functionality in e-commerce applications. It typically involves:
Models: To store cart items (e.g., Cart and CartItem models). Views: To handle adding, updating, and removing items from the cart. Templates: To display the cart to users, showing item details, quantities, and totals. Sessions: Often used to track the cart for anonymous users. Utilities: For calculating totals, taxes, and discounts. The cart module integrates seamlessly with other modules like orders and payments for a complete checkout process.
chardet==5.2.0
is a Python package used for detecting the character encoding of text. It's commonly used in web scraping, file parsing, and other situations where text encoding needs to be determined dynamically.
cloudinary==5.2.0
is a cloud-based service that provides tools for managing, optimizing, and delivering media (images, videos, and other assets) for websites and applications. It is commonly used in Django and other web frameworks to handle media storage and delivery efficiently.
dj-database-url==0.5.0
A utility for Django that allows database configuration from a URL string. This is particularly useful for deploying applications on platforms like Heroku, where database URLs are often provided in the environment variables.
django==4.2
The latest version of the Django web framework, which is a high-level Python framework that encourages rapid development and clean, pragmatic design. Django is known for its scalability and its robust features like ORM, admin interface, authentication, and security features.
django-paypal==2.1
Is a Django app that integrates PayPal payment processing into Django projects. It supports both PayPal Payments Standard and PayPal Payments Pro, making it easy to add PayPal payment options to e-commerce sites built with Django.
django-storages==1.14.4
Is a Django library providing integration with various cloud storage backends like Amazon S3, Google Cloud Storage, and Azure Storage. It simplifies managing static and media files in the cloud for Django applications, with customizable settings for each storage option.
gunicorn==20.1.0
A Python WSGI HTTP server for UNIX that serves web applications in a production environment. Gunicorn is lightweight and designed to handle many concurrent requests, making it a popular choice for deploying Django applications.
jmespath==1.0.1
Is a Python library for JSON data querying. It enables searching, filtering, and extracting specific data from JSON documents using JMESPath syntax, which is useful for handling and manipulating JSON responses, especially in applications interacting with APIs.
pillow==10.4.0
Is a Python Imaging Library (PIL) fork that adds image processing capabilities, including opening, manipulating, and saving many image formats like JPEG, PNG, and GIF. Itâs commonly used in web development for tasks like resizing, cropping, and enhancing images.
psycopg2==2.9.6
The most popular PostgreSQL database adapter for Python. Psycopg2 enables Python applications to connect to and interact with PostgreSQL databases, supporting advanced features like connection pooling and asynchronous operations.
pycryptodome==3.21.0
Is a Python library offering cryptographic functions, including encryption, decryption, hashing, and digital signatures. It supports algorithms like AES, RSA, and SHA, making it useful for securing data in applications requiring cryptography.
pytz==2024.2
Is a Python library providing accurate and up-to-date timezone definitions, essential for managing timezone conversions and handling daylight saving time changes in applications. It allows developers to work with timezone-aware datetime
objects.
s3transfer==0.10.3
Is a Python library that provides a high-level interface for transferring files to and from Amazon S3. It supports multipart uploads, automatic retries, and parallel transfers, enhancing the efficiency and reliability of file handling in applications that interact with S3.
setuptools==75.3.0
is a widely used Python library for building, packaging, and distributing Python projects. It provides tools to define a projectâs metadata, dependencies, and installation instructions. It is often used alongside pip and is essential for creating Python packages.
sqlparse==0.5.1
Is a non-validating SQL parser for Python. It provides tools for parsing, formatting, and analyzing SQL statements, making it useful for applications that require SQL code manipulation or analysis, such as ORM libraries or database administration tools.
whitenoise==5.3.0
A middleware for serving static files in a Django application. Whitenoise allows applications to serve static assets directly without needing a separate web server, simplifying deployment and reducing complexity.
In this project, I use AWS S3 Object Storage services to store product images directly in AWS.
You can create a free account for development purposes to integrate it into your project.
AWS S3 (Amazon Simple Storage Service) is a scalable, secure, and high-performance cloud storage solution provided by Amazon Web Services. It is designed for object storage, allowing users to store and retrieve data of any size and type, such as images, videos, documents, or backups.
- Scalability: Automatically scales to handle increasing or decreasing storage needs.
- Durability and Availability: Offers 99.9% durability and high availability across multiple geographic regions.
- Cost-Effective: Flexible pricing with options like S3 Standard for frequently accessed data, S3 Glacier for archival storage, and S3 Intelligent-Tiering for automated cost optimization.
- Security: Provides encryption, access control, and compliance features to protect data.
- Integration: Works seamlessly with other AWS services and supports APIs for custom integrations.
S3 is widely used for website hosting, data backups, content delivery, and big data analytics.
The setup can be quite comprehensive, so here is a guide to help you through it.
A newsletter subscription integration for example Facebook marketing allows businesses to reach their audience directly through Facebook's platform. By leveraging the newsletter, developers can create seamless subscription options, enabling users to sign up for newsletters while engaging with your brand on Facebook. This integration can streamline the process of collecting subscriber information, automating newsletter delivery, and managing subscriber data.
With the newsletter subscription API, the business can target their audience more effectively, ensuring newsletters are personalized and relevant to users' interests. Additionally, this integration helps track engagement metrics and optimize marketing efforts for better outreach and conversions.
- More information how to integrate the Gmail API can be found here
I chose to make life easier by using a free Bootstrap template from startbootstap.com. This theme is especially designed for eCommerce applications. It delivers the template file you can customize afterwords whit default ccs, js ,index page en asset folder for favicon. It's recommend to use a front-end bootstrap template, so that easier to start the project and dive in to core application of Django.
The database schema was created with eraser
I used a PostgreSQL provided by Code Institute as relational database.
- FieldTypes:
- AutoField: An integer field that automatically increments.
- CharField: A text field with a maximum length.
- EmailField: A CharField that checks if the value is a valid email address.
- DateTimeField: A field for storing date and time.
- DateField: A field for storing dates.
- TextField: A large text field.
- OneToOneField: A one-to-one relationship.
- ForeignKey: A many-to-one relationship.
- IntegerField: An integer field.
- DecimalField: A fixed-precision decimal number.
- URLField: A CharField for URLs.
- ResizedImageField: An image field with resizing options.
The Astro Shop ERD describes the relationships between various entities in an e-commerce application. Here's an overview:
User and PaymentOfPayPal:
- Each user can have multiple PayPal payment methods, represented in the
PaymentOfPayPal
table. Theuser_paypal
field inPaymentOfPayPal
links to the idid
of theUser
table (one-to-many relationship).
User and ShippingAddress
- Each user can have multiple shipping addresses. The
user
field in theShippingAddress
table refers to theid
of theUser
table (one-to-many relationship).
User and Order
- Each order is associated with a specific user. The
user
field in theOrder
table links to theid
of theUser
table (one-to-many relationship).
Order and OrderItem
- Each order can contain multiple items. The
order
field inOrderItem
refers to theid
of theOrder
table (one-to-many relationship).
Product and OrderItem
- Each order item represents a specific product. The
product
field inOrderItem
connects to the idid
of theProduct
table (many-to-one relationship).
User and OrderItem
- Each order item also tracks the user who purchased it. The
user
field inOrderItem
links to theid
of theUser
table (many-to-one relationship).
User and Profile
- Each user can have one profile. The
user
field in theProfile
table refers to theid
of theUser
table (one-to-one relationship).
Category and Product
- Each product belongs to one category
category
. The categorycategory
field in theProduct
table links to theid
of theCategory
table (many-to-one relationship).
Supplier and Product
- Each supplier provides one specific product. The
supplier_product
field in theSupplier
table refers to theid
of theProduct
table (one-to-one relationship).
Subscription
- Subscriptions track email addresses for newsletters or updates. No direct relationships with other tables are indicated in the diagram.
In summary, the Astro Shop ERD showcases how users, orders, products, categories, suppliers, and related entities interact within the system, with well-defined relationships to manage payments, profiles, and shipping.
note: The Subscriber Model has only one particlular function and that is to make a list for all user who to join the newsletter, they don't have to be active member of the astro shop website and is only used for marketing purposes.
- Git - Used for version control via the terminal.
- GitHub - Used as the remote repository to store and manage the project.
This application incorporates several key strategies to ensure a sustainable and successful e-commerce business. Below are the primary components that underline the model:
Effective SEO techniques have been integrated to improve the visibility and reach of the website. Key features include:
- Meta tags: Meta descriptions and keywords are dynamically added within Django templates to improve search engine rankings, using carefully researched long and short-form keywords identified through brainstorming, Google tools, and keyword analysis.
- Sitemap: A sitemap file is dynamically generated in Python and made available to search engines, allowing them to efficiently crawl and index the site's structure. The sitemap includes all products and other relevant pages. Click here to see sitemap.xml for AstroShop
- Robots.txt: A robots.txt file has been included to guide search engines on which parts of the site to crawl and index, optimizing the crawl budget.
Other optimizations include:
- Alt text for images: All product images include descriptive alt text, making the site more accessible and improving image search rankings.
- Mobile responsiveness: The site's design is fully responsive, catering to a growing audience of mobile users, which search engines favour.
- Optimized URLs: The application uses clean and descriptive URLs, which are user-friendly and beneficial for SEO.
To support the website, a Facebook Business Page has been created. This serves as an additional platform for brand visibility and user engagement.
- Why businesses use Facebook pages: Social media platforms, especially Facebook, allow businesses to connect directly with their audience, foster community, and share updates about products or promotions.
- Value to the company: A Facebook page increases the companyâs reach, drives traffic to the website, and creates a space for user-generated content, such as reviews and testimonials, which can further boost credibility.
The website features a newsletter signup option on homepage just above the footer, enabling users to subscribe by sharing their email addresses.
This approach offers several advantages:
- User retention: Regular newsletters keep the brand in the minds of customers, encouraging repeat visits and purchases.
- Targeted marketing: Collecting user data allows for more personalized and segmented marketing campaigns, increasing conversion rates.
- Announcements and promotions: Newsletters provide a direct channel for communicating new product launches, sales events, and exclusive discounts to loyal customers.
By combining these strategies, the e-commerce application creates a strong foundation for attracting, engaging, and retaining customers while maintaining scalability for future growth.
To further enhance the e-commerce business model and drive growth, the following strategies could be implemented in the future:
- Structured Data Markup: Adding schema.org markup to product pages to improve how information appears in search results, including rich snippets for reviews, prices, and availability.
- Voice Search Optimization: Tailoring content to accommodate the growing trend of voice search, using natural language and question-based keywords.
- Faster Page Load Times: Optimizing images, implementing lazy loading, and using Content Delivery Networks (CDNs) to enhance page speed, which is critical for SEO and user experience.
- Multi-platform Presence: Establishing a presence on platforms like Instagram and Pinterest, which are highly visual and align well with the astronomy enthusiasts market.
- Influencer Partnerships: Collaborating with influencers to promote products, increase brand credibility, and reach niche audiences.
- Social Commerce: Integrating product catalogs directly into social media platforms for seamless shopping experiences.
- Drip Campaigns: Creating automated email sequences to nurture leads, onboard new customers, and re-engage inactive users.
- Personalization: Using customer data to send tailored recommendations, offers, and content to improve engagement and conversions.
- Analytics Integration: Using email marketing analytics to measure the success of campaigns and refine strategies over time.
All pages have been passed through the W3C HTML Validator successfully save for a few minor issues which have been left 'as is' as attempts to correct them proved unsuccessful and lead to results which devalued the user experience. Specifically, these were:
I ensured that the HTML structure of Astro Shop adheres strictly to web standards. I utilized the W3C Validator to validate our HTML code, striving to minimize and eliminate all possible errors. There are many templates to consider but the main pages where is the focus of stite are the Homepage and the product page. After experimenting whit different container layout and fixing all the issues validation results showed zero errors.
The detail of these test can evaluate on this link.
The CSS of Astro Shop has been carefully crafted and validated to ensure it adheres to the highest standards. I utilized the W3C CSS Validator to check for any errors, and I'm pleased to report that our stylesheets passed with zero errors.
This thorough validation process ensures that the user interface is both visually appealing and fully compliant with modern web standards. We took particular care to validate our responsive design elements to ensure consistency across all devices.
Hereâs the validation result:
Ensuring accessibility is a key priority for Astro Shop. We've taken great care to make sure our platform is inclusive and usable by as many people as possible, regardless of their abilities or the devices they are using.
Throughout the development process, we adhered to the Web Content Accessibility Guidelines (WCAG) to guarantee that our site meets accessibility standards. This includes:
- Proper use of ARIA attributes: We have utilized ARIA attributes effectively to enhance the accessibility of dynamic content and interactive elements, ensuring screen readers can accurately convey the information to users.
- Keyboard Navigation: All interactive elements, including forms, buttons, and navigation links, are fully accessible via keyboard navigation, making the site usable without a mouse.
- Contrast Ratios: We carefully selected our color scheme to ensure sufficient contrast between text and background colors, making the content readable for users with visual impairments.
- Alt Text for Images: All images include descriptive
alt
attributes, providing context to users who rely on screen readers.
These efforts help ensure that our site is not only compliant with accessibility standards but also provides an inclusive user experience. We continue to monitor and improve the accessibility of astro-shop as we develop new features and enhancements.
I have conducted a thorough accessibility audit using the WAVE (Web Accessibility Evaluation Tool). There is a smooth transition between the header of the page and the rest of the main page.
On the products page.
Overall, the WAVE validation confirms that our website adheres to accessibility standards, with only a few minor contrast issues that have been carefully considered in the design process. While I will continue exploring potential solutions to these issues, I have prioritized maintaining a visually cohesive and intuitive theme for the site.
My Lighthouse validation results have been very promising, with high scores across most categories. One area where I noticed a slightly lower score is in SEO, and Iâm actively working on improvements to achieve even better results. Lighthouse has been instrumental in helping me organize my files and optimize for performance.
A specific recommendation from Lighthouse was to use the WebP format for images to improve load times. In response, I made sure that all images served through the browser are now in WebP format. However, I also understand that too much compression could negatively impact the user experience, especially on larger screens. So, I made a conscious decision to balance performance with visual quality. After gathering feedback from a diverse group of users, I confirmed that the image quality is well-received across various devices. As a result, I decided to maintain slightly larger image sizes to prioritize a smooth and visually appealing experience, even if it means sacrificing a little bit of performance.
Additionally, Lighthouse suggested reducing the CSS payload, which Iâm currently considering. One option Iâm exploring is breaking the main base.css file into smaller files tied to specific widgets. This would allow me to send only the necessary CSS for each page, potentially cutting down the overall size of the CSS file and improving load times.
While the desktop version scores are very high, the mobile version, although still passing, has some room for improvement. Iâm committed to refining these areas to ensure the best possible experience across all devices.
Although my project doesn't include an extensive amount of JavaScript, I can ensured that the code we do have is fully validated using JSHint. I'm pleased to report that my JavaScript code has passed the validation process with a 99% clean bill of healthâno errors whatsoever.
There is only one warning that issue has probably to do JSHint interpreter itself.
All Python files as well env.py and manage.py, have been passed through the Code Institute PEP8 Linter.
Click to view PEP8 Result
PEP8 CompliantDirectory | File | Check |
---|---|---|
root | manage.py | PASS |
shopper | settings.py | PASS |
shopper | urls.py | PASS |
payment | admin.py | PASS |
payment | apps.py | PASS |
payment | forms.py | PASS |
payment | models.py | PASS |
payment | urls.py | PASS |
payment | views.py | PASS |
shopcart | admin.py | PASS |
shopcart | apps.py | PASS |
shopcart | cart.py | PASS |
shopcart | context_processors.py | PASS |
shopcart | models.py | PASS |
shopcart | urls.py | PASS |
shopcart | views.py | PASS |
store | admin.py | PASS |
store | apps.py | PASS |
store | forms.py | PASS |
store | models.py | PASS |
store | urls.py | PASS |
store | views.py | PASS |
note: The # noqa comment is used to tell linters (like flake8) to ignore a specific line of code, typically to suppress warnings or errors that would otherwise appear.
The website has undergone thorough testing across a variety of devices, including desktop computers, tablets, and smartphones. We focused on ensuring that the responsiveness of the site is consistent and effective across all screen sizes, providing an optimal user experience regardless of the device used.
To achieve this, we employed media queries to adapt the layout for different screen sizes. This approach ensures that when the device's dimensions fall within specific ranges, certain elements will reposition themselves, maintaining readability and proper alignment.
For instance, on smaller screens, such as smartphones, we adjusted the distribution of content to ensure that all elements are easily accessible and clearly visible, avoiding any overlap or readability issues. The result is a fluid and intuitive experience across devices, meeting our goal of a responsive design that performs well on all tested platforms.
Manual Testing Result Report
Scenario | Action | Result | Check |
---|---|---|---|
Click the âSHOP NOWâ Button | Should navigate to Products page | Redirect to âProductâ page | PASS |
Fill in âSubscribe to our NewsletterâFill in Email after Submit | Should navigate to Check Email Page |
Redirect to âCheck your Emailâ page |
PASS |
Homepage â Header | |||
Click âSalesâ | Should navigate to âCategory/Salesâ | Redirect to âcategory/Salesâ page | PASS |
Click âBooksâ | Should navigate to âCategory/Booksâ | Redirect to âcategory/booksâ page | PASS |
Clcik âTelescopesâ | Should navigate to âCategory/Toysâ | Redirect to âcategory/toysâ page | PASS |
Clcik âGlobesâ | Should navigate to âCategory/Globesâ | Redirect to âcategory/globesâ page | PASS |
Click âBinocularsâ | Should navigate to âCategory/Binocularsâ | Redirect to âcategory/binocularsâ page | PASS |
Clcik âWeather Stationâ | Should navigate to âCategory/Weather Stationâ | Redirect to âcategory/weather stationsâ page | PASS |
Clcik âAll Productsâ | Should navigate to âCategory/All Productsâ | Redirect to âcategory/all Productsâ page | PASS |
Click âMy Accountâ | Should navigate to Account Menu as Super User | Show Menu | |
Click âMy Accountâ â My Profile | Should navigate to âUpdate User Profileâ | Redirect to âUpdate User Profileâ â page | Pass |
Click âMy Accountâ â My Update Shipping | Should navigate to âUpdate Ship Profleâ | Redirect to âUpdate Ship Profileâ â page | |
Click âMy Accountâ â My Payment | Should navigate to âUpdate Payment Profleâ | Redirect to âUpdate Payment Profileâ â page | PASS |
Click âMy Accountâ â User Account | Should navigate to âUser Accountâ | Redirect to âUser Accountâ Settings | PASS |
Click âMy Accountâ â Change Password | Should navigate to âUpdate Passwordâ | Redirect to âUpdate Passwordâ Page | PASS |
Click âMy Accountâ â Log Out | Should navigate to âHome Pageâ | Redirect to âHome Pageâ whit Message âYou have logged outâ | |
Click âMy Accountâ â Add new product | Should navigate to âAdd New Productâ | Redirect to âAdd a New Productâ | PASS |
Click âMy Accountâ â Supplier List | Should navigate to âSupplier Listâ | Redirect to âSuppliersâ Page | PASS |
Click âMy Accountâ â View Orders | Should navigate to âpayment Orders â | Redirect to âPayment Ordersâ Page | PASS |
Click âMy Accountâ â Shipped Orders | Should navigate to âShipping Dashboardâ | Redirect to âShipped Dashâ Page | PASS |
Click âMy Accountâ â Unshipped Orders | Should navigate to âUnshipping Dashboardâ | Redirect to âUnshipped Dashâ Page | PASS |
Click âMy Accountâ | Should navigate to Account Menu as Regular User | Show Menu | |
Click âMy Accountâ â My Profile | Should navigate to âUpdate User Profileâ | Redirect to âUpdate User Profileâ â page | PASS |
Click âMy Accountâ â My Update Shipping | Should navigate to âUpdate Ship Profleâ | Redirect to âUpdate Ship Profileâ â page | PASS |
Click âMy Accountâ â My Payment | Should navigate to âUpdate Payment Profleâ | Redirect to âUpdate Payment Profileâ â page | PASS |
Click âMy Accountâ â My Orders | Should navigate to âpayment Orders â | Redirect to âPayment Ordersâ Page | PASS |
Click âMy Accountâ â User Account | Should navigate to âUser Accountâ | Redirect to âUser Accountâ Settings | PASS |
Click âMy Accountâ â Change Password | Should navigate to âUpdate Passwordâ | Redirect to âUpdate Passwordâ Page | PASS |
Click âMy Accountâ â Log Out | Should navigate to âHome Pageâ | Redirect to âHome Pageâ whit Message âYou have logged outâ | PASS |
Click âShop Cart Itemsâ | Should navigate to âShopping Cartâ | Redirect to âShopCartâ Page | PASS |
Homepage â footer section | |||
Click âAboutâ | Should navigate to âAboutâ | Redirect to âAboutâ Page | PASS |
Click âGeneral Condintionsâ | Should navigate to âGeneral Conditionsâ | Redirect to âGeneral Conditions â Page | PASS |
Click âPrivacy Policyâ | Should navigate to âPrivacy Policyâ | Redirect to âPrivacy Policyâ Page | PASS |
Click âDisclaimerâ | Should navigate to âDisclaimerâ | Redirect to âDisclaimerâ Page | PASS |
Click âPaymentâ | Should navigate to âPaymentâ | Redirect to âPaymentâ Page | PASS |
Homepage â socails section | |||
clcik âtwitterâ | Should navigate to âTwitterâ | Redirect to âhttps://x.com/?lang=enâ Page | PASS |
clcik âInstagramâ | Should navigate to âInstagramâ | Redirect to âhttps://www.instagram.com/â Page | PASS |
clcik âfacebookâ | Should navigate to âFacebookâ | Redirect to âhttps://www.facebook.com/â Page | PASS |
click âGlobeâ | Should navigate to âCodeInstituteâ | Redirect to âhttps://codeinstitute.net/global/â Page | PASS |
Products Page â Template | |||
Click âAstro Shopâ Button | Should navigate to âHome Pageâ | Redirect to âHomepageâ | PASS |
Click âProductâ | Should navigate to product | Redirect to âproductâ page (product detail page) | PASS |
Navbar Buttons | |||
Click âAboutâ Button | Should navigate to âAboutâ | Redirect to âAboutâ Page | PASS |
Click âSearchâ Button | Should navigate to âSearchâ | Redirect to âSearchâ Page | PASS |
Click âMy Accountâ | Should navigate to Account Menu as Super User | Show Menu | PASS |
Click âMy Accountâ â My Profile | Should navigate to âUpdate User Profileâ | Redirect to âUpdate User Profileâ â page | PASS |
Click âMy Accountâ â My Update Shipping | Should navigate to âUpdate Ship Profleâ | Redirect to âUpdate Ship Profileâ â page | PASS |
Click âMy Accountâ â My Payment | Should navigate to âUpdate Payment Profleâ | Redirect to âUpdate Payment Profileâ â page | PASS |
Click âMy Accountâ â User Account | Should navigate to âUser Accountâ | Redirect to âUser Accountâ Settings | PASS |
Click âMy Accountâ â Change Password | Should navigate to âUpdate Passwordâ | Redirect to âUpdate Passwordâ Page | PASS |
Click âMy Accountâ â Log Out | Should navigate to âHome Pageâ | Redirect to âHome Pageâ whit Message âYou have logged outâ | PASS |
Click âMy Accountâ â Add new product | Should navigate to âAdd New Productâ | Redirect to âAdd a New Productâ | PASS |
Click âMy Accountâ â Supplier List | Should navigate to âSupplier Listâ | Redirect to âSuppliersâ Page | PASS |
Click âMy Accountâ â View Orders | Should navigate to âpayment Orders â | Redirect to âPayment Ordersâ Page | PASS |
Click âMy Accountâ â Shipped Orders | Should navigate to âShipping Dashboardâ | Redirect to âShipped Dashâ Page | PASS |
Click âMy Accountâ â Unshipped Orders | Should navigate to âUnshipping Dashboardâ | Redirect to âUnshipped Dashâ Page | PASS |
Click âMy Accountâ | Should navigate to Account Menu as Regular User | Show Menu | PASS |
Click âMy Accountâ â My Profile | Should navigate to âUpdate User Profileâ | Redirect to âUpdate User Profileâ â page | PASS |
Click âMy Accountâ â My Update Shipping | Should navigate to âUpdate Ship Profleâ | Redirect to âUpdate Ship Profileâ â page | PASS |
Click âMy Accountâ â My Payment | Should navigate to âUpdate Payment Profleâ | Redirect to âUpdate Payment Profileâ â page | PASS |
Click âMy Accountâ â My Orders | Should navigate to âpayment Orders â | Redirect to âPayment Ordersâ Page | PASS |
Click âMy Accountâ â User Account | Should navigate to âUser Accountâ | Redirect to âUser Accountâ Settings | PASS |
Click âMy Accountâ â Change Password | Should navigate to âUpdate Passwordâ | Redirect to âUpdate Passwordâ Page | PASS |
Click âMy Accountâ â Log Out | Should navigate to âHome Pageâ | Redirect to âHome Pageâ whit Message âYou have logged outâ | PASS |
Click âShop Cart Itemsâ | Should navigate to âShopping Cartâ | Redirect to âShopCartâ Page | PASS |
Click All Products | Should navigate to All Products Menu | Show Menu | PASS |
Click âBy Priceâ | Should navigate to Products page sort by price | Redirect to Products page sort by price (ascending) | PASS |
Click âBy Categoryâ | Should navigate to Products page sort by category | Redirect to Products page sort by category (category) | PASS |
Click âAll Productsâ | Should navigate to Products page | Redirect to Products page | PASS |
Click Product Category | Should navigate to Product Category menu | Show Menu | PASS |
Click âSaleâ | Should navigate to âSaleâ category | Redirect to âSaleâ page | PASS |
Click âBooksâ | Should navigate to âBooksâ category | Redirect to âBooksâ page (product page by Books) | PASS |
Click âToysâ | Should navigate to âToysâ category | Redirect to âToysâ page (product page by Toys) | PASS |
Click âTelescopesâ | Should navigate to âTelescopesâ category | Redirect to âTelescopesâ page (product page by Telescopes) | PASS |
Click âGlobesâ | Should navigate to âGlobesâ category | Redirect to âGlobesâ page (product page by Globes) | PASS |
Click âSpecialsâ | Should navigate to âSpecialsâ category | Redirect to âSpecialsâ page (product page by Specails) | PASS |
Click âWeather Stationsâ | Should navigate to âWeather Stationsâ category | Redirect to âWeather Stationsâ page (product page by Weather Stations) | PASS |
Click âAll Productsâ | Should navigate to products | Redirect to âProductsâ page | PASS |
Click âProductâ | Should navigate to product | Redirect to âproductâ page (product detail page) | PASS |
Product Details Page â logged in as regular user | |||
Navbar Buttons | see above â tests navbar â (regular user) | see above â tests navbar â (regular user) | PASS |
Click âAdd to Chartâ button | Should navigate to âProductâ + toast message succes | Stay on the Product page | PASS |
click âCategoryâ item | Should navigate to Category | Redirect to Products page sort by category (category) | PASS |
Click âQuantityâ selector | Should select to quantity | Set the amount of quantity | PASS |
Click âDelete Itemâ Button | Should delete Item | Toast Message âItem deleted from Shopping Cartâ | PASS |
Click âEdit Productâ | Should navigate to âProduct updateâ page | Redirect to Products Update page | PASS |
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to Products page | PASS |
Click âCheckoutâ | Should navigate to âCheck Outâ page | Redirect to Check out page | PASS |
Shopcart Page (summary) â logged in as superuser | |||
Navbar Buttons | see above â tests navbar | see above â tests navbar | PASS |
Click âAdd to Chartâ button | Should navigate to âProductâ + toast message succes | Stay on the Product page | PASS |
click âCategoryâ item | Should navigate to Category | Redirect to Products page sort by category (category) | PASS |
Click âQuantityâ selector | Should select to quantity | Set the amount of quantity | PASS |
Click âDelete Productâ | Should navigate to âDelete Product Confirmationâ | Redirect to Delete Product Confirm page | PASS |
Click âEdit Productâ | Should navigate to âProduct updateâ page | Redirect to Products Update page | PASS |
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to Products page | PASS |
Click âCheckoutâ | Should navigate to âCheck Outâ page | Redirect to Check out page | PASS |
Checkout Page | |||
Navbar Buttons | see above â tests navbar | see above â tests navbar | PASS |
Click âUpdate Chartâ | Should navigate to âShopcartâ Page | Redirect to âShopCartâ Page | PASS |
Click âMake Orderâ | Should navigate to âBilling Infoâ Page | Redirect to âBilling Infoâ Page | PASS |
Click âPayPalâ Button | Should navigate to âPayPal.comâ Page | Redirect to âPayPal.comâ Page | PASS |
Search Page | |||
Navbar Buttons | see above â tests navbar | see above â tests navbar | PASS |
Click âSearchâ | Should navigate to âSearchâPage (product found) | Redirect to âSearchâ Page (listed products found) | PASS |
Update User Profile â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âUpdate Profileâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Update Ship Profile â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âUpdate Profileâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Update User â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âUpdate Profileâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Update Password â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âUpdate Passwordâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Add New Product â template â as superuser | |||
Click âAdd Productâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âCancelâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Suppliers â template â as superuser | |||
click âAdd Supplierâ | Should navigate to âSupplier Addâpage | Redirect to âSupllier Addâ Page | PASS |
Click Nav link âSupplierâ | Should navigate to âSupplierâ index page | Redirect to âSuppliersâ index page | PASS |
View Orders â template â as superuser | |||
Click âMark as Shippedâ | Should navigate to âMark Shippedâ | Redirect to âShippedâ Page | PASS |
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âShipped Ordersâ | Should navigate to âShipping Dashboardâ | Redirect to âShipped Dashâ Page | PASS |
Click âDelete Orderâ | Should navigate to âDelete Orderâ | Redirect to âOrdersâ Page | PASS |
Shipped Items â template â as super user | |||
Click nav link âOrderâ | Should navigate to âOrderâ index page | Redirect to âOrderâ index page | PASS |
Click âMark UnShippedâ | Should navigate to âMark Unshippedâ | Redirect to âUnshipped Dashâ Page | PASS |
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âUnshipped Ordersâ | Should navigate to âUnshipping Dashboardâ | Redirect to âUnshipped Dashâ Page | PASS |
UnShipped Items â template â as super user | |||
Click nav link âOrderâ | Should navigate to âOrderâ index page | Redirect to âOrderâ index page | PASS |
Click âMark Shippedâ | Should navigate to âMark Shippedâ | Redirect to âShippedâ Page | PASS |
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Click âShipped Ordersâ | Should navigate to âShipping Dashboardâ | Redirect to âShipped Dashâ Page | PASS |
About â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Disclaimer â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
General conditions â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Privacy â template | |||
Click âBack To Productsâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
Login â template | |||
Click âLoginâ | Should navigate to âHomeâ page | Redirect to âindexâ homepage | PASS |
Register â template | |||
Click âRegisterâ | Should navigate to âUpdate User And Shipping Profileâ page | Redirect to âUpdate User And Shipping Profileâ homepage | PASS |
Update User And Shipping Profile â template | |||
Click âSave Changesâ | Should navigate to âProductsâ page | Redirect to âProductsâ page | PASS |
I have conducted extensive testing to ensure that the website is fully compatible across a range of web browsers. Specifically, the site has been tested on:
In each browser, the website performs smoothly, maintaining consistent functionality and appearance. We focused on ensuring that all features, from user registration to job application processes, operate seamlessly regardless of the browser used.
No significant issues were encountered during the tests, confirming that our site is accessible and reliable across these popular browsers. This ensures that users can interact with the platform without any unexpected disruptions, regardless of their preferred browser.
This site was deployed to and is currently hosted on the Heroku platform. The steps for deploying to Heroku, using PostgreSQL as the database host, are as follows:
- Create a list of requirements in the requirements.txt file by using the command pip3 freeze > requirements.txt
- Log in (or sign up) to Heroku
- Click on the New button and select Create new app
- Give it a unique name and choose the region Europe
- Click the Settings tab, go to the Config Vars section and click on the Reveal Config Vars button
- Add all variables from env.py to Config Vars of Heroku
- Click the Add button
- Click the Deploy tab, go to the Deployment method section, select GitHub and confirm this selection by clicking on the Connect to Github button
- Search for the repository name on github Astro Shop and click the Connect button
- Add in the setting.py the Heroku app URL into ALLOWED HOSTS
- Gather all static files of the project by using the command python3 manage.py collectstatic in the terminal
- Make sure that DEBUG=FALSE in settings.py
- Create a Procfile in the root directory and add web: gunicorn shopper.wsgi
- In Heroku enable the automatic deploy or manually deploy the code from the main branch
- Generate an env.py file in the root directory of the project
- Configure the environment variables within this file
- Create a virtual environment
- Install all required dependencies using pip install command into the .venv
- Add dependencies to the requirements.txt file using pip3 freeze > requirements.txt command
- Log in to GitHub.
- Navigate to the repository for this project by selecting Harmonica-Men/AstroShop
- Click at the top of the repository on the Fork button on the right side
- Log in to GitHub.
- Navigate to the repository for this project by selecting Harmonica-Men/AstroShop
- In the top-right corner, click on the green Code button
- Copy the HTTPS URL in the tab Local
- Go to the code editor of your choice and open the terminal
- Type
copy
andpaste
the URL you copied into your terminal - Press the enter key
- Navigate to Cloudinary
- Sign up or log in to account
- Go to the dashboard
- Click on Go to API Keys button
- Generate a new API Key
- Provide the API environment variable in format: CLOUDINARY_URL=cloudinary://<your_api_key>:<your_api_secret>@ds5rjhhxu in env.py and Config Vars
- Update settings.py
From codeinstitute every student can maintain up to eight databases to run there projects. Here is a step by step guide to install PostgreSQL from Code Institute to the cloud!
-
Navigate to PostgreSQL from Code Institute and input with your LMS account
- The link works only if you are a student of Code Institute
-
After you filled in your LMS account the PostgresSQL database manager will automatically generate a new database for you.
-
You now have a brand new PostgreSQL Code Institute database The link to this database and how to manage all your other databases will be sent to my email.
-
Note: These databases are limited in time and have a life time of operation of 18 months after the date of creation.
- Navigate to Gmail
- Sign up or log in to account
- Go to the settings and enable 2-step verification and IMAP
- Navigate to your Google account
- Search in search bar for App password
- Create new app password and copy this as variable in env.py and Config Vars
- Update settings.py
Astro Shop is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
You are free to:
-
Share: Copy and redistribute the material in any medium or format.
-
Adapt: Remix, transform, and build upon the material.
Under the following terms:
-
Attribution: You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
-
NonCommercial: You may not use the material for commercial purposes.
-
ShareAlike: If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
For more information about the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License, visit here.
- I would like to express my deepest gratitude to my excellent mentor Student Mentor, Daisy Mcgirr for her numerous tips and wonderful assistance during the creation of this project.
- Furthermore, I would like to thank Lino Bollansee. I greatly appreciate his frequent comments during the creation of my project.
- The Code Institute Boutique Ado project is a Django e-commerce site walkthrough. It features product management, a shopping cart, Stripe payment integration, user authentication, and responsive design, culminating in deployment to Heroku with PostgreSQL.
- John Elder's Django Wednesdays E-commerce is a tutorial series teaching how to build an e-commerce site using Django. It covers topics like setting up a project, creating product models, handling shopping carts, payment processing, and deploying the site, aimed at beginners.
- Hamburger menu The code for the Hamburger menu was retrieved and tweaked from this site.
- Chat-GPT For repetitive tasks.
This is for educational use only, TY