Scenario: Owner requests payout Given the owner has a payout balance ≥ Rp 500.000 When they click "Ajukan Penarikan" And select a bank account and amount Then the system creates a payout request with status "Menunggu Proses" And an email receipt is sent to the owner | # | Criteria | |---|----------| | 1 | All UI text is Bahasa Indonesia and follows the brand style guide. | | 2 | Registration form validates required fields, email format, phone number (Indonesia prefix +62 ), and KTP image size ≤ 5 MB. | | 3 | Owner can upload up to 10 photos per listing; images are auto‑compressed to ≤ 1 MB each. | | 4 | Listings support price per night , minimum stay , cancellation policy (flexible, moderate, strict). | | 5 | Dashboard shows real‑time balance (available for payout, pending settlement, total earnings). | | 6 | Owner can filter reservations by status (Pending, Confirmed, Checked‑in, Completed, Cancelled). | | 7 | Payouts are processed via the existing FinTech gateway (mid‑2026 integration). | | 8 | Activity log (create/edit/delete) is stored for 30 days and visible to Ops via an admin view. | | 9 | All endpoints are protected by OAuth2 Bearer token with role‑based access ( owner , admin ). | |10 | System complies with PDPA (Indonesia) – personal data encrypted at rest, and KTP images stored in a GDPR‑compatible bucket with restricted IAM. | |11 | Mobile‑first responsive layout passes Lighthouse score ≥ 90 on both desktop & mobile. | |12 | End‑to‑end test coverage ≥ 85 % (Cypress + Jest). | |13 | The feature does not degrade performance of the public marketplace (≤ 200 ms page load for listing page). | 🎨 UI / UX Mock‑up Guidance | Screen | Core Elements | Suggested Layout | |--------|----------------|------------------| | Login / Register | Email, password, “Lupa kata sandi?”, “Daftar sebagai Pemilik” button | Split‑screen: left – illustration; right – form | | Owner Dashboard | Top bar (logo, notifications, avatar), side nav (Daftar Penginapan, Reservasi, Keuangan, Profil), main area – quick stats cards (Total listing, Booking bulan ini, Saldo) | Card‑style grid, 3‑column on desktop, 1‑column stack on mobile | | Add/Edit Listing | Form sections: Informasi Umum , Fasilitas , Foto , Harga & Kebijakan – stepper navigation | Sticky “Simpan & Lanjut” button at bottom; preview pane on right (desktop) | | Reservation List | Table: Guest, Check‑in, Check‑out, Total, Status, Action (Detail) – filter dropdown + search bar | Row expansion for quick view; modal for full details | | Payout Request | Balance summary, input amount, bank selector, “Ajukan Penarikan” CTA | Confirmation modal with OTP (if enabled) | | Profile / Verification | KTP upload, bank account, contact details, status badge (Terverifikasi / Menunggu) | Inline validation messages in red/green | Tip: Use the existing component library (React + Material‑UI v5) to keep visual consistency. All icons should be from the Material Icons set, with the “translate” flag for Bahasa. 🗄️ Data Model (simplified) | Table / Collection | Fields (key) | Description | |--------------------|--------------|-------------| | owners | owner_id (PK), name , email , phone , ktp_url , bank_account , status ( pending , verified , rejected ), created_at , updated_at | Core owner profile | | listings | listing_id , owner_id (FK), title , description , address , city , province , latitude , longitude , price_per_night , min_stay , cancellation_policy , photos[] , status ( draft , pending_review , live , inactive ), created_at , updated_at | Accommodation data | | reservations | reservation_id , listing_id , guest_id , check_in , check_out , total_amount , status ( pending , confirmed , checked_in , completed , cancelled ), created_at | Booking records | | payouts | payout_id , owner_id , amount , bank_account , status ( requested , processing , paid , failed ), requested_at , processed_at | Financial withdrawals | | activity_logs | log_id , owner_id , action (enum), entity_type , entity_id , payload (JSON), timestamp | Audit trail for Ops |
Dependencies: - FinTech payout API (v2) - Existing Auth service
Scenario: Owner registers and verifies identity Given the owner lands on the "Daftar Pemilik" page When they fill out the registration form (name, email, phone, KTP photo, bank account) And click "Kirim Verifikasi" Then the system creates a pending owner profile And sends a verification email + SMS And notifies the Ops team for manual KTP validation STARS-947 -DECENSORED- Pemilik Penginapan Yg Ta...
Scope: - Owner registration & KTP verification workflow - Dashboard with quick stats - Listing creation wizard (photos, price, policies) - Reservation list & detail view - Balance overview & payout request flow - Admin review screens for verification & listing approval
As a property owner (Pemilik Penginapan) I want a dedicated dashboard in Bahasa Indonesia So that I can manage my listings, bookings and payouts from one place. Scenario: Owner requests payout Given the owner has
Description: Implement a self‑service portal for property owners to register, manage listings, view reservations, and request payouts. The portal must be fully localized to Bahasa Indonesia, mobile‑first, and integrate with existing payment & authentication services.
| Metric | Target | |--------|--------| | New Owner Registrations | ≥ 250 | | Listings Created (live) | ≥ 200 | | Average Time to First Payout | ≤ 3 days | | Owner NPS (post‑onboarding survey) | ≥ 8 / 10 | | System Uptime (owner portal) | 99.9 % | Title: STARS‑947 – Pemilik Penginapan Owner Portal (Bahasa Indonesia) | | 4 | Listings support price per
Acceptance Criteria: (see table above)
Scenario: Owner creates a new accommodation listing Given a verified owner is logged in When they click "Tambah Penginapan" And fill out property details (title, description, address, foto, tipe kamar, harga, kebijakan pembatalan) And click "Simpan" Then the listing appears in the "Daftar Penginapan" table with status "Menunggu Review" And the Ops team receives a review notification