Stars-947 -decensored- Pemilik Penginapan Yg Ta... -

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.

Acceptance Criteria: (see table above)

Give property owners (hoteliers, B&B hosts, villa managers, etc.) a self‑service portal where they can register , manage their listings , track reservations , receive payouts , and communicate with guests – all in Bahasa Indonesia, with a clean, mobile‑first UI. 👤 User Persona | Persona | Primary Goal | Pain Point | |--------|--------------|------------| | Pemilik Penginapan (small‑scale hotel/guesthouse owner) | Quickly publish rooms, see bookings, get paid, and answer guest queries without needing a tech‑savvy assistant. | Current admin panel is English‑only, fragmented, and requires multiple log‑ins for payment & reservation systems. | | Super‑Admin (Ops Team) | Monitor compliance, verify owners, intervene in disputes. | Lack of a single source of truth for owner data and activity logs. | 📖 User Story (Gherkin style) Feature: Pemilik Penginasta – Owner Portal STARS-947 -DECENSORED- Pemilik Penginapan Yg Ta...

The spec follows a modern, Agile‑friendly format (title, description, user‑story, acceptance criteria, UI/UX mock‑up notes, data model, technical considerations, and rollout plan). Feel free to adjust the wording or scope to match the exact product vision of your platform. Feature ID: STARS‑947 Feature Name: Pemilik Penginapan (Accommodation‑Owner Portal) Epic: Owner & Host Management Owner: Product Management – Marketplace Team Target Release: v3.2 (Q3 2026) As a property owner (Pemilik Penginapan) I want

| 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) | Current admin panel is English‑only, fragmented, and

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.

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 |