
Template details
Pizza Time
Pizza Time: a full-stack food ordering platform for the gastronomy industry using React, Express.js, and Turso (libSQL).
About this template
Pizza Time is a full-stack food ordering platform template for the gastronomy industry, built with React, Express.js, and Turso (libSQL), that demonstrates a complete restaurant ordering flow from menu browsing to authenticated checkout.
What is Pizza Time?
Pizza Time is an open-source web application template that simulates a fictional restaurant offering pizzas, sushi, and pasta. It takes user interactions like browsing menu items, adding them to a cart, and registering an account, and produces a responsive ordering experience backed by an Express.js API and a Turso (libSQL) database. The project was designed and built by developer catherineisonline as a portfolio piece to practice full-stack development, and is available on GitHub under the MIT License with a live demo deployed on Vercel.
Key Features
- Dynamic UI with Framer Motion — smooth page transitions and animations powered by Framer Motion, with navigation handled by React Router.
- Paginated and lazy-loaded menu — React Paginate splits menu items into pages and React Lazy Load defers image loading for faster browsing.
- Full cart and auth system — Express.js backend provides user registration/login with bcrypt-hashed passwords, JWT-based sessions, profile updates, and a cart that works without requiring login.
- reCAPTCHA-protected forms — registration and contact forms are guarded with Google reCAPTCHA using the react-google-recaptcha package.
- Turso (libSQL) database — menu and user data are stored in Turso, a SQLite-compatible database, accessed via the @libsql/client package with UUIDs for record identification.
- Leaflet Maps integration — React Leaflet displays an embedded map, free to use without a credit card for small projects.
- Environment-based configuration — API routes and secrets are configured through .env files, with separate variables for the Vite frontend and Express backend.
Who is it for?
- Junior frontend developers — a complete example of a real-world React project with a feature-based folder structure, included to study how routing, state, and backend calls fit together.
- Full-stack learners — shows how to pair a React/Vite frontend with an Express API, JWT authentication, and an external SQL database, with a documented setup process.
- Portfolio builders — the author explicitly encourages forking the project and adapting it for personal portfolios under the MIT License, with the caveat to understand the code before claiming it.
What can you do with Pizza Time?
- Demo a food ordering flow — browse a categorized menu, search for dishes, add items to the cart with quantities, add special requests, and see a running total.
- Practice full-stack authentication — study how bcrypt password hashing, JWT sessions, and reCAPTCHA verification are wired into an Express server.
- Create a restaurant website — replace the sample data with your own pizzas, sushi, pastas, and contact details to launch a branded ordering site.
How does Pizza Time work?
To run the project, clone the repository, install dependencies with pnpm install, and set up two .env files — one in the backend folder for TURSO_DB_URL, TURSO_DB_TOKEN, JWT_SECRET, JWT_EXPIRES_IN, and CAPTCHA_SECRET, and one in the src folder for VITE_* API routes and the CAPTCHA key. The frontend runs on a Vite dev server and the Express backend can be hosted locally or deployed to Vercel; the project notes that the backend may be shared with other projects and includes an unused shortener route.
FAQ
Is Pizza Time free to use?
Yes, the project is released under the MIT License, so you are free to use, modify, and distribute it for your own purposes. The author does not accept pull requests but welcomes suggestions in GitHub discussions.
What database does Pizza Time require?
The template uses Turso, a libSQL/SQLite-compatible database, and the setup requires a Turso database URL and token. However, the README notes that any SQL database can be adapted by changing the connection configuration in the backend folder.
What environment variables are needed?
For the backend you need TURSO_DB_URL, TURSO_DB_TOKEN, JWT_SECRET, JWT_EXPIRES_IN (set to 1 day in the example), and CAPTCHA_SECRET. For the frontend you need VITE_USERS_URL, VITE_LOGIN_URL, VITE_AUTH_URL, VITE_LOGOUT_URL, VITE_UPDATE_URL, VITE_CAPTCHA_URL, and VITE_CAPTCHA_KEY.
Can I add items to the cart before logging in?
Yes, the user story explicitly states that users can add items to the cart even when they are not logged in or registered. Authentication is only required for user-specific features like profiles and payments.
















