{"id":35324240,"url":"https://github.com/localstore-platform/menu","last_synced_at":"2026-04-11T06:44:28.111Z","repository":{"id":326011842,"uuid":"1103381318","full_name":"localstore-platform/menu","owner":"localstore-platform","description":"🌐 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.","archived":false,"fork":false,"pushed_at":"2025-12-06T16:02:28.000Z","size":209,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-11T06:44:10.302Z","etag":null,"topics":["menu-website","mobile-first","nextjs","qr-code","react","restaurant-menu","static-site-generation","tailwind-css","vercel","vietnamese"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/localstore-platform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-24T19:50:34.000Z","updated_at":"2025-12-06T16:02:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/localstore-platform/menu","commit_stats":null,"previous_names":["localstore-platform/menu"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/localstore-platform/menu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/localstore-platform%2Fmenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/localstore-platform%2Fmenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/localstore-platform%2Fmenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/localstore-platform%2Fmenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/localstore-platform","download_url":"https://codeload.github.com/localstore-platform/menu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/localstore-platform%2Fmenu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31671629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"online","status_checked_at":"2026-04-11T02:00:05.776Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["menu-website","mobile-first","nextjs","qr-code","react","restaurant-menu","static-site-generation","tailwind-css","vercel","vietnamese"],"created_at":"2025-12-31T01:02:26.427Z","updated_at":"2026-04-11T06:44:28.098Z","avatar_url":"https://github.com/localstore-platform.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LocalStore Platform - Menu\n\n🌐 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.\n\n## Overview\n\nThis 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.\n\n**Target Market**: Vietnamese small businesses (restaurants, street food vendors, cafes)\n\n**Key Features**:\n\n- 🚀 Static site generation for optimal performance (\u003c2s TTI on 4G)\n- 📱 Mobile-first design (360x640px minimum viewport)\n- 🇻🇳 Vietnamese localization (vi-VN locale, VND currency formatting)\n- 🏷️ Multi-tenant architecture (`{tenant}.lsp.menu`)\n- 📷 QR code session support\n- ⚡ Lighthouse performance score \u003e 90\n\n## Tech Stack\n\n- **Framework**: Next.js 14 (App Router, Static Export)\n- **Language**: TypeScript (strict mode)\n- **Styling**: Tailwind CSS 3\n- **Deployment**: Vercel\n- **API**: REST (public endpoints, no authentication)\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 18+ and npm 9+\n- Access to LocalStore Platform API (see `.env.example`)\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/localstore-platform/menu.git\ncd menu\n\n# Install dependencies\nnpm install\n\n# Copy environment variables\ncp .env.example .env.local\n\n# Update .env.local with your API base URL\n# NEXT_PUBLIC_API_BASE_URL=http://localhost:8080\n\n# Run development server\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) to view the application.\n\n### Development Commands\n\n```bash\nnpm run dev          # Start development server\nnpm run build        # Build for production (static export)\nnpm run start        # Serve production build locally\nnpm run lint         # Run ESLint\nnpm run type-check   # Run TypeScript type checking\n```\n\n## Project Structure\n\n```markdown\nmenu/\n├── app/                    # Next.js App Router\n│   ├── [tenant]/          # Tenant-specific routes\n│   ├── components/        # Shared components\n│   └── lib/              # Utilities and API clients\n├── public/               # Static assets\n├── docs/                 # Documentation\n│   └── SPEC_LINKS.md    # Specification references\n├── .github/             # GitHub configuration\n│   ├── CODEOWNERS\n│   ├── copilot-instructions.md\n│   └── ISSUE_TEMPLATE/\n├── next.config.js       # Next.js configuration\n├── tailwind.config.js   # Tailwind CSS configuration\n└── tsconfig.json        # TypeScript configuration\n```\n\n## Specifications\n\nThis repository follows a specification-driven development approach. All features and implementations must align with the specifications in the [specs repository](https://github.com/localstore-platform/specs/tree/v1.1-specs).\n\n**Important Specifications**:\n\n- [API Specification](https://github.com/localstore-platform/specs/blob/v1.1-specs/architecture/api-specification.md) - Menu public endpoints\n- [Database Schema](https://github.com/localstore-platform/specs/blob/v1.1-specs/architecture/database-schema.md) - Menu items and categories\n- [Wireframes \u0026 UX Flow](https://github.com/localstore-platform/specs/blob/v1.1-specs/design/wireframes-ux-flow.md) - Customer menu views\n- [Vietnam Market Strategy](https://github.com/localstore-platform/specs/blob/v1.1-specs/research/vietnam-market-strategy.md) - Localization requirements\n\nSee [`docs/SPEC_LINKS.md`](docs/SPEC_LINKS.md) for a complete list of relevant specifications.\n\n## Vietnamese Localization\n\n### Currency Formatting\n\nAlways use Vietnamese number formatting for prices:\n\n```typescript\nconst formatted = new Intl.NumberFormat('vi-VN', {\n  style: 'currency',\n  currency: 'VND',\n  minimumFractionDigits: 0,\n}).format(75000);\n// Output: 75.000₫\n```\n\n### Date and Time\n\n- Date format: `DD/MM/YYYY`\n- Time format: 24-hour (`HH:mm`)\n- Use `vi-VN` locale with `Intl.DateTimeFormat`\n\n### Language\n\nAll user-facing text must be in Vietnamese with proper diacritics.\n\n## Performance Requirements\n\n### Critical Metrics\n\n- **First Contentful Paint**: \u003c 1.5s\n- **Time to Interactive**: \u003c 2s on 4G\n- **Lighthouse Performance**: \u003e 90\n- **Bundle Size**: \u003c 200KB (gzipped)\n\n### Testing\n\nTest on:\n\n- Entry-level Android devices (2020+)\n- Slow 4G connections (throttled)\n- Viewport: 360x640px minimum\n- Browsers: Chrome, Safari, Firefox\n\n## Contributing\n\n1. Check [`docs/SPEC_LINKS.md`](docs/SPEC_LINKS.md) for relevant specifications\n2. Review the [GitHub Copilot Instructions](.github/copilot-instructions.md)\n3. Follow the code style guidelines\n4. Ensure Vietnamese localization is correct\n5. Test on mobile devices and slow networks\n6. Submit a PR using the template\n\nSee [CODEOWNERS](.github/CODEOWNERS) for code review requirements.\n\n## Related Repositories\n\n- [**specs**](https://github.com/localstore-platform/specs) - Central specifications and documentation\n- [**api**](https://github.com/localstore-platform/api) - Go backend service\n- [**admin**](https://github.com/localstore-platform/admin) - Admin dashboard for managing menus\n\n## License\n\nGNU Affero General Public License v3.0 (AGPL-3.0)\n\nThis project is licensed under AGPL-3.0 to ensure that all modifications and network-accessible deployments remain open source and benefit the community.\n\n## Support\n\nFor questions, issues, or contributions:\n\n- 📋 [Open an issue](https://github.com/localstore-platform/menu/issues)\n- 📖 [Read the specs](https://github.com/localstore-platform/specs/tree/v1.1-specs)\n- 💬 Contact the maintainers via GitHub\n\n---\n\n**Version**: v1.1-specs | **Last Updated**: 2025-11-25\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flocalstore-platform%2Fmenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flocalstore-platform%2Fmenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flocalstore-platform%2Fmenu/lists"}