๐ŸŒฒ

Sky Line Lodge

Reservations & PMS Portal

๐Ÿ”’ reservations.skylinelodge.net
โš ๏ธ {{ authError }}
๐Ÿ“ฌ {{ authSuccessMessage }}

๐Ÿ”’ Access to reservations.skylinelodge.net is restricted to authorized employees. A 6-digit confirmation PIN will be sent to your verified email.

Dispatched to {{ authEmail }}

Sky Line Lodge • Platoro, CO • (855) PLATORO

{{ currentView === 'timeline' ? 'Calendar' : (currentView === 'bookings' ? 'All Bookings' : (currentView === 'cabins' ? 'Cabins & Rates' : (currentView === 'maintenance' ? 'Maintenance' : (currentView === 'housekeeping' ? 'Housekeeping' : (currentView === 'staff' ? 'Staff & Access' : 'ATVs & Fleet'))))) }}

Date:
Open Confirmed Occupied (In) Dirty (Out) Pending
๐Ÿ“… {{ selectedDatesSummary ? selectedDatesSummary.label : '' }} {{ selectedDatesSummary ? selectedDatesSummary.count : 0 }} {{ selectedDatesSummary && selectedDatesSummary.count === 1 ? 'NIGHT' : 'NIGHTS' }} {{ availableCabinIdsForSelection.length }} of {{ cabins.length }} Cabins Available
Date
โœ• Clear
{{ formatCabinId(cabin.id) }}
${{ (cabin.base_rate / 100).toFixed(0) }}
โ˜… FOCUS
โœ“ OPEN
{{ day.formattedDate }}
โœ“ {{ day.weekday }}
Guest Name Contact Info Address Cabin Stay Dates Billed / Paid Status Action
No active reservations found in database.
{{ b.first_name }} {{ b.last_name }}
{{ b.email }}
{{ b.phone || 'No phone' }}
{{ b.address || 'โ€”' }}
{{ b.city ? `${b.city}, ${b.state} ${b.zip}` : '' }} {{ b.country !== 'United States' ? b.country : '' }}
{{ formatCabinId(b.cabin_id) }} {{ b.cabin_name }}
{{ b.check_in }} → {{ b.check_out }}
+{{ b.extra_adults }} Extra Adult(s) ๐Ÿพ {{ b.pets }} Pet(s)
${{ (b.total_amount / 100).toFixed(2) }}
Paid: ${{ (b.paid_amount / 100 || 0).toFixed(2) }}
{{ b.status === 'CHECKED_IN' ? 'CHECKED IN (IN)' : (b.status === 'CHECKED_OUT' ? 'CHECKED OUT (DIRTY)' : b.status) }}
๐Ÿ”
Sort:
๐Ÿ“…
Beds:
Sleeps:
Showing {{ filteredCabins.length }} of {{ cabins.length }} units
๐Ÿ”

No cabins match your selected filters

Try relaxing your filter criteria or clearing your search query.

{{ formatCabinId(cabin.id) }} ๐ŸŒŠ Riverfront
${{ (cabin.base_rate / 100).toFixed(0) }} /nt

{{ cabin.name }}

Beds
๐Ÿ›๏ธ {{ getCabinBeds(cabin.amenities).total }}
{{ getCabinBeds(cabin.amenities).detail }}
Baths
๐Ÿšฟ {{ getCabinBaths(cabin.amenities).total }}
{{ getCabinBaths(cabin.amenities).detail }}
Sleeps
๐Ÿ‘ฅ {{ cabin.capacity }}
Max Guests
Avail: {{ cabinFilters.checkIn }}→{{ cabinFilters.checkOut }}
${{ getCabinStayPrice(cabin) }} total w/ tax
๐ŸŒŠ River ๐Ÿณ Kitchen ๐Ÿชต Fireplace ๐ŸŒ… Porch ๐Ÿพ Pets

{{ cabin.amenities }}

๐Ÿ”’ Notes Staff
Saving... Saved โœ“
Auto-saves on leave {{ (cabinNotes[cabin.id] || '').length }} chars
๐Ÿ”ง

