No description
Find a file
sherlock f1222d3708 Add a thali favicon in the site ink.
Replace the default Next.js icon with a plate mark that matches the production primary.
2026-10-04 16:30:06 +05:30
.github/workflows chore: upgrade dependencies and CI tooling (#8) 2026-09-22 23:59:54 +05:30
.playwright-mcp Updated menus, added fixes to the viewer 2025-10-17 19:05:02 +05:30
public Remove obsolete menu scaffolding and fix rotation and IST timing 2026-10-03 20:15:15 +05:30
src Add a thali favicon in the site ink. 2026-10-04 16:30:06 +05:30
tools/oxlint/anti-slop Remove obsolete menu scaffolding and fix rotation and IST timing 2026-10-03 20:15:15 +05:30
worker Remove obsolete menu scaffolding and fix rotation and IST timing 2026-10-03 20:15:15 +05:30
.gitignore Initial commit from Create Next App 2025-08-19 02:50:21 +05:30
.oxfmtrc.json fix: address anti-slop review feedback 2026-08-18 03:54:52 +00:00
.oxlintrc.json chore: upgrade dependencies and CI tooling (#8) 2026-09-22 23:59:54 +05:30
babel.config.js feat: redesign the menu UI to match the food-court viewer 2026-10-03 22:59:19 +05:30
bun.lock chore: upgrade dependencies and CI tooling (#8) 2026-09-22 23:59:54 +05:30
components.json chore: add parallel CI and tighten oxlint rules 2026-08-09 12:25:29 +05:30
CONTRIBUTING.md Remove obsolete menu scaffolding and fix rotation and IST timing 2026-10-03 20:15:15 +05:30
IMPLEMENTATION_GUIDE.md chore: add parallel CI and tighten oxlint rules 2026-08-09 12:25:29 +05:30
LICENSE added the MIT license 2025-08-25 09:20:10 +05:30
MENU_MANAGER.md Remove obsolete menu scaffolding and fix rotation and IST timing 2026-10-03 20:15:15 +05:30
next.config.ts feat: redesign the menu UI to match the food-court viewer 2026-10-03 22:59:19 +05:30
package.json chore: upgrade dependencies and CI tooling (#8) 2026-09-22 23:59:54 +05:30
postcss.config.js feat: redesign the menu UI to match the food-court viewer 2026-10-03 22:59:19 +05:30
README.md Remove obsolete menu scaffolding and fix rotation and IST timing 2026-10-03 20:15:15 +05:30
stylex.config.cjs feat: redesign the menu UI to match the food-court viewer 2026-10-03 22:59:19 +05:30
tsconfig.json chore: add anti-slop oxlint plugin 2026-08-18 00:11:54 +05:30
wrangler.jsonc Update wrangler config name to sindhi-menu (#1) 2026-09-22 23:41:13 +05:30

Sindhi Menu

Sindhi Menu is a fast, friendly viewer for the Sindhi Mess weekly menu. It ships with a curated JSON snapshot of the mess banner and renders a week-at-a-glance experience that keeps track of the current time in Indian Standard Time (IST).

Overview

  • Static-first data – the active rotation loads from public/menu1.json through public/menu4.json and baked into the build.
  • Time aware – detects the current or upcoming meal in IST and scrolls/highlights it automatically.
  • Responsive card UI – swipeable carousel on smaller screens, transposed grid on large displays.
  • Accessible theming – light and dark palettes with readable chips for special veg / non-veg sections and a manual theme toggle.

Tech Stack

  • Next.js App Router with static export with TypeScript
  • StyleX with preserved reset and theme CSS
  • next-themes for runtime theme switching
  • shadcn-inspired UI primitives (Card, Button) and lucide-react icons

Getting Started

Requirements

  • Node.js 18+
  • Bun
bun install
bun run dev

Visit http://localhost:3000. The current week is generated from the JSON file each time the server starts.

Production build

bun run build

Linting

bun run lint

Updating Menu Data

  1. Edit public/menu1.json through public/menu4.json with the latest banner contents.
  2. Keep each meal’s specialVeg, veg, and nonVeg entries as strings or arrays. Multi-item strings can be comma/newline/semicolon separated; the loader splits them automatically.
  3. Run bun run dev locally and verify the Tuesday dinner (dinners often expose the splitting) plus light/dark themes.
  4. Commit the JSON along with any related UI tweaks.

Project Structure

  • src/app/ – Route handlers, layouts, and pages (home view and full-week view)
  • src/components/ – UI components such as the carousel, cards, selectors, notifications
  • src/data/weeks/ – Static week builder that transforms the JSON snapshot into typed menu objects
  • src/lib/ – Shared utilities (IST date helpers, exceptions filter, type definitions)
  • public/ – Static assets, including the menu JSON and icons

Design Notes

  • Cards flatten sections so veg and non-veg items can sit side-by-side while still conveying kind through iconography and color.
  • Theme colors are defined once in src/app/globals.css with CSS variables, and the body picks up the appropriate color-scheme.
  • Accessibility considerations include keeping section metadata through aria-labels even when headings are hidden.

Future Ideas

  • Add other messes or user-provided menus once reliable data sources exist.
  • Allow personal annotations or alerts for favourite dishes.
  • Automate JSON updates from banner photos via OCR.

Deployment

Any Node-compatible host (Vercel, Fly.io, Render, etc.) will work. Build with bun run build and serve with bun run start. Because the data is static, no additional runtime configuration is required.