Headless online shop with Strapi and React
○ Archived
A headless CMS exercise: an e-commerce back end on Strapi (items, sellers, permissions) and a React TypeScript front end, delivered with documentation.
Context
This project is an exercise on headless CMSs: build the back end of a small shop with Strapi, then a front end that consumes its REST API. The deliverable also included full documentation.
The scope is deliberately small: users, items and the rules linking them.
Challenge
The main difficulty was permissions. A visitor can only browse the catalogue, while a logged-in user can create items and edit or delete only their own.
The project also had to be reproducible: anyone cloning the repository should be able to run it and get test data without manual setup in the admin panel.
Approach
I defined the User and Item models (price, stock, category enum, image, slug generated from the title, seller relation) and exposed REST routes with pagination, filters, search and sorting. On startup, a script sets the public and authenticated role permissions and creates sample users and items.
The front end is a React and TypeScript app on Vite, styled with Tailwind CSS, with authentication and protected routes. I wrote the documentation for both sides: data schema, consumed routes, project structure and installation guide.
(04) — Results
Key figures- 2
- repositories: back end and front end
- 2
- data models
- 2
- roles with distinct permissions
- 6
- commits