Maintenance & Work Orders

Subdomain Ready
โ†— Subdomain
Total Units
{{ cabins.length }}
All registered cabins
Operational
{{ getMaintenanceCount('OPERATIONAL') }}
Ready for occupancy
Needs Attention
{{ getMaintenanceCount('ATTENTION') }}
Minor fixes required
Out of Order
{{ getMaintenanceCount('URGENT') }}
Active maintenance blocking

Unit Maintenance Status

Click any card to edit issues or dispatch
{{ formatCabinId(cabin.id) }} {{ cabin.name }}
{{ issue.priority }} {{ issue.category }}
{{ issue.description }}
Reported by {{ issue.reported_by }}
Issue: {{ getMaintenanceStatus(cabin.id).issue }}
No reported issues
Dispatch โ†—
Embed: {{ maintenanceUrl }}
๐Ÿงน

Housekeeping & Room Turnover

Subdomain Ready
โ†— Open Subdomain
Clean & Ready
{{ getHousekeepingCount('CLEAN') }}
Ready for check-in
Occupied
{{ getHousekeepingCount('OCCUPIED') }}
Guest checked in
Dirty / Checkout
{{ getHousekeepingCount('DIRTY') }}
Requires turnover
In Progress
{{ getHousekeepingCount('IN_PROGRESS') }}
Housekeeper cleaning
Inspected
{{ getHousekeepingCount('INSPECTED') }}
Supervisor verified
Click any card to cycle status or open subdomain
{{ sec.icon }}

{{ sec.title }}

{{ sec.cabins.length }} unit{{ sec.cabins.length === 1 ? '' : 's' }}
Guest currently checked in Requires turnover cleaning
No cabins currently in {{ sec.title }}.
{{ formatCabinId(cabin.id) }} {{ cabin.name }}
Assigned:
Beds/Baths: {{ getCabinBeds(cabin.amenities).total }} Beds โ€ข {{ getCabinBaths(cabin.amenities).total }} Bath
Subdomain โ†—
Embed: {{ housekeepingUrl }}
๐Ÿ‘ฅ

Employee Access & Staff Roster

Manage employee email authorizations and portal permissions for Maintenance and Housekeeping.

๐Ÿ”’ Zero Public Access Active: Only email addresses listed below can request a 6-digit PIN to access reservations.skylinelodge.net, maintenance.skylinelodge.net, and housekeeping.skylinelodge.net.
{{ employees.length }} Registered Staff
Employee Name Email Address Department Access Status Last Login Actions
No employees configured yet. Click "+ Add Employee" above to authorize a team member.
{{ emp.first_name }} {{ emp.last_name }} {{ emp.email }} โญ All Portals ๐Ÿ“‹ Reservations ๐Ÿ”ง Maintenance ๐Ÿงน Housekeeping {{ emp.status }} {{ emp.last_login_at ? new Date(emp.last_login_at).toLocaleString() : 'Never' }}
๐Ÿšœ

ATV Fleet & Rentals

{{ atvs.length }} Machines Total

Manage rental Gators, staff utility vehicles, simplified booking calendar, and maintenance wash/fuel turnaround.

Total Fleet
{{ atvs.length }}
4 Rentals + 3 Staff
Available Rentals
{{ countRentalsAvailableToday }}
Ready for guest booking
Active Rentals
{{ countActiveRentalsToday }}
Currently on trails
Staff Units Ready
{{ countStaffUnitsReadyToday }}
Property & crew use
Wash & Fuel
{{ countNeedsWashFuel }}
{{ countNeedsWashFuel > 0 ? 'โš ๏ธ Maintenance Flagged' : 'All machines fueled' }}
Maintenance
{{ countAtvOpenIssues }}
{{ countAtvOpenIssues > 0 ? '๐Ÿ”ง Repairs Pending' : 'Zero open repairs' }}
โšก
Employee Vehicle Check-Out & Check-In
Times are logged automatically upon click โ€ข Zero paperwork or waivers required for staff
Vehicle:
Employee:
Full Day ($250) Morning 4hr ($175) Afternoon 4hr ($175) 3 Days ($225/d) ยท 4+ Days ($175/d) Staff In-Use Maintenance Available
๐Ÿ“… Date
๐Ÿšœ {{ atv.name }}
{{ atv.model }}
{{ atv.type }}
${{ (atv.daily_rate / 100).toFixed(0) }}/d ยท ${{ (atv.half_day_rate ? atv.half_day_rate / 100 : 175).toFixed(0) }}/hf Staff Utility {{ atv.status === 'AVAILABLE' ? 'โ— Ready' : (atv.status === 'IN_USE' ? 'โ— In-Use' : 'โ— Shop') }}
{{ day.formattedDate }}
{{ day.weekday }}
๐Ÿ”ง In Shop / Maint
๐Ÿ“‹

