About this software
About Dependable-clean
Dependable Clean is a complete web application for running a cleaning service. Customers book cleanings by service area at least three days ahead, owners confirm bookings and assign staff, and cleaners mark jobs in progress then complete. Every user signs in to the same dashboard but sees only what their role permits: owners manage services, prices, areas, team members, reviews and support; sub-admins do the same except add team members; staff see their assigned jobs and answer handed-off tickets; customers request cleanings, track bookings and leave reviews. The platform includes a public home page with a product carousel, service listings, customer reviews, FAQ, cancellation policy and contact details.
Why Dependable-clean
What makes it better
than the alternatives
- 01
Role-based access
- 02
Booking workflow
- 03
Staff dispatch
- 04
Review moderation
- 05
Private support
Authentication & Sessions
- Sign-up with name
- email and password
backend/index.js/signup) - Sign-in with email and password
- returning a signed JWT
backend/auth.jscreateToken - readToken)
- Demo sign-in buttons for admin
- staff and customer roles in local development
backend/index.js/demoLogin - demoAccounts)
- Session refresh every 30 seconds to keep user profile current
frontend/src/design/Auth.tsx - Owner setup via time-limited link when OWNER_EMAIL is set
backend/setup-owner.js backend/index.js/setupAccount)
Service & Location Management
- Service CRUD: name
- description
- price
- duration
- image upload
backend/index.js/services - /addService
- /updateService
- /deleteService)
- Service area CRUD: name
- active flag
backend/index.js/locations - /addLocation
- /updateLocation
- /deleteLocation)
- Dhaka thana list for area selection
backend/index.js/dhakaThanas database/seed.sqlthanas)- Public service listing filtered by active areas
frontend/src/design/screens/ServicesPage.tsx - Service editor with image preview and validation
frontend/src/design/screens/ServiceEditor.tsx
Booking & Scheduling
- Customer booking request: service
- area
- date (min 3 days ahead)
- time
- address
- phone
backend/index.js/book) - Owner confirms
- assigns staff
- or cancels bookings
backend/index.js/updateBooking - requireAdmin)
- Staff marks job in progress then complete
backend/index.js/updateBooking - requireStaff
- transitions)
- Customer requests reschedule or cancellation
backend/index.js/requestReschedule - /requestCancellation)
- Booking list filtered by role: customers see own
- staff see assigned
- admins see all
backend/index.js/bookings - /myBookings)
- Status history tracking for every booking state change
backend/index.jsstatusHistory array) - Earliest booking date hook enforces 3-day minimum
frontend/src/design/hooks/useEarliestBookingDate.ts
Team & Role Management
- Add team members: name
- role (superAdmin
- subAdmin
- staff)
backend/index.js/addTeamMember - requireSuperAdmin)
- Invite flow: setup link sent
- member sets password
backend/index.js/setupAccount - setupHash)
- Update team member: name
- password
- active flag
backend/index.js/updateTeamMember) - Role-based permissions: superAdmin adds team
- subAdmin manages business
- staff sees assigned jobs
backend/permissions.jscan - teamRoles)
- Team list with active/inactive filter
frontend/src/design/screens/TeamPage.tsx - Activity log of team actions
backend/index.js/activity - audit function)
Reviews & Ratings
- Customer submits one review per completed booking: rating
- comment
backend/index.js/submitReview - unique orderId index)
- Owner approves
- rejects or hides reviews
backend/index.js/updateReview - requireAdmin)
- Public review list shows only approved reviews
backend/index.js/reviews - approved: true filter)
- Review admin page with pending
- approved and hidden tabs
frontend/src/design/screens/ReviewsAdminPage.tsx - Review display on home page and review page
frontend/src/design/screens/Home.tsx - ReviewPage.tsx)
Customer Support
- Customer opens conversation with subject and first message
backend/index.js/startConversation) - Owner and staff reply to conversations
backend/index.js/replyToConversation - requireStaff)
- Owner hands conversation to specific staff member
backend/index.js/assignConversation - requireAdmin)
- Conversation list filtered by role: customers see own
- staff see assigned
- admins see all
backend/index.js/conversations) - Message threading with sender role and timestamp
backend/index.jsmessages collection - conversationId index)
Business Settings
- Contact details: email
- phone
- address
backend/index.js/settings - /updateSettings)
- FAQ list with question and answer pairs
backend/index.js/settings faq key) - Cancellation policy text
backend/index.js/settings cancellationPolicy key) - Special offers text
backend/index.js/settings offers key) - Timezone and currency from environment
backend/index.jsBUSINESS_TIMEZONE - BUSINESS_CURRENCY)
Public Website
- Home page with hero product carousel
frontend/src/design/screens/Home.tsx frontend/src/design/components/HeroSlider.tsx- Service listings with images and prices
frontend/src/design/screens/ServicesPage.tsx - Customer reviews display
frontend/src/design/screens/ReviewPage.tsx - FAQ and policy pages
frontend/src/design/components/FAQ.tsx - CancellationPolicy.tsx)
- Contact page with business details
frontend/src/design/components/ContactInfo.tsx - Responsive layout with mobile breakpoints
frontend/src/design/responsive.css
Dashboard & Reports
- Role-specific dashboard: customers see bookings
- staff see jobs
- admins see overview
frontend/src/design/screens/DashboardPage.tsx - Booking counts by status
backend/index.js/dashboard - bookingsByStatus aggregation)
- Revenue total from completed bookings
backend/index.js/dashboard - totalRevenue aggregation)
- Recent activity log for admins
backend/index.js/activity - createdAt descending index)
- Staff job list with status filters
frontend/src/design/screens/BookingsPage.tsx
Data & Deployment
- MongoDB schema with 10 collections and indexes
database/migrations/001-initial-schema.js backend/schema.js- Demo data seed: 6 services
- 3 areas
- 2 reviews
- demo owner
backend/seed.js backend/sampleData.js- Local preview mode with in-memory data when MONGODB_URI is unset
backend/demoDb.js - Vercel deployment config for frontend
frontend/vercel.json - Render deployment config for backend (render.yaml)
- SQL schema and seed files for reference
database/schema.sql database/seed.sql
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| TypeScript (React) | — | — | Front-end | 52.5% |
| JavaScript | — | — | Front-end | 20.9% |
| CSS | — | — | Styling | 16.5% |
| TypeScript | — | — | Front-end | 6.5% |
| SQL | — | — | Database | 3.6% |
- Primary language
- JavaScript (Node.js 20.13+)
- Framework
- Next.js 16.2 + React 19.3 (frontend), Express 5.1 (backend)
- Database
- MongoDB 6.20+
- Authentication
- JWT (HMAC-SHA256, 7-day tokens)
- Licence
- Single-site
- Screens
- 14
- Database tables
- 10
- Supported languages
- English only
- Browser support
- Modern browsers (ES2020+, React 19 compatible)
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB | 2 GB |
| OS | Node.js 20.13+ on Linux/macOS/Windows | Node.js 20.13+ on Linux/macOS/Windows |
| Est. monthly hosting | $15 | $15 |
```bash npm install cp backend/.env.example backend/.env # works in demo mode without MongoDB cp frontend/.env.example frontend/.env.local npm run dev # web :3000, API :5000 ```
```bash git clone <repo-url> && cd dependable-clean && npm install cp backend/.env.example backend/.env # set MONGODB_URI, AUTH_SECRET, CLIENT_ORIGIN npm run db:setup npm run setup-owner --workspace @dependable-clean/server npm run build npm i -g pm2 && pm2 start npm --name dependable-clean -- start ```
- **Backend (Render):** uses `render.yaml`. Set `MONGODB_URI`, `CLIENT_ORIGIN`, `OWNER_EMAIL`, `OWNER_NAME` in the dashboard. - **Frontend (Vercel):** `cd frontend && vercel --prod`, then set `NEXT_PUBLIC_API_URL` to the backend URL.
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (5 minor)
Small improvements the developer has been told about. None of them stop the software from working.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.