π₯ A modern pizza ordering experience with a warm wood-fired visual identity.
Browse pizzas Β· Customize orders Β· Manage cart Β· Track orders Β· Control everything from Admin
PizzaShop is a modern pizza ordering web application designed around a dark, warm and energetic restaurant aesthetic.
The project combines a customer-facing pizza shop with an integrated admin dashboard. It includes authentication, menu browsing, pizza customization, cart management, ordering, profiles, events, about pages and content/product management.
The current version is intentionally frontend-only and uses the browser's localStorage as a lightweight local database, so it can be started without a separate backend or database server.
β‘ Goal: make the ordering experience feel fast, visual and delicious β before the pizza even reaches the oven.
| Feature | Status |
|---|---|
| π Responsive landing page | β |
| π Pizza menu | β |
| π·οΈ Category filtering | β |
| π Pizza size selection | β |
| ββ Quantity controls | β |
| π Persistent shopping cart | β |
| π Register / Login / Logout | β |
| π Password recovery demo flow | β |
| π€ User profile | β |
| π¦ Order creation | β |
| π Order status management | β |
| π Events page | β |
| βΉοΈ About Us page | β |
| π§βπΌ Admin dashboard | β |
| π Admin product CRUD | β |
| π₯ User management | β |
| π Order statistics | β |
| βοΈ Editable website content | β |
| β³ Branded pizza loading animation | β |
| π± Responsive UI | β |
| βΏ Reduced-motion support | β |
PizzaShop uses a wood-fired pizza visual direction:
- π Deep brown / near-black backgrounds
- π₯ Orange, amber and coral accents
- π Large food photography and pizza illustrations
- β¨ Soft glow and ember effects
- π§± Bento-style event cards
- πͺ Smooth hover and micro-interactions
- π Responsive layouts for desktop, tablet and mobile
Background β #160904 / deep brown
Surface β #241007
Primary β #FFB347
Accent β #FF4E50
Text β #FFFFFF
Muted text β warm neutral tones
The visual language is shared across the customer interface while the admin area uses a more functional dashboard-oriented treatment.
The landing page introduces the restaurant with:
- Hero section
- Pizza delivery message
- Cooking preview
- Primary order CTA
- Featured menu
- Popular pizza section
- Events
- About Us
- Footer navigation
Customers can:
- Browse pizzas
- Filter by category
- Choose pizza size
- Change quantity
- View ingredients
- See calculated prices
- Add products to cart
The cart provides:
- Product overview
- Quantity management
- Price calculation
- Delivery information
- Order summary
- Order creation
Includes:
- Login
- Registration
- Logout
- Password recovery flow
- OTP demo flow
- Protected routes
βΉοΈ Authentication is currently local/demo authentication. It is not intended as production-grade security.
Logged-in users can access their profile and personal order information.
The events section uses a visual bento layout for restaurant promotions and activities.
A branded restaurant story section with imagery and supporting content.
The project includes a dedicated admin area.
Displays high-level information such as:
- Products
- Orders
- Users
- Revenue
- Order activity
Admins can:
- Add products
- Edit products
- Delete products
- Set categories
- Set descriptions
- Manage ingredients
- Manage size/price options
- Preview product information
Orders can be viewed and their status can be changed.
Typical flow:
π Pending
β
β
Confirmed
β
π¨βπ³ Preparing
β
π Delivering
β
π Delivered
Cancelled orders can also be marked separately.
Admins can inspect registered users and manage the locally stored user list.
Selected website text/content can be edited from the admin panel and reflected on the customer-facing interface.
- βοΈ React 19
- π§ React Router 7
- π¨ Tailwind CSS 4
- β‘ Vite 7
- π§© React Icons
- ESLint
- Vite
- React Compiler tooling
- SVG assets
- WebP image assets
Browser
β
βββ localStorage
βββ users
βββ products
βββ orders
βββ cart
βββ site content
No external database is required for the current version.
Pizza-main/
β
βββ public/
β
βββ src/
β βββ assets/
β β βββ imgs/
β β βββ logos/
β β βββ pizza-loader.svg
β β
β βββ components/
β β βββ header/
β β βββ sections/
β β βββ shared/
β β
β βββ context/
β β βββ AuthContext.jsx
β β βββ CartContext.jsx
β β
β βββ layouts/
β β βββ MainLayout.jsx
β β βββ Navbar.jsx
β β βββ Footer.jsx
β β βββ admin/
β β
β βββ lib/
β β βββ localDb.js
β β
β βββ pages/
β β βββ Home.jsx
β β βββ Menu.jsx
β β βββ Cart.jsx
β β βββ Auth.jsx
β β βββ Profile.jsx
β β βββ Events.jsx
β β βββ AboutUs.jsx
β β βββ admin/
β β
β βββ App.jsx
β βββ main.jsx
β βββ index.css
β
βββ index.html
βββ package.json
βββ vite.config.js
βββ README.md
git clone YOUR_REPOSITORY_URL
cd Pizza-mainnpm installnpm run devOpen:
http://localhost:5173
Create a production build:
npm run buildPreview the production build locally:
npm run previewLint the project:
npm run lintThe current project contains a seeded local admin account.
Login: admin
Password: admin123
Admin login:
/admin/login
β οΈ This account is intended for local/demo use. Change or replace it before deploying a real production application.
This version is not a production authentication system.
Because the project stores data in localStorage:
- passwords are not suitable for real-world secure storage;
- authentication can be manipulated from the browser;
- users/orders/products are local to the current browser;
- there is no real server-side authorization;
- there is no real payment gateway;
- there is no real SMS/Telegram OTP provider.
For production, the recommended architecture is:
React / Vite
β
βΌ
REST API / Backend
β
βββ PostgreSQL / MySQL
βββ Secure password hashing
βββ JWT / Session auth
βββ Role-based authorization
βββ Real OTP provider
βββ Payment provider
- Landing page
- Menu
- Events
- About
- Authentication UI
- Cart
- Profile
- Admin UI
- Loading animation
- Responsive design
- Node.js / Express API
- PostgreSQL database
- Secure authentication
- Server-side authorization
- Real order API
- Product API
- User API
- Delivery zones
- Address selection
- Delivery fee calculation
- Promo codes
- Favorites
- Reviews
- Restaurant table reservation
- Kitchen order display
- Real-time order status
- Online payment
- Payment confirmation
- Payment history
- Refund flow
Customer
β
βΌ
Browse Menu
β
βΌ
Choose Pizza
β
βββ Size
βββ Quantity
βββ Ingredients
β
βΌ
Add to Cart
β
βΌ
Checkout
β
βΌ
Create Order
β
βΌ
Admin
β
βββ Confirm
βββ Prepare
βββ Deliver
βββ Complete
β
βΌ
Customer receives order π
The application is separated into reusable layers:
Pages
β
Layouts
β
Components
β
Contexts
β
Local Database
β
localStorage
This makes it easier to replace the local storage layer with a real API later without rebuilding the entire UI from scratch.
PizzaShop includes several small UX details:
- β³ Branded loading screen
- πͺ Hover animations
- π§ Protected navigation
- π Persistent cart state
- π± Responsive breakpoints
- βΏ
prefers-reduced-motion - π Loading states for actions
β οΈ Error/empty states- π― Clear CTA hierarchy
Contributions are welcome.
git checkout -b feature/my-feature
git add .
git commit -m "feat: add my feature"
git push origin feature/my-featureThen open a Pull Request.
This project is currently provided as a personal/demo project.
If you plan to use it commercially, review and define an appropriate license for your repository before publishing it.
Azico / AzicoDev
Frontend developer focused on:
React β’ JavaScript β’ UI/UX β’ Web Development β’ Cybersecurity
π Built with React, caffeine & a dangerous amount of pizza. π
Made fresh. Served fast. Coded with love. β€οΈβπ₯