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.
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.