Official ATV Rental Rates & Guest Policies

Published lodge rate schedule for John Deere Gator utility & trail vehicles.

Standard Rates

๐Ÿท๏ธ Rate Schedule

Half Day (4 hours) $175
Full Day (8 hours) $250
3 Days $225 / Day ($675 total)
$675
4+ Days $225 for first 3 days ($675), then $175/day for day 4 on
$675 + $175/d

๐Ÿ›ก๏ธ Rental Policies & Requirements

  • โœ“ Age Requirement: Must be 21 or older to rent and/or drive.
  • โœ“ Credentials: Each Driver's Driver License and a Credit/Debit Card will need to be provided.
  • โœ“ Fuel Included: One (1) full tank of gasoline included with each rental.
  • โœ“ Safety Waiver: Signed Liability & Safety Release Form required before machine handoff.
๐Ÿšœ

{{ atv.name }} ${{ (atv.daily_rate / 100).toFixed(0) }}/d ยท ${{ (atv.half_day_rate ? atv.half_day_rate / 100 : 175).toFixed(0) }}/half

{{ atv.model }}

{{ atv.type }}
Assigned Role: {{ atv.notes || 'No description provided.' }}
Wash Status
{{ atv.wash_status === 'CLEAN' ? '๐Ÿงผ Clean' : 'โš ๏ธ Needs Wash' }}
Fuel Gauge
โ›ฝ {{ atv.fuel_level }}
โš ๏ธ {{ atv.open_issues_count }} Open Maintenance Issue(s)
Vehicle Renter / Guest Rental Dates Times Status Amount Actions
No ATV rentals recorded yet. Click "+ Book ATV Rental" to schedule a booking.
๐Ÿšœ {{ rent.atv_name }}
{{ rent.atv_type }}
{{ rent.guest_name }}
{{ rent.guest_phone || rent.guest_email || 'No contact provided' }}
{{ rent.start_date }} to {{ rent.end_date }} {{ rent.start_time }} - {{ rent.end_time }} {{ rent.status }} Staff ($0) ${{ (rent.total_amount / 100).toFixed(2) }}
๐Ÿšœ

{{ atvRentalForm.renterType === 'EMPLOYEE' ? 'Staff Vehicle Checkout' : 'Book Guest ATV Rental' }}

Reserve an ATV machine for trail riding or ranch operations.

๐Ÿ“‹ Rental Policy Requirements: Age 21+ Required

โ€ข Must be 21 or older to rent and/or drive.

โ€ข Driver's License and Credit/Debit Card required for each driver.

โ€ข One (1) full tank of gasoline included with each rental.

Attached to Stay
Selecting a cabin stay auto-fills the guest's contact info, address, and rental dates.
Guest Contact & Address
โšก Automatic Time Logging

No manual time entry required. Check-out and check-in timestamps are recorded automatically upon button click.

Staff use โ€ข Zero waiver or release form paperwork required

Required before vehicle release on trail rides. Can be signed at desk upon arrival.

๐Ÿท๏ธ
Rate Breakdown: {{ atvRateTierDesc }}
$
$
$
๐Ÿšœ

{{ selectedAtvRental.atv_name }} Rental

