E Estate Admin
Documentation Start a trial Log in

Customer-facing guide

Estate Admin implementation overview

Everything a client needs to set up, operate, and scale on Estate Admin. Use the quick links to jump to the section you need.

Multi-business, single database Role-based access Automated billing

Sample login (demo)

Use this on the staging/demo environment only.

Email: demo@estateadmin.test Password: Password123! Migaa admin: migaaadmin@estateadmin.test / Password123!

After login, pick a business or create a trial from the landing page.

Onboarding flow

Use the public trial form on the landing page or call the endpoint below to spin up a new business and owner.

POST /start-trial
body:
- business_name (string, required)
- admin_name (string, required)
- email (string, required)
- phone (string)
- password (string, min 8)

Response includes the created business, owner, and dashboard_url. Non-JSON requests render a success screen for the client.

Access and isolation

Multi-business scoping

  • Every request inside the app prefix uses /b/{business:slug} and the business middleware to load context.
  • Global scopes enforce business_id on queries to prevent cross-tenant access.

Roles and MFA

  • Roles: Admin, Manager, Accountant, Viewer. Attach users per business.
  • MFA middleware is available and can be required for sensitive routes.
  • Session-based auth; logins land on the correct business dashboard.

Core data model

Estates and units

  • Estates carry name, code, type, address, planned vs occupied counters.
  • Houses belong to an estate with house_code, block, type, and default service charge.

Residents and balances

  • Residents connect to estate and house, hold contact details, type, and status.
  • Invoices and payments link to resident and house to keep statements aligned.

Charges and invoices

  • Service charges can be global per estate or default per house.
  • Recurring run creates invoices per occupied unit with active resident.
  • Invoices store items, payments, status (draft/partial/paid), and balances auto-recalc.

Imports and templates

CSV importers speed up onboarding. Download templates then upload filled files.

Templates

GET /b/{business}/imports/template/{type} where type is estates, houses, or residents.

Upload

  • Estates: name, code, type, address, planned_units.
  • Houses: estate_code, house_code, block, house_type, default_service_charge, is_occupied.
  • Residents: estate_code, house_code, full_name, email, phone, resident_type, status.

Billing automation

Recurring run

  • Route: POST /b/{business}/app/invoices/run-recurring (authorized users).
  • Creates invoices per occupied house with active resident using service charges and defaults.

Manual invoices

Use the UI under Invoices to create ad-hoc invoices, attach items, and deliver PDF or email.

Reminders

Daily reminders can be scheduled via queue/scheduler to nudge overdue balances; statuses refresh on every payment.

Payments and statements

Reports and dashboards

Dashboards

Business dashboard surfaces occupancy, estates count, billing status, and quick actions.

Reports

  • Arrears by estate/aging: /b/{business}/reports/arrears.
  • Collections by method/date: /b/{business}/reports/collections.
  • Occupancy vs planned units: /b/{business}/reports/occupancy.
  • Exports: /b/{business}/app/reports/export/{type} (CSV).

Operations runbook

Background workers

  • Scheduler: php artisan schedule:work (or cron every minute).
  • Queue: php artisan queue:listen --tries=1 for jobs and reminders.

Environment

  • Mail defaults to log driver; swap to SMTP in .env.
  • Cache/session use database drivers by default for consistency.
  • Set APP_URL to your public domain for correct links in emails and PDFs.

Support

If anything looks off, re-run the trial flow and confirm you land on the dashboard URL provided. Use the in-app help or share the dashboard_url with clients.