Repository: https://github.com/arundada9000/roomeo
Hosted at: https://roomeo.vercel.app
- Node.js 20+ (project uses v24.14.1)
- npm
- PostgreSQL 16+ with PostGIS extension
See how-to-run.md for device-specific quick-start instructions.
& "C:\Program Files\PostgreSQL\16\bin\pg_ctl.exe" start -D "C:\Program Files\PostgreSQL\16\data"Or via service:
Start-Service postgresql-x64-16Verify PostGIS:
& "C:\Program Files\PostgreSQL\16\bin\psql.exe" -U postgres -d roomeo -c "SELECT PostGIS_Version();"cd D:\Programming\nextjs\room finder\roomeo
npm install
npx prisma db pushnpx prisma db seedCreates sample properties, units (with photos), landlords, and users. See seed-users.md for credentials.
npm run devOpen http://localhost:3000.
| Script | Command | Description |
|---|---|---|
npm run dev |
next dev |
Start development server |
npm run build |
next build |
Production build |
npm start |
next start |
Start production server |
npm run lint |
eslint |
Run ESLint on all files |
The project uses ESLint 9 with flat config (eslint.config.mjs).
Current status: 0 errors, ~200 warnings (mostly <img> suggestions from @next/next/no-img-element and unused imports).
To lint only source code:
npx eslint src/ --quietTo check specific file:
npx eslint src/components/map/explore-map.tsxnpx prisma db push # Push schema to database
npx prisma generate # Generate Prisma client
npx prisma studio # Open Prisma Studio (web UI)
npx prisma db seed # Run seed script
npx prisma db pull # Pull schema from database- Components:
kebab-case.tsx(e.g.,explore-map.tsx) - Pages:
page.tsx(Next.js App Router convention) - Server Actions:
actions.ts(co-located with page) - Stores:
kebab-case.ts(e.g.,map-store.ts)
- Server Components (no
"use client") — fetch data, render shell - Client Components (
"use client") — interactive UI, hooks, event handlers
- Zustand for map UI state (center, zoom, filters, selected unit)
- URL search params for rooms page filters
- Local state for transient UI (modals, dropdowns, form inputs)
- TailwindCSS utility classes
- Color tokens from
globals.css(CSS variables) - shadcn/ui components with custom theme
- Lucide React for UI icons (search, navigation, amenities)
- Custom PNG icons for room-type visuals (map markers, cards, filters)
Built by Arun Neupane (@arundada9000).
CTO @ Sajilo Digital & Vice Secretary @ Code for Change Rupandehi.
Portfolio: arunneupane.netlify.app
- Add field to
FilterStateinsrc/types/index.ts - Add field to Prisma
Unitmodel if needed - Add toggle UI in
filter-modal.tsxandfilter-panel.tsx - Add filter logic in
getExploreListings()andgetRooms()
- Add value to
RoomTypeenum inprisma/schema.prisma - Add value to
RoomTypeenum insrc/types/index.ts - Add icon PNG to
public/icons-for-rooms/room-icons-1/ - Add mapping in all
roomTypeIconsrecords across components - Add label in all
roomTypeLabelsrecords - Run
npx prisma db pushto update database
- Create directory under
src/app/(e.g.,src/app/faq/) - Add
page.tsx(server or client component) - Add navigation link in
NavbarorFooteras needed - Add route to routes.md documentation