{{ selectedAtvRental.id }}
Renter: {{ selectedAtvRental.guest_name }}
๐Ÿก Linked Cabin Stay: Cabin {{ formatCabinId(selectedAtvRental.linked_cabin_id) }}
Type / Slot: {{ selectedAtvRental.renter_type === 'EMPLOYEE' ? 'Staff Check-Out' : (selectedAtvRental.rental_slot === 'HALF_AM' ? 'Morning (8am-1pm)' : (selectedAtvRental.rental_slot === 'HALF_PM' ? 'Afternoon (1pm-close)' : 'Full Day')) }}
โšก Check-Out Logged: {{ selectedAtvRental.clocked_out_at ? formatDateTime(selectedAtvRental.clocked_out_at) : (selectedAtvRental.start_time || 'Pending') }}
๐Ÿ Check-In Logged: {{ selectedAtvRental.clocked_in_at ? formatDateTime(selectedAtvRental.clocked_in_at) : (selectedAtvRental.status === 'COMPLETED' ? selectedAtvRental.end_time : 'Awaiting Return (In Use)') }}
Policy: Staff property utility โ€ข No waiver or release form required
Contact: {{ selectedAtvRental.guest_phone || selectedAtvRental.guest_email }}
Total Rate: ${{ (selectedAtvRental.total_amount / 100).toFixed(2) }}
Notes: {{ selectedAtvRental.notes }}
โ›ฝ Machine Return & Turnaround:

This will automatically mark the machine as Needs Wash & Low Fuel in the maintenance portal so technicians can clean and refuel it.

โ›ฝ

{{ selectedAtvForWashFuel.name }} - Wash & Fuel

๐Ÿ”ง

Report Issue: {{ selectedAtvForIssue.name }}

Flags machine for maintenance repair

๐Ÿ‘ค

{{ employeeForm.id ? 'Edit Employee' : 'Add New Employee' }}

Verification PINs will be sent to this email when logging in to authorized Sky Line Lodge domains.

{{ formatCabinId(cabinContextMenu.cabin.id) }} | ${{ (cabinContextMenu.cabin.base_rate / 100).toFixed(0) }}/nt
{{ cabinContextMenu.cabin.name }}
โ†— maintenance.skylinelodge.net โ†— housekeeping.skylinelodge.net
๐Ÿ—บ๏ธ

{{ getCabinById(activeMapModal)?.name }} — Birdseye Grounds Map

{{ activeMapModal.toLowerCase().startsWith('cc') ? 'Conejos River Property' : 'Sky Line Lodge Resort Grounds' }}

Red pin and beacon highlight the exact location of {{ formatCabinId(activeMapModal) }}.

New Reservation

{{ formatCabinId(form.cabinId) }}
Stay Details {{ getDayOfWeek(form.checkIn, 'short') }} โ†’ {{ getDayOfWeek(form.checkOut, 'short') }} ({{ newResSummary ? newResSummary.nights : 1 }} nt)
Nights:
{{ newResSummary ? newResSummary.nights : 1 }}
{{ availableCabinsForNewRes.length }} Available 0 Available
โš ๏ธ All units are booked for these dates. Change dates to view available cabins.
{{ getDayOfWeek(form.checkIn) }}
๐Ÿ“… {{ formatDateWithDay(form.checkIn) }}
{{ getDayOfWeek(form.checkOut) }}
๐Ÿ“… {{ formatDateWithDay(form.checkOut) }}
${{ form.extraAdultFee }}/night
guests @
$ /nt
Nightly fee for guests age 6 and over
${{ form.petFee }}/night
pets @
$ /nt
Nightly fee for pets in designated units
Guest Information
Billing Summary
Base Stay: ${{ (newResSummary.rate / 100).toFixed(0) }} ร— {{ newResSummary.nights }} night(s):
{{ formatDateWithDay(form.checkIn) }} โ†’ {{ formatDateWithDay(form.checkOut) }}
${{ (newResSummary.baseSubtotal / 100).toFixed(2) }}
Extra Adults ({{ newResSummary.extraAdultsCount }}) ร— ${{ (newResSummary.extraAdultRateCents / 100).toFixed(0) }}/nt ร— {{ newResSummary.nights }} nts: ${{ (newResSummary.extraAdultsSubtotal / 100).toFixed(2) }}
Pets ({{ newResSummary.petsCount }}) ร— ${{ (newResSummary.petRateCents / 100).toFixed(0) }}/nt ร— {{ newResSummary.nights }} nts: ${{ (newResSummary.petsSubtotal / 100).toFixed(2) }}
Hotel & Lodging Tax (6.8%): ${{ (newResSummary.tax / 100).toFixed(2) }}
Total Amount: ${{ (newResSummary.total / 100).toFixed(2) }}

