SquareUp is a comprehensive restaurant management system built with React.js (frontend) and Node.js with Express (backend). This system empowers restaurant owners to manage their businesses effectively, from menu configuration and order processing to online payments and customer engagement.
- Multi-Restaurant Management: Create and manage multiple restaurant locations from a single admin account.
- Business Configuration:
- Configure basic info (name, address, currency).
- Set opening hours and manage special closures (holidays).
- Menu Management:
- Categories: Organize your menu into logical sections.
- Items: Add detailed items with images, descriptions, and pricing.
- Modifiers: Create customization options (e.g., toppings, sizes).
- Discounts: Run promotional campaigns and automated discounts.
- Order Management:
- Real-time order dashboard for kitchen and staff.
- Order status tracking (Pending, Confirmed, Preparing, Ready, Delivered).
- New order notifications.
- Staff & Roles:
- Invite staff members via email.
- Granular role-based access control (Owner, Manager, Staff, etc.).
- Developer Tools:
- Fake orders for testing.
- User Management: View and manage all registered users and restaurants.
- Developer Tools:
- System health checks.
- Online Ordering:
- Modern, mobile-responsive storefront.
- Easy-to-use cart and checkout process.
- Guest checkout support (no login required).
- Secure Payments:
- Integrated Stripe payment processing.
- Support for credit cards and test modes.
- Order Tracking:
- Real-time updates on order progress.
- Review order history.
Please update the image URLs below with your actual screenshots.
Overview of business performance, sales stats, and quick actions.

Drag-and-drop interface to customize the restaurant's landing page.

Streamlined interface for staff to take orders and manage tables.

Interface for managing categories, items, modifiers, and discounts.
Interface for managing order & review
Interface for staff & role management

update infomation for restaurant

Interface for managing opening hours and special holidays

Online ordering page for customers.
Mobile reponsive
Real-time order status updates for customers.
Review order and item for customers.

- Framework: React 19, Vite
- Styling: Tailwind CSS 4
- State Management: Zustand
- Database/Auth: Firebase SDK
- Runtime: Node.js
- Framework: Express 5
- Database/Auth: Firebase Admin SDK
- Payments: Stripe
This project is divided into two main parts:
Please refer to the README.md files in each directory for detailed documentation, installation instructions, and directory structure specific to that part of the application.
- Node.js (v16+)
- npm or yarn
- Firebase Account
- Stripe Account
-
Clone the repository:
git clone <repository-url> cd squareup
-
Setup Client: Follow the instructions in Client/README.md.
-
Setup Server: Follow the instructions in server/README.md.
When testing payment in test mode, use these card numbers. They won't be charged.
| Card Number | Type | Description |
|---|---|---|
4242 4242 4242 4242 |
β Success | Basic successful payment (most common) |
5555 5555 5555 4444 |
β Success | Mastercard successful payment |
4000 0027 6000 3184 |
π 3D Secure | Requires authentication (succeeds) |
4000 0000 0000 0002 |
β Decline | Generic card decline |
4000 0000 0000 9995 |
β Decline | Insufficient funds |
For all test cards:
- Expiry: Any future date (e.g.,
12/34) - CVC: Any 3 digits (e.g.,
123) - ZIP: Any valid format (e.g.,
12345)
More test cards: Stripe Testing Docs
This project is licensed under the ISC License.
If you have any questions or need support, please create an issue on GitHub or contact the maintainer directly.