A local place-discovery interface — browse hotels, restaurants, cafés and things to do by category, search, and save favourites.
Status: frontend only. Every listing currently comes from
data/mockData.ts. There is no backend, no persistence and no real search yet. It is a complete, working UI waiting for a data layer — which makes it a good project to contribute to.
- Category browsing (hotels, restaurants, cafés, shopping, music, outdoors, fitness, bars, bookshops)
- Place detail pages with ratings, review counts and open/closed state
- Search across listings
- Saved places
- User profile
- Responsive layout with a dedicated mobile nav
React, TypeScript, Vite, Tailwind CSS, React Router, lucide-react. Deliberately dependency-light — four runtime dependencies.
Prerequisites: Node.js 20+.
git clone https://github.com/ieeecsopen/Zappy
cd Zappy
npm install
npm run devNo environment variables are needed — it runs entirely on mock data.
npm run build
npm run previewpages/ Categories, CategoryListing, PlaceDetail, Search, Saved, Profile
components/ Header, Hero, Carousel, FeatureCard, MobileNav, Footer
home/ Homepage sections
ui/ Shared primitives
data/
mockData.ts Categories, places and testimonials
types.ts Place, Category, Testimonial
Because the UI is done and the data layer isn't, the useful work is unusually well-defined:
- Wire up a real backend.
data/mockData.tsexports match thePlaceandCategorytypes intypes.ts— swapping the source for an API or Supabase query is a contained change. - Make search real. It currently filters mock data in memory.
- Persist saved places — today they vanish on reload.
- Accessibility — keyboard navigation and screen-reader labels.
See CONTRIBUTING.md.
MIT — see LICENSE.