A full-stack e-commerce web app for selling ice cream, milkshakes, Belgian waffles, crΓͺpes, and frozen drinks
Katsefet is a full-stack e-commerce application for an ice cream and frozen desserts shop, built on the MERN stack (MongoDB, Express, React, Node.js). Customers can browse a rich product catalog β ice cream, milkshakes, bio/organic treats, frozen desserts, Belgian waffles, crΓͺpes, hot drinks, and iced coffee β add items to a shopping cart, and manage their order, while shop admins get a dedicated management panel to add, update, and delete products, including image uploads.
The project is built with a clear separation between the API server and the client, role-based access control (regular user vs. admin), and global state management powered by Redux.
- ποΈ Product Catalog β browse products by category (ice cream, shake, bio, frozen, Belgian waffle, crΓͺpe, hot drink, iced coffee) with a detailed single-product page
- π Shopping Cart (Bag) β add, update quantity, remove, and calculate total price, per user
- π Authentication & Authorization β secure register/login flows with JWT and bcrypt password hashing
- π Admin Manager Panel β admin-only product management: create, edit, delete, and upload product images (via Multer)
- π¦ State Management β global state (user roles, cart) handled with Redux
- π¨ Modern UI β responsive design built with PrimeReact and PrimeFlex
- π REST API β secure Express server with controlled CORS and role-protected routes
| Layer | Technologies |
|---|---|
| Frontend | React 19, React Router, Redux, PrimeReact, PrimeFlex, Axios |
| Backend | Node.js, Express 5, Mongoose (MongoDB) |
| Auth & Security | JSON Web Tokens (JWT), bcrypt, controlled CORS |
| File Uploads | Multer for product image uploads |
katsefet-project/
βββ CLIENT/
β βββ my-app/ # React application
β βββ src/
β βββ Components/
β β βββ products/ # catalog and single-product page
β β βββ manager/ # admin panel
β β βββ user/ # login and register
β β βββ cart.jsx # shopping cart
β β βββ header.jsx
β βββ store/ # Redux (actions + reducers)
β
βββ SERVER/ # Node.js / Express server
βββ Models/ # Mongoose schemas: User, Product, Bag
βββ controlers/ # business logic
βββ routes/ # API routes
βββ middleware/ # JWT auth and admin authorization
βββ config/ # DB connection and CORS settings
git clone https://github.com/Ester-Developer/katsefet-project.git
cd katsefet-projectcd SERVER
npm installCreate a .env file inside the SERVER folder with the following variables:
PORT=9000
mongoDB_URI=your_mongodb_connection_string
ACCESS_TOKEN_SECRET=your_jwt_secretRun the server in development mode:
npm run devcd ../CLIENT/my-app
npm install
npm startThe app runs at http://localhost:3000, while the server listens on port 9000 by default.
| Method | Endpoint | Description | Access |
|---|---|---|---|
POST |
/api/user/register |
Register a new user | Public |
POST |
/api/user/login |
Log in | Public |
GET |
/api/product |
Get all products | Public |
POST |
/api/product |
Create a new product | Admin |
PUT |
/api/product |
Update a product | Admin |
DELETE |
/api/product |
Delete a product | Admin |
GET |
/api/bag |
Get the shopping cart | Authenticated |
POST |
/api/bag |
Add a product to the cart | Authenticated |
PUT |
/api/bag |
Update a cart item | Authenticated |
DELETE |
/api/bag |
Remove a cart item | Authenticated |
POST |
/api/upload |
Upload a product image | Admin |
This project was built as a complete full-stack example for an online food/ice cream shop, and serves as a solid base for future extensions such as checkout and payments, inventory management, promotions and discounts, and sales reporting for shop admins.
Built with β€οΈ and π¦ by Ester-Developer