Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻訳待ち
One place for reservations, walk-ins, rooms, housekeeping and payments, built for small hotels, hostels and guesthouses. Free plan, or 30 days of Pro with no card.
翻訳待ち
ビジネスTypeScript · CSSGitHub @KalemdzievskiVオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Web app for the Hotel Management system: role-based dashboards for platform admins, hotel
admins/managers, housekeepers and guests. Talks to the ASP.NET Core API in the separate
Hotel-Management-backend repository.
Stack: Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS 4 · shadcn/ui (Radix) ·
TanStack Query · Zustand · date-fns · Recharts
Without NEXT_PUBLIC_API_URL the app calls http://localhost:5001/api (the Docker Compose port).
In development the login page lists the seeded demo accounts for each role.Read the full README ↗Web app for the Hotel Management system: role-based dashboards for platform admins, hotel
admins/managers, housekeepers and guests. Talks to the ASP.NET Core API in the separate
Hotel-Management-backend repository.
Stack: Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS 4 · shadcn/ui (Radix) · TanStack Query · Zustand · date-fns · Recharts
npm ci
echo "NEXT_PUBLIC_API_URL=http://localhost:5213/api" > .env.local # backend started with `dotnet run`
npm run dev # http://localhost:3000
Without NEXT_PUBLIC_API_URL the app calls http://localhost:5001/api (the Docker Compose port).
In development the login page lists the seeded demo accounts for each role.
| Script | What it does |
|---|---|
npm run dev | Dev server with Turbopack |
npm run build | Production build (type-checked) |
npm start | Serve the production build |
npm run lint | ESLint |
npm run test:e2e | End-to-end journeys with Playwright (see e2e/README.md) |
| Role | Lands on | Navigation |
|---|---|---|
| SuperAdmin | /dashboard/super-admin | Users, hotels, subscriptions |
| Admin / Manager | /dashboard/admin | Calendar, availability, hotels, rooms, reservations, guests, walk-in, inventory, housekeeping, reports; Admins also Staff and Billing |
| Housekeeper | /dashboard/housekeeping | Housekeeping tasks for their hotel |
| Guest | /dashboard/reservations | Their reservations, availability, calendar |
The API enforces all access rules; the UI only hides what a role can't use (hooks/usePermissions.ts).
Public pages: /pricing and /register-hotel (hotel owners sign up for a 30-day trial). When the API
refuses something because of the owner's plan (402), PlanLimitDialog offers the upgrade, and
SubscriptionBanner warns owners about ending trials and failed payments. Until a real payment
provider is connected, /dashboard/billing/checkout is a test checkout that charges nothing.
app/ Routes (App Router). (auth)/ = login/register, dashboard/ = the app
components/ UI: ui/ (shadcn primitives), layout/, dashboard/, reservations/, rooms/, auth/
hooks/ TanStack Query hooks per resource
lib/api/ Axios API client and one module per backend resource
lib/utils/ Date helpers
store/authStore.ts Session (token + user), persisted to localStorage
types/ API types and enums (mirror the backend DTOs)
store/authStore.ts is the only place the token lives. The API client attaches it,
and on a 401 (outside login/register) signs out and redirects to /login. Expired stored
sessions are dropped on page load.YYYY-MM-DD, short stays
as YYYY-MM-DDTHH:mm, without converting to UTC.Build with NEXT_PUBLIC_API_URL set to the public API URL (it's baked in at build time).
The Dockerfile takes it as a build argument; see the backend's docker-compose.yml.
Product direction and planned features: ROADMAP.md.