OverviewI built store.atelien, a full-stack e-commerce demo for my studies. It is a fictional design-focused store (inspired by a minimalist retail look) that lets people browse products, sign up and log in, manage a cart, apply discount codes, and complete checkout with shipping and totals. The goal was to show I can ship a realistic online shop end to end — not just static pages — while keeping the project clearly educational and non-commercial.
On the customer side, the flow goes from browsing the catalog to cart, optional login, checkout with shipping details, and an order confirmation backed by the database. I focused on a clear path through purchase steps and a separate admin dashboard where orders can be reviewed, statuses updated, and data exported when needed. The public UI is built with plain HTML, CSS, and JavaScript so the experience stays lightweight and easy to reason about without a heavy front-end framework.
I used Node.js and Express for the API, MySQL with mysql2 connection pooling for data, and vanilla JS in the public folder served as static assets. Authentication uses bcryptjs for passwords and jsonwebtoken with cookie-parser so protected actions (like checkout and discount validation) can rely on a secure, cookie-based session pattern. Routes are split by concern — products, auth, cart, checkout, discounts, admin, and logging — which keeps the server organized and mirrors how a larger app might be structured.
One tricky part was orders: line items and shipping are structured data, but I still wanted everything in one relational model. I solved that by persisting cart lines and shipping as JSON in MySQL and using SQL JSON functions where the admin views need names or summaries, instead of many extra tables for a student-scope project. I also wired environment-based configuration (for example database settings and secrets via dotenv) so local setup stays repeatable and credentials stay out of the code — important when I was the only developer touching every layer.