Skip to content

🌐 Public menu website for LocalStore Platform - Fast, mobile-first Next.js site for customer-facing restaurant menus. Powers {tenant}.lsp.menu domains with QR code support and Vietnamese formatting. Optimized for 4G on entry-level Android devices.

License

Notifications You must be signed in to change notification settings

localstore-platform/menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LocalStore Platform - Menu

🌐 Public menu website for LocalStore Platform - Fast, mobile-first Next.js site for customer-facing restaurant menus. Powers {tenant}.lsp.menu domains with QR code support and Vietnamese formatting. Optimized for 4G on entry-level Android devices.

Overview

This repository contains the public-facing menu application that Vietnamese small businesses use to display their restaurant menus to customers. Built with Next.js 14 and optimized for mobile devices, it provides a fast, accessible, and localized experience for viewing menus via QR codes or direct links.

Target Market: Vietnamese small businesses (restaurants, street food vendors, cafes)

Key Features:

  • πŸš€ Static site generation for optimal performance (<2s TTI on 4G)
  • πŸ“± Mobile-first design (360x640px minimum viewport)
  • πŸ‡»πŸ‡³ Vietnamese localization (vi-VN locale, VND currency formatting)
  • 🏷️ Multi-tenant architecture ({tenant}.lsp.menu)
  • πŸ“· QR code session support
  • ⚑ Lighthouse performance score > 90

Tech Stack

  • Framework: Next.js 14 (App Router, Static Export)
  • Language: TypeScript (strict mode)
  • Styling: Tailwind CSS 3
  • Deployment: Vercel
  • API: REST (public endpoints, no authentication)

Quick Start

Prerequisites

  • Node.js 18+ and npm 9+
  • Access to LocalStore Platform API (see .env.example)

Installation

# Clone the repository
git clone https://github.com/localstore-platform/menu.git
cd menu

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env.local

# Update .env.local with your API base URL
# NEXT_PUBLIC_API_BASE_URL=http://localhost:8080

# Run development server
npm run dev

Open http://localhost:3000 to view the application.

Development Commands

npm run dev          # Start development server
npm run build        # Build for production (static export)
npm run start        # Serve production build locally
npm run lint         # Run ESLint
npm run type-check   # Run TypeScript type checking

Project Structure

menu/
β”œβ”€β”€ app/                    # Next.js App Router
β”‚   β”œβ”€β”€ [tenant]/          # Tenant-specific routes
β”‚   β”œβ”€β”€ components/        # Shared components
β”‚   └── lib/              # Utilities and API clients
β”œβ”€β”€ public/               # Static assets
β”œβ”€β”€ docs/                 # Documentation
β”‚   └── SPEC_LINKS.md    # Specification references
β”œβ”€β”€ .github/             # GitHub configuration
β”‚   β”œβ”€β”€ CODEOWNERS
β”‚   β”œβ”€β”€ copilot-instructions.md
β”‚   └── ISSUE_TEMPLATE/
β”œβ”€β”€ next.config.js       # Next.js configuration
β”œβ”€β”€ tailwind.config.js   # Tailwind CSS configuration
└── tsconfig.json        # TypeScript configuration

Specifications

This repository follows a specification-driven development approach. All features and implementations must align with the specifications in the specs repository.

Important Specifications:

See docs/SPEC_LINKS.md for a complete list of relevant specifications.

Vietnamese Localization

Currency Formatting

Always use Vietnamese number formatting for prices:

const formatted = new Intl.NumberFormat('vi-VN', {
  style: 'currency',
  currency: 'VND',
  minimumFractionDigits: 0,
}).format(75000);
// Output: 75.000β‚«

Date and Time

  • Date format: DD/MM/YYYY
  • Time format: 24-hour (HH:mm)
  • Use vi-VN locale with Intl.DateTimeFormat

Language

All user-facing text must be in Vietnamese with proper diacritics.

Performance Requirements

Critical Metrics

  • First Contentful Paint: < 1.5s
  • Time to Interactive: < 2s on 4G
  • Lighthouse Performance: > 90
  • Bundle Size: < 200KB (gzipped)

Testing

Test on:

  • Entry-level Android devices (2020+)
  • Slow 4G connections (throttled)
  • Viewport: 360x640px minimum
  • Browsers: Chrome, Safari, Firefox

Contributing

  1. Check docs/SPEC_LINKS.md for relevant specifications
  2. Review the GitHub Copilot Instructions
  3. Follow the code style guidelines
  4. Ensure Vietnamese localization is correct
  5. Test on mobile devices and slow networks
  6. Submit a PR using the template

See CODEOWNERS for code review requirements.

Related Repositories

  • specs - Central specifications and documentation
  • api - Go backend service
  • admin - Admin dashboard for managing menus

License

GNU Affero General Public License v3.0 (AGPL-3.0)

This project is licensed under AGPL-3.0 to ensure that all modifications and network-accessible deployments remain open source and benefit the community.

Support

For questions, issues, or contributions:


Version: v1.1-specs | Last Updated: 2025-11-25

About

🌐 Public menu website for LocalStore Platform - Fast, mobile-first Next.js site for customer-facing restaurant menus. Powers {tenant}.lsp.menu domains with QR code support and Vietnamese formatting. Optimized for 4G on entry-level Android devices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •