About this software
About Sunset Motel
Sunset Motel PMS is one ASP.NET Core MVC application (.NET 10, Clean Architecture) that combines a public booking website with a staff console. Guests search availability, book and pay through Stripe Checkout (or choose cash at the motel), and manage their bookings in a guest account. Staff use a live room board updated through SignalR, a front desk for walk-ins and reservations, housekeeping and maintenance tools, cash shifts and management reports. Data lives in SQL Server through raw parameterised SQL with Dapper. The source includes schema and seed scripts, a Docker Compose setup, and 180 xUnit tests according to the project's own documentation. The licence is single-site.
Why Sunset Motel
What makes it better
than the alternatives
- 01
Live room board
A SignalR hub at /hubs/rooms, restricted to staff roles, pushes room changes so the front desk and housekeeping plan refresh as rooms change.
- 02
Five roles, tested access rules
Super Admin, Admin, Clerk, Housekeeper and Guest are enforced with role attributes, and AuthorizationCoverageTests fails when an action is unguarded or a role rule changes.
- 03
Stripe with signed webhook
The Stripe webhook verifies the Stripe-Signature header, confirms Pending bookings with their payment in one transaction, and is idempotent through a unique gateway-reference index. A demo checkout mode is also built in.
- 04
Cash shift control
Clerks open a shift with opening cash, take payments, close with a counted drawer total and get a shift report. Clerks can only see their own shifts, and the close message says the report is emailed to the owner.
- 05
Safe first-run and deployment
The production seed ships with no accounts and the first Super Admin is created at /staff/setup. Docker Compose requires strong SQL passwords, and settings secrets such as the Stripe webhook secret and SMTP password are encrypted before storage.
Public booking website
- Home
- rooms
- gallery
- about and contact pages
- Availability search by dates and adults
- Rate-limited contact form with honeypot spam trap
- Admin-editable content
- photos
- gallery albums and social links
Guest accounts and bookings
- Guest registration and login
- Booking form with price and tax calculation
- Pay online via Stripe Checkout or choose cash at the motel
- My bookings with details and cancellation
- Profile
- email and password change
Front desk
- Room board with status changes
- Walk-in check-in with cash and change calculation
- Phone and counter reservations
- Check-in
- check-out
- cancel and receipts
- Availability calendar by room type and night
- Searchable
- filterable bookings list
Guest directory
- Searchable guest list with filters: in-house
- upcoming
- returning
- with or without account
- Guest profile with stay history
Housekeeping and maintenance
- Daily plan with checklists
- assignment
- completion and skipping of stayover service
- Room inspection pass or fail
- Maintenance requests with photo
- priority and optional out-of-order flag
- Lost and found log with returned or disposed status
Cash shifts
- Open shift with opening cash
- Close with counted cash and notes
- Shift report view
- with clerks limited to their own shifts
Reports
- Overview
- monthly
- customers and room-type reports
- Charts for revenue
- occupancy and top customers
- Excel and PDF export of each report
Staff and administration
- Staff accounts with profile fields
- photo and HR documents
- Rooms
- room types and prices
- Branding with logos
- colours and favicon
- Super Admin settings for motel profile
- tax
- currencies
- countries
- Stripe and SMTP
- Database backup and gated demo reload
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| C# | — | — | Web, API, admin | 47.9% |
| C# (Razor) | — | — | Web pages | 34.3% |
| SQL | — | — | Database | 12.4% |
| CSS | — | — | Styling | 4.7% |
| JavaScript | — | — | Front-end | 0.8% |
- Primary language
- C# / .NET 10 (ASP.NET Core MVC)
- Framework
- ASP.NET Core MVC on .NET 10 (Clean Architecture)
- Database
- SQL Server 2022 (Express in Docker; raw SQL via Dapper)
- Authentication
- Cookie sign-in with separate guest and staff schemes; PBKDF2 password hashing; role-based [Authorize] on every action
- Licence
- Single-site
- Screens
- 46
- Database tables
- 20
- Supported languages
- English interface only as shown in the code; currencies and countries are configurable in Settings; no RTL support
- Browser support
- Modern evergreen browsers with JavaScript and WebSocket support (SignalR); no per-browser test matrix in the code
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB RAM | 8 GB RAM |
| OS | Linux container (dotnet aspnet:10.0.14, fontconfig and fonts-dejavu-core for reports) or Windows; .NET 10 runtime; SQL Server 2022 | Linux container (dotnet aspnet:10.0.14, fontconfig and fonts-dejavu-core for reports) or Windows; .NET 10 runtime; SQL Server 2022 |
| Est. monthly hosting | $15 | $15 |
``` export MSSQL_SA_PASSWORD='<strong sa password>' export MOTELPMS_DB_PASSWORD='<strong app password>' export SEED=production docker compose up --build ``` Open http://localhost:8080. The first visit to /staff/login creates the Super Admin.
``` cd "NET Project" dotnet restore --locked-mode dotnet build dotnet test dotnet run --project src/MotelPms.Web --launch-profile http ``` First create the database: `sqlcmd -S localhost -E -C -i database/schema.sql`, then `sqlcmd -S localhost -E -C -i database/seed-production.sql`. See docs/deployment-vps.md.
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.
87/ 100
Automated audit score
✓ Passed the auditVersions & 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.