patrickhladun / moodscape

0 stars 0 forks source link

Moodscape

Moodscape is an e-commerce platform designed to offer a curated collection of unique watercolor art, Irish abstract landscapes, floral art, macro photography, digital art, and pen plotter art. This project serves as my final submission for the Full Stack Developer Diploma at Code Institute, showcasing my skills in developing a comprehensive, user-friendly online store.

The platform caters to art enthusiasts who wish to beautify their spaces with exquisite artwork. Moodscape aims to provide a seamless shopping experience, allowing users to explore and purchase art pieces easily. The website not only features a variety of art styles but also focuses on ensuring that each piece is of high quality and uniquely crafted.

GitHub contributors GitHub last commit (branch) GitHub language count GitHub top language

Project Scope and Objectives

Project Scope

The scope of Moodscape is to develop a fully functional e-commerce platform that offers a diverse range of art forms. The project aims to showcase a variety of unique artworks and provide a seamless, user-friendly experience for art enthusiasts. The platform will support secure transactions and highlight the talents of the contributing artists.

Website Objectives

Key Components of the Website

By focusing on these objectives, Moodscape aims to provide a comprehensive and enjoyable online shopping experience for art lovers, while ensuring easy management and high-quality offerings from a single admin user.

User Experience

Audience Personas

Persona 1: Emily - Art Enthusiast

Demographics

Psychographics

Emily values aesthetics and is passionate about art and interior design. She enjoys discovering new artists and unique art pieces. Emily is driven by a desire to create a beautiful and personalized home environment. She values quality and originality in the art she purchases.

Behavioral Traits

Emily frequently visits art galleries and art fairs. She prefers online shopping for its convenience and the broader range of options. She regularly follows artists and art influencers on social media and reads art magazines.

Online Habits

Emily spends a lot of time on Instagram and Pinterest for art inspiration. She visits online art marketplaces and artist websites to browse and buy art. She subscribes to newsletters from art galleries and online stores.

How Moodscape Meets Emily's Needs

Moodscape provides Emily with a curated collection of unique and high-quality artworks. The user-friendly interface and detailed product pages make it easy for her to find and purchase art pieces that match her taste. The platform's focus on promoting talented artists aligns with her interest in discovering new art.

Persona 2: Michael - Gift Shopper

Demographics

Psychographics

Michael values thoughtful and meaningful gifts. He enjoys finding unique items that make special presents for his friends and family. Michael appreciates high-quality craftsmanship and likes to support independent creators.

Behavioral Traits

Michael shops online for most of his gifts due to the convenience and variety. He tends to look for products that come with good reviews and detailed descriptions. He appreciates sites that offer gift recommendations and easy return policies.

Online Habits

Michael frequently visits e-commerce sites and gift recommendation blogs. He uses social media platforms like Facebook and Twitter to look for gift ideas. He reads product reviews and relies on customer feedback before making purchases.

How Moodscape Meets Michael's Needs

Moodscape offers a wide range of unique and high-quality art pieces that make perfect gifts. The platform's advanced search and filter options help Michael find the right gift quickly. Detailed product descriptions and images ensure he knows exactly what he is buying, and the secure transaction process gives him peace of mind.

User Goals

Emily - Art Enthusiast

Michael - Gift Shopper

Five Planes of UX

1. Strategy Plane

2. Scope Plane

3. Structure Plane

4. Skeleton Plane

5. Surface Plane

Mockups and Wireframes

Creating mockups and wireframes was a crucial step in the design process for Moodscape. Utilizing Figma, I was able to streamline my workflow by keeping both wireframes and mockups in a single, convenient platform.

Wireframes

I started with wireframes to provide a clear and basic structure of the website's layout and navigation. This helped in planning the overall design and functionality without getting distracted by colors or images. Each page's wireframe laid out the essential elements, such as headers, footers, navigation menus, and content sections, ensuring a user-friendly interface.