Reservation Details

{{ formatCabinId(detailsForm.cabinId) }}
Stay Details {{ getDayOfWeek(detailsForm.checkIn, 'short') }} โ†’ {{ getDayOfWeek(detailsForm.checkOut, 'short') }} ({{ detailsStayNights }} nt)
Nights:
{{ detailsStayNights }}
{{ availableCabinsForDetails.length }} Available 0 Available
โš ๏ธ All units are booked for these dates.
{{ getDayOfWeek(detailsForm.checkIn) }}
๐Ÿ“… {{ formatDateWithDay(detailsForm.checkIn) }}
{{ getDayOfWeek(detailsForm.checkOut) }}
๐Ÿ“… {{ formatDateWithDay(detailsForm.checkOut) }}
${{ detailsForm.extraAdultFee }}/nt
guests @
$ /nt
Nightly fee for guests age 6 and over
${{ detailsForm.petFee }}/nt
pets @
$ /nt
Nightly fee for pets in designated units
Billing & Payments
Total Billed
${{ (detailsForm.totalAmount / 100).toFixed(2) }}
incl. 6.8% tax
Total Paid
${{ (selectedBooking?.paid_amount / 100 || 0).toFixed(2) }}
recorded
Balance Due
${{ (detailsBalanceDue / 100).toFixed(2) }}
{{ detailsBalanceDue > 0 ? 'Pending' : 'Paid in Full' }}
Record New Payment
Payment History:
${{ (p.amount / 100).toFixed(2) }} {{ p.method }} ({{ p.note }})
{{ p.created_at ? p.created_at.slice(0, 10) : '' }}
๐Ÿšœ ATV Rentals for this Stay {{ attachedAtvRentals.length }} {{ attachedAtvRentals.length === 1 ? 'rental' : 'rentals' }}
๐Ÿšœ
{{ rent.atv_name }} ({{ rent.rental_slot === 'HALF_AM' ? 'Morning 8am-1pm' : (rent.rental_slot === 'HALF_PM' ? 'Afternoon 1pm-close' : 'Full Day') }})
๐Ÿ“… {{ rent.start_date }} to {{ rent.end_date }} โ€ข โœ“ Waiver Signed โš ๏ธ Waiver Needed
${{ (rent.total_amount / 100).toFixed(2) }}
{{ rent.status }}
No ATVs reserved for this stay yet.
Guest Information
๐Ÿ“ Record History Note / Event Tracked with timestamp & staff attribution
Staff:
Timeline Audit ({{ bookingHistory.length }} {{ bookingHistory.length === 1 ? 'event' : 'events' }})
โณ

Loading timeline events...

๐Ÿ“œ

No history logged yet

Actions such as reservation creation, check-in, check-out, payments, and emails will automatically appear here.

{{ getHistoryActionIcon(item.action_type) }} {{ item.action_type }} {{ item.description }}
{{ formatDateTime(item.created_at) }}
Recorded by: ๐Ÿ‘ค {{ item.actor || 'Staff' }}
๐Ÿ’ณ Paid ${{ (item.details.paymentCollected / 100).toFixed(2) }} ({{ item.details.paymentMethod }}) ๐Ÿ”‘ Keys: {{ item.details.keyLabel || item.details.returnedKeys }} โš ๏ธ {{ item.details.maintenanceIssues.length }} Issue(s) Reported โœ‰๏ธ {{ item.details.to }}
Reported Maintenance Issues:
[{{ iss.category }} - {{ iss.priority }}]: {{ iss.description }}
โœ‰๏ธ

