Certificate in Full-Stack Software Development - Final Milestone project

Crafty

A full-stack e-commerce platform for handcrafted toys featuring product management, user accounts, reviews and Stripe-powered checkout.

Customer Journey

Crafty was designed with simplicity and accessibility in mind, providing a straightforward shopping experience focused on product discovery, secure purchasing and customer account management. The interface emphasizes clear navigation, responsive layouts and a seamless checkout flow to support users from browsing to order completion.

Crafty main products catalogue page
Homepage and Product Catalogue: The storefront provides a browsable catalogue of handcrafted products, supported by category filtering, sorting and responsive layouts. Product cards surface key information at a glance, helping customers quickly discover items relevant to their interests.
Crafty product detail view
Product Detail Page: Each product page combines detailed descriptions, category information, customer reviews and purchasing controls into a single view. Customers can review product details, adjust quantities and add items directly to their shopping basket.
Crafty Cart view
Shopping Basket & Cart Management: The basket provides a clear overview of selected products, quantities and order totals. Users can update quantities, remove items and review costs before proceeding to checkout.
Crafty checkout view
Secure Checkout Workflow: Orders are processed through Stripe integration, providing secure payment handling without storing payment details within the application. Customers can complete purchases through a familiar and trusted payment experience.
Crafty User History view
Customer Account and Order History: Registered users have access to a personal account area where they can manage profile information and review previous purchases. This provides transparency and allows customers to track their purchasing activity over time.

Key Features

01 / Product discovery and browsing

Customers can browse products through a responsive catalogue featuring category filtering and sorting options, making it easy to discover products that match their interests.

02 / Secure Purchasing Workflow

Products can be added to a shopping basket and purchased through Stripe integration, providing a secure checkout experience without exposing sensitive payment details to the application.

03 / Customer Accounts and Order History

Registered users can manage personal information and review previous purchases through a dedicated profile area, providing a complete customer account experience.

04 / Product Review and Community Feedback

Authenticated customers can leave reviews on purchased products, helping build trust and providing valuable feedback for future customers.

05 / Administrative Product Management

Crafty includes role-based administration tools that allow site owners to create, update and remove products through a dedicated management interface. This streamlines catalogue maintenance and enables the platform to function as a complete e-commerce solution rather than a static storefront.

Application Design

Crafty was designed around the complete customer purchasing journey, from product discovery through secure checkout and order management. The application combines customer-facing storefront functionality with administrative management tools required to operate and maintain an online store.

Authentication & Customer Accounts

User authentication is handled through Django's built-in authentication framework, providing registration, login, profile management and order history functionality. Customer accounts allow users to manage personal details and access previous purchases through a dedicated profile area.

Product & Catalogue Management

Product data is centrally managed through Django models and administrative interfaces. Site administrators can create, update and remove products while maintaining categories, product information and inventory listings through a structured management workflow.

Payment & Order Processing

Stripe integration provides secure payment processing while keeping sensitive payment information outside the application. Orders are validated, processed and persisted to the database, allowing customers to complete purchases through a familiar and trusted checkout experience.

Engineering Decisions & Tradeoffs

01 / Authentication is required for customer reviews

Customers must be authenticated before submitting product reviews. This ensures reviews can be associated with genuine customer accounts, reducing the likelihood of spam and improving the credibility of product feedback throughout the store.
Tradeoff: Additional friction in exchange for more trustworthy reviews and higher-quality community feedback.

02 / Stripe handles all payment processing

Rather than processing payment information directly, Crafty delegates payment handling to Stripe. This approach allows customers to complete purchases through a secure and familiar checkout experience while keeping sensitive payment information outside the application.
Tradeoff: Reliance on a third-party service in exchange for improved security, simplified compliance and reduced development complexity.

03 / Server-side validation is prioritized over client-side checks

While client-side validation improves usability, all critical checkout, account and product management operations are validated on the server before being persisted. This prevents users from bypassing business rules through browser manipulation.
Tradeoff: Additional backend logic in exchange for improved reliability and data integrity.

Future Development

01 / Advanced Product Search & Filtering

As the product catalogue grows, customers may find it increasingly difficult to locate specific products using basic category navigation alone. Additional search and filtering tools would improve product discovery and create a more efficient shopping experience. Potential Improvement: Introduce keyword search, multi-category filtering and sorting options based on popularity, price and customer ratings.

02 / Personalised Customer Experience

All customers currently receive the same storefront experience regardless of their browsing history or purchasing behaviour. While this keeps the application straightforward, it limits opportunities for personalised engagement. Potential Improvement: Add features such as recently viewed products, personalised recommendations and suggested products based on browsing and purchase history.

03 / Inventory & Stock Management

Product administration currently focuses on catalogue maintenance rather than inventory tracking. As the platform scales, monitoring stock levels would become increasingly important for managing product availability. Potential Improvement: Implement inventory tracking, low-stock notifications and automated availability updates to provide a more complete retail management workflow.