Spiral Sounds
A full-stack vinyl store originally built during my developer training, later revisited and substantially improved with stronger authentication, inventory-aware business logic, transactional checkout, and persistent order management.

What I built
Spiral Sounds is a full-stack e-commerce vinyl store application originally developed as part of my Full Stack Developer learning path. After gaining more experience with backend architecture, database design, authentication, and production practices, I revisited the project to identify limitations in the original implementation and strengthen its reliability. The revised version introduces more robust authentication and session handling, inventory-aware cart and checkout logic, transactional order processing, persistent order history, stronger database integrity, centralized error handling, and improved frontend feedback for loading and failure states.
What I changed
Secure authentication and session handling
Inventory-aware shopping cart
Transactional checkout
Persistent orders and order history
Centralized error handling
See it in action



How it was built
Vanilla JavaScript storefront with client-side state, API integration, loading states, and user-facing error feedback.
Node.js and Express REST APIs organized with routes, controllers, middleware, and database access layers.
SQLite using sqlite3 and sqlite with foreign keys, integrity constraints, relational order data, and transactional checkout.
Express Session, bcryptjs, Validator, dotenv, HTTP-only cookies, authentication middleware, centralized error handling, and environment-aware session configuration.
Challenges & solutions
Strengthening inventory consistency by validating available stock when products are added to the cart and again during checkout, preventing purchases from exceeding current inventory.
Making checkout atomic by using a database transaction so order creation, order items, inventory updates, and cart cleanup either all succeed or roll back together.
Separating completed purchases from the active cart by introducing persistent order and order-item records while preserving the price paid at the time of checkout.
Centralizing error handling so expected application errors produce consistent API responses while unexpected server errors are handled without exposing internal implementation details.
Improving authentication and session handling through input validation, password hashing, authentication middleware, HTTP-only cookies, and environment-aware session configuration.
Revisiting Spiral Sounds gave me the opportunity to apply what I'd learned since the original implementation and turn a functional learning project into a more robust full-stack application.