Home ![Home Page Wireframe](./docs/wireframe-home.webp)
About ![About Page Wireframe](./docs/wireframe-about.webp)
Contact ![Contact Page Wireframe](./docs/wireframe-contact.webp)
Shop ![Shop Page Wireframe](./docs/wireframe-shop.webp)
Product ![Product Page Wireframe](./docs/wireframe-product.webp)
Admin Account ![Admin Account Page Wireframe](./docs/wireframe-admin-account.webp)
Admin Orders ![Admin Orders Page Wireframe](./docs/wireframe-admin-orders.webp)
Admin Order Update ![Admin Order Update Page Wireframe](./docs/wireframe-admin-order-update.webp)
Admin Products ![Admin Products Page Wireframe](./docs/wireframe-admin-products.webp)
Admin Product Update ![Admin Product Update Page Wireframe](./docs/wireframe-admin-product-update.webp)

Mockups

Once the wireframes were finalized, I moved on to creating high-fidelity mockups in Figma. These mockups brought the wireframes to life by incorporating the visual elements, including the logo, brand colors, typography, and images. The mockups allowed me to visualize the final look and feel of the website, ensuring that the design aligns with our brand identity and user experience goals.

Home ![Home](./docs/mockup-home.webp)
About ![About](./docs/mockup-about.webp)
Contact ![Contact](./docs/mockup-contact.webp)
Shop ![Shop](./docs/mockup-shop.webp)
Product ![Product](./docs/mockup-product.webp)

Account Pages

Account ![Admin Account](./docs/mockup-account.webp)
Account Orders ![Account Orders](./docs/mockup-account-orders.webp)
Account Reviews ![Account Reviews](./docs/mockup-account-reviews.webp)
Account Profile ![Account Profile](./docs/mockup-account-profile.webp)

Admin Pages

Account ![Admin Account](./docs/mockup-account.webp)

Database Design

For designing the database, I used dbdiagram.io to create an Entity-Relationship Diagram (ERD) for Moodscape. This tool allowed me to visualize the relationships between different entities, ensuring a well-structured and efficient database schema. The database is built using PostgreSQL and includes tables for users, accounts, addresses, products, images, categories, orders, order lines, payments, and reviews. Below is the ERD that illustrates the database design.

DB

Color Scheme

The color scheme for Moodscape has been carefully chosen to create a clean, modern, and visually appealing design. The primary colors used are white, various shades of gray, and an accent color blue that aligns with our brand identity.

Primary Colors

Accent Color

'brand': {
    '50': '#f1f8fa',
    '100': '#dbecf2',
    '200': '#bcd9e5',
    '300': '#8dbed3',
    '400': '#6ca6c1',
    '500': '#3c7e9e',
    '600': '#356785',
    '700': '#30566e',
    '800': '#2e485c',
    '900': '#2a3e4f',
    '950': '#182734',
}

Fonts

For this project, I have selected the Poppins font. Its clean and modern appearance enhances readability and complements the overall aesthetic of Moodscape.

Poppins

Logo Design

The logo for Moodscape is a simple yet elegant icon presenting a landscape within a hexagon shape. This design captures the essence of Moodscape brand, symbolizing the diverse and unique art forms. The logo incorporates brand color, blue, which conveys trust, tranquility, and creativity.

Logo

Images

Icons

Pages and Features

Front End Pages

User and Content Management Pages

Profile Management for Talent and Employers

Account Management

Django Administration

Technology used

Languages and Libraries

Version Control and Collaboration

Tooling

Design Tools

Testing and Validation

Other

Development and Deployment

Cloning the project

Environment Settings

Development

Staging and Production

Environment Variables Template

Local Development

Deployment on Heroku

Load Example Content

Load Fixtures Locally

Load Example Content for Staging Site

Manual testing

Website Header and Navigation

Responsive Design Tests

Google PageSpeed Insights Tests

HTML Validation and Accessibility Testing

Testing User Pages

CSS Validation

JavaScript Validation

Automated testing with Pytest

Running Pytest

To ensure the reliability and correctness of the backend code, we use pytest for automated testing. Follow these instructions to run the tests:

  1. Ensure pytest is Installed:

Make sure pytest is installed in your project environment. If it's not installed, you can install it using pip:

pip install pytest
  1. Run the tests
pytest -rP -v

Running Cypress Tests

To open Cypress in interactive mode:

npm run cy:open

To run Cypress tests headlessly:

npm run cy:run

Issues

User Stories

Bugs

Further Improvements

Credits

Articles and Videos:

Acknowledgments