Compose Guest Email #{{ emailForm.bookingId }}

From: frontdesk@skylinelodge.net (Skyline Lodge Front Desk)

Templates:
{{ emailToast.type === 'success' ? 'โœ…' : 'โš ๏ธ' }} {{ emailToast.message }}
โ„น๏ธ Porkbun Direct SMTP Secret Setup

To send background emails directly from the Cloudflare Worker, set your Porkbun mailbox password secret in Cloudflare using:

{{ smtpNotice.setupCommand || 'npx wrangler secret put PORKBUN_SMTP_PASSWORD' }}

In the meantime, you can instantly dispatch this email using Open in Mail App or Open Porkbun Webmail below!

Official check-in 4 PM MT โ€ข Check-out 10 AM MT
๐Ÿ›Ž๏ธ

Guest Check-In Procedure {{ formatCabinId(checkInForm.cabinId) }}

{{ checkInForm.cabinName }} โ€ข Guest: {{ checkInForm.guestName }}

Cabin Readiness Status
โœจCLEAN & READY ๐Ÿ›Ž๏ธCURRENTLY OCCUPIED ๐ŸงนDIRTY (Turnover Needed) โณCLEANING IN PROGRESS ๐Ÿ”INSPECTED & APPROVED โ„น๏ธ{{ (typeof checkInForm.cabinStatus === 'object' && checkInForm.cabinStatus !== null ? (checkInForm.cabinStatus.status || 'UNKNOWN') : checkInForm.cabinStatus) }}
โš ๏ธ Notice: Housekeeping has this cabin marked DIRTY. Verify unit turnover before handing keys to guest.
Party Details & Charges Verification
Auto-updates balance for extra guests & pets
On record: {{ checkInForm.origAdults }}
Free of charge
On record: {{ checkInForm.origPets }}
{{ checkInDiffFromOrig > 0 ? 'โš ๏ธ' : 'โ„น๏ธ' }} Party adjusted at check-in ({{ checkInDiffFromOrig > 0 ? '+' : '' }}${{ (checkInDiffFromOrig / 100).toFixed(2) }} diff with Colorado tax applied). {{ checkInForm.nights }} night(s)
Total Billed
${{ (checkInForm.computedTotal / 100).toFixed(2) }}
Paid to Date
${{ (checkInForm.paidAmount / 100).toFixed(2) }}
Balance Due
${{ (checkInBalanceDue / 100).toFixed(2) }}
๐Ÿ“‹ Check-In Procedure Checklist
Linked directly to cabin cards
๐Ÿšช

Guest Check-Out Procedure {{ formatCabinId(checkOutForm.cabinId) }}

{{ checkOutForm.cabinName }} โ€ข Guest: {{ checkOutForm.guestName }}

Check-Out Timing
๐Ÿ”‘ Returned Key Status
๐Ÿ› ๏ธ Report Customer Maintenance Issues
No maintenance issues reported by customer. Click "Add Issue" if any repair or housekeeping turnover concerns were noted.
๐Ÿ“‹ Check-Out Procedure Checklist
Linked directly to cabin cards
๐Ÿ› ๏ธ

Report & Manage Maintenance

{{ formatCabinId(maintenanceForm.cabinId) }}

Log work orders, report customer repairs, or update cabin condition

๐Ÿ› ๏ธ New Maintenance Issues
No new issues queued. Click "Add Issue" above to add a maintenance or repair item.
๐Ÿ“‹ Active Work Orders ({{ getMaintenanceIssuesForCabin(maintenanceForm.cabinId).length }}) Click Resolve when fixed
{{ activeIssue.priority }} {{ activeIssue.category }} โ€ข {{ new Date(activeIssue.reported_at).toLocaleDateString() }}
{{ activeIssue.description }}
Reported by {{ activeIssue.reported_by }}