UWash Dashboard is a mobile-first laundry status dashboard for UTown residences. It visualizes machine status, queue information, and analytics, and is designed to run both as a web app and a Telegram Mini App.
- Production URL:
https://uwash-dashboard.vercel.app
- Live status cards for washers and dryers
- Registered vs hardware-detected (unregistered) machine sessions
- Idle alert banner for laundry collection reminders
- Queue bottom sheet with waiting positions and estimated wait times
- Analytics bottom sheet with peak-hour chart and impact metrics
- Telegram Mini App initialization for in-app launch support
- React 19 + TypeScript
- Vite
- Tailwind CSS
- Recharts
- Telegram WebApp SDK (
@twa-dev/sdk)
- Node.js 18+
- npm 9+
npm installnpm run devnpm run buildnpm run previewThe app includes Telegram WebApp bootstrap logic in src/main.tsx and script loading in index.html.
If setting up with BotFather:
- Create/configure your bot
- Set Web App URL to
https://uwash-dashboard.vercel.app - Add a menu button pointing to the same URL
This project is deployed on Vercel.
Typical deploy flow:
npm run build
npx vercel --prodNote: .vercel is ignored in .gitignore and should not be committed.
src/
components/ UI components (cards, sheets, header, strips)
context/ College/house state management
data/mock/ Mock API-shaped data for status/queue/analytics
hooks/ Reusable hooks (e.g. useTick)
types/ Shared API/data types
npm run dev- start local dev servernpm run build- type-check and build production bundlenpm run preview- preview built app locallynpm run lint- run ESLint