Next.jsReactAdmin dashboardCorporate Website

property-portal-template — Next.js Admin dashboard Template

By frankxai

A Next.js-based rental property portal and owner dashboard template, including a renter self-service portal, inquiry collection, support tickets, listing draft management, and owner-controlled agent workflows.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Includes multiple routes such as the renter self-service portal, inquiry collection, support tickets, and owner dashboard

02

Built-in deterministic investment modeling workspace supporting amortization, refinancing, cash flow, IRR/NPV, and portfolio stress testing

03

Provides admin interfaces such as the listing draft studio, agent task control center, and agent workbench

04

The data layer includes tables for organizations, listings, inquiries, notifications, approvals, and audit events, and supports tenant-level row-level security

05

Production requires explicit configuration of the owner authentication mode, supporting a single-owner private path and an OIDC institutional path

06

Exposes stateless agent tools through a separately authenticated MCP boundary, preventing agents from directly accessing the portal database

Template Details

This template is the portal component of Property Intelligence OS, aimed at rental property scenarios, providing public-facing pages for renters and an admin interface for owners/managers. The public side includes listing detail pages, inquiry forms, and an access-code-based renter self-service portal; the admin side includes routes such as the owner dashboard, listing draft studio, support ticket entry, installation readiness check, notification ledger, agent task control center, and agent workbench.

The template includes a deterministic investment modeling workspace supporting monthly amortization, refinancing plans, annual cash flow, pre-tax IRR/NPV, and portfolio downside stress testing, while retaining source traceability, document review status, and structured reference input. The public workspace starts with fictional examples, inputs are stored only in the browser session, and the model can be exported as JSON or an authorized model package can be imported.

The data layer uses db/schema.sql to define tables for organizations, listings, units, knowledge articles, listing drafts, inquiries, support tickets, notifications, weekly owner reviews, metric observations, approvals, agent runs, agent tasks, transition proposals, approval receipts, controlled transitions, and audit events, and works with db/rls.sql to enable tenant-level row-level security. Production requires DATABASE_URL, and when persistent storage is unavailable, returns 503 before notification.

For identity, production must explicitly set PROPERTY_OS_AUTH_MODE, supporting two modes: static-private-pilot (single-owner private path) and oidc (institutional path); missing or incomplete modes lock owner access. Agent-related work is conducted through a separately authenticated MCP boundary, with /api/mcp exposing three stateless tools: underwrite_property, stress_property_portfolio, and get_property_review_playbook.

The template explicitly limits v1 behavior: the static portal only answers approved facts, forms only collect and sanitize demo submissions, availability, rent, lease terms, refunds, emergency repairs, and private data require owner approval, and v1 does not perform automated listing channel publishing. Kleinanzeigen reference input is not a live account connection, and OpenImmo outbound still requires provider cooperation, credentials, and approved testing.

Next.jsAdmin panelCorporate website

Is it right for your project?

Use Cases

  • Build a rental property showcase website for renters, including listing details and an online inquiry form
  • Provide owners or property managers with a backend for listing draft management, support tickets, and a notification ledger
  • Run an investment model in the browser session and export or import model JSON
  • Connect agent tasks through the MCP boundary to perform property underwriting, portfolio stress testing, and review process queries
  • Use the installation readiness check and attestation package interface to assess environment configuration and missing items before deployment

Suitable For

  • Developers who want to build a rental property portal based on Next.js
  • Property teams that need an integrated template with a renter self-service portal and owner dashboard
  • Implementers planning to use a Vercel frontend with a governed property knowledge control plane
  • Community builders who want to explore AI-assisted property operations with a free, secure starting point

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After cloning the repository, run npm install, and follow the README to run scripts such as validate, typecheck, and build in order

  2. 2

    Production requires setting DATABASE_URL, and applying db/schema.sql, db/rls.sql, and seed data in order

  3. 3

    Production must explicitly set PROPERTY_OS_AUTH_MODE, with options static-private-pilot or oidc

  4. 4

    After the first installation, set PROPERTY_OS_ORG_ID to the seeded organization id, and verify /admin/runtime in the deployment preview

  5. 5

    Kleinanzeigen reference input is not a live account connection; OpenImmo outbound requires provider cooperation, credentials, and approved testing

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Production must configure a DATABASE_URL database connection; if persistent storage is unavailable, the system returns 503 before notification and cannot collect submission data such as inquiries.
  • Production must explicitly set the PROPERTY_OS_AUTH_MODE environment variable; missing, unsupported, or incomplete modes lock owner access permissions.
  • Kleinanzeigen reference input is not a live account connection; OpenImmo outbound still requires provider cooperation, issued credentials, and passing approved testing, and cannot be used directly.
  • Do not use with real renter data until deployment evidence exists for the target database, authentication mode, notifications, legal review, monitoring, and owner approval processes.
  • Operations such as external publishing, messaging, dispatch, applicant decisions, access disclosure, pricing, and availability are blocked in v1 and require manual handling.
  • v1 does not support automated listing channel publishing and requires manual operation.
  • Production requires two tenant-isolated logical databases and separate runtime roles: the portal database on Vercel and the governed control plane ledger on Railway.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Production intake requires `DATABASE_URL`, records the submission and approval atomically, and returns `503` before notification when durable storage is unavailable.

Original README

Production must explicitly set `PROPERTY_OS_AUTH_MODE`; absent, unsupported, or incomplete modes lock owner access.

Original README

A Kleinanzeigen reference is not a live account connection. Outbound OpenImmo delivery still requires the provider partnership, issued credentials and an approved test.

Original README

Do not use it with real renter data until the target database, selected auth mode, notifications, legal review, monitoring, and owner approval flows have deployment evidence.

Original README

External publication, messaging, dispatch, applicant decisions, access disclosure, pricing, and availability remain blocked.

Original README

No listing channel auto-posting in v1.

Original README

Production uses two tenant-isolated logical databases and separate runtime roles: this portal database on Vercel and the governed control-plane ledger on Railway.

Original README
https://github.com/frankxai/property-portal-template/blob/main/LICENSEhttps://github.com/frankxai/property-portal-template/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 85 / 100
Technologies
Next.js · React
Website type
Admin dashboard · Corporate Website
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-10-01
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: e5866287980dcad72f09dac165cfbb1801985c4cdc128d79eb3b09edb2cb833f

2026-10-02T15:44:22.870Z

Source file / repository
# Property Portal Template

[Deploy on Vercel](https://vercel.com/new/clone?repository-url=https://github.com/frankxai/property-portal-template) ·
[Use this template](https://github.com/frankxai/property-portal-template/generate) ·
[Download ZIP](https://github.com/frankxai/property-portal-template/archive/refs/heads/main.zip) ·
[Operating System Template](https://github.com/frankxai/property-os-template)

Vercel/Next.js template for a premium rental-property website, renter self-service portal, inquiry capture, support intake, owner dashboard, listing draft admin, and owner-controlled agent team.

## Principal owner workspace (v0.3)

The `/` workspace now runs a shared, deterministic investment engine: monthly amortization, scheduled refinancing, annual cash flow, pre-tax IRR/NPV and coordinated portfolio downside. It includes source provenance, document-review status, structured Kleinanzeigen reference intake, an adviser brief and category-specific tenant case drafts.

The public workspace begins with **fictional examples**. Inputs stay in the browser session; export the model JSON to retain it or import an authorized model pack. Editing a sample preserves its example lineage. Owner/admin records retain their existing authentication boundary and are not synchronized into this public workspace.

`/api/mcp` exposes three real, stateless official-SDK tools: `underwrite_property`, `stress_property_portfolio`, and `get_property_review_playbook`. The endpoint only calculates caller-supplied assumptions and returns public review procedures. See [ChatGPT setup](docs/chatgpt-connection.md), [financial methodology](docs/investment-model.md), and [workspace contract](docs/principal-workspace.md).

```bash
npm run validate
npm run typecheck
npm run build
npm run principal:smoke
npm run auth:smoke
```

A Kleinanzeigen reference is not a live account connection. Outbound OpenImmo delivery still requires the provider partnership, issued credentials and an approved test. No scraping, messaging or publication is added.

## Who This Is For

- property owners who want a premium renter-facing web experience
- agencies installing modern property websites and support workflows
- implementers who pair Vercel frontends with GitHub-approved property knowledge
- community builders who want a free, safe starting point for AI-assisted property operations

This is the portal half of Property Intelligence OS. Pair it with `property-os-template` for agent roles, MCP boundaries, owner runbooks, partner offer design, the schema-valid install planner, and Railway control-plane architecture.

## Routes

- `/`: operating dashboard entry point
- `/properties/[slug]`: public property page
- `/properties/[slug]/inquire`: inquiry capture
- `/stay/[accessCode]`: renter self-service portal
- `/support`: support and maintenance intake
- `/owner`: owner dashboard
- `/admin/setup`: owner setup checklist and missing-fact workflow
- `/admin/implementation`: installation readiness, agent architecture, production gates, and partner offer ladder
- `/admin/runtime`: runtime storage, notification, capability, and queue posture
- `/admin/notifications`: signed delivery, retry, fallback, and owner acknowledgement ledger
- `/admin/listings`: listing draft studio
- `/admin/integrations`: approved/manual/planned integration cockpit
- `/admin/control-center`: specialist missions, authority boundary, runtime posture, lifecycle, and outcome scorecard
- `/admin/agent-workbench`: approved-evidence, structured-draft, immutable-proof, and owner-review workflow
- `/admin/agent-runs`: owner-reviewed agent run ledger
- `/admin/ops`: server-timestamped weekly review, metric evidence, operating cadence, and release gates

## Setup

```bash
npm install
npm run validate
npm run agent:dry-run
npm run typecheck
npm run build
npm run smoke
npm run auth:smoke
npm run identity:smoke
npm run notification:smoke
npm run weekly:smoke
npm run weekly:visual
npm run visual:qa
npm run audit
npm run install:proof
npm run auth:hash -- "private owner passcode"
npm run db:rls:smoke
npm run identity:db:smoke
```

## Data Model

The starter uses repo content in `data/properties.ts` for approved public facts. Runtime submissions may use demo memory only in development or an explicit loopback test process. Production intake requires `DATABASE_URL`, records the submission and approval atomically, and returns `503` before notification when durable storage is unavailable. Send only sanitized summaries to GitHub issues or notification workers.

The first portal schema lives in `db/schema.sql`. It separates organizations, properties, units, knowledge articles, listing drafts, inquiries, support tickets, notifications, weekly owner reviews, immutable metric observations, approvals, portal agent runs, agent missions, transition proposals, approval receipts, controlled transitions, and audit events. Apply `db/rls.sql` after the schema to enable tenant-scoped row-level security, then use `db/seed-sample.sql` for a public-safe local production-mode smoke seed.

Production uses two tenant-isolated logical databases and separate runtime roles: this portal database on Vercel and the governed control-plane ledger on Railway. Never point both `DATABASE_URL` values at the same logical database; the authenticated MCP API is the boundary between them.

Runtime APIs:

- `/api/runtime/health`: environment, adapter, notification, and capability posture
- `/api/runtime/snapshot`: counts, recent demo queue items, audit posture, and production notes
- `/api/approved-evidence`: owner-authenticated, versioned evidence registration through MCP
- `/api/agent-drafts`: approved-evidence structured draft through MCP; no local fallback
- `/api/agent-run-reviews`: owner accept, revise, or reject outcome through MCP; no content apply

Production database order for a fresh install:

1. Apply `db/schema.sql`.
2. Apply `db/rls.sql`.
3. Seed with `db/seed-sample.sql` or a private owner seed.
4. Set `PROPERTY_OS_ORG_ID` to the seeded organization id.
5. Verify `/admin/runtime` in the deployed preview before real renter data.

Existing v0.2 portal databases apply `db/002-notification-lifecycle.sql`, `db/003-weekly-owner-review.sql`, and the transactional `db/004-tenant-oidc.sql` in order, then rerun `db/rls.sql` and the live database smokes before enabling production workflows.

## Owner Identity

Production must explicitly set `PROPERTY_OS_AUTH_MODE`; absent, unsupported, or incomplete modes lock owner access.

- `static-private-pilot` is the private one-owner path with a high-entropy signing secret and passcode digest.
- `oidc` is the agency path with pre-bound organization membership, signed ID-token verification against pinned JWKS, fixed server-backed sessions, PostgreSQL rate limits, role capabilities, and atomic member/session revocation.

The portal accepts no global owner API bearer. Machine-to-machine agent work crosses the separately authenticated MCP boundary. See `docs/owner-auth.md` for endpoint configuration, reviewed member binding, database role constraints, and deployed acceptance evidence.

## Implementation Cockpit

The route `/admin/implementation` turns the template into an installable product surface. It scores the current install across approved property knowledge, premium portal readiness, runtime storage, Codex/Claude/MCP agent substrate, listing operations, owner notifications, and business packaging.

The API route `/api/implementation/readiness` exposes the same contract for automation, partner audits, and future onboarding flows. It intentionally reports missing environment variables and blocked v1 actions instead of pretending the demo template is production-persistent.

## Agent Control Center

The protected route `/admin/control-center` converts the agent team into an operational surface: ten narrow specialist mandates, six mission states, an explicit authority contract, runtime proof counts, and owner/renter/property/partner success targets. `/api/agent-missions` records a draft-only mission with one property scope, objective, success metric, owner action, persistence receipt, notification receipt, and audit event.

When MCP is configured, the portal routes missions, approved evidence, structured drafts, and owner review outcomes through that single authenticated control plane. Governed draft routes never fall back to the portal database, and the legacy manual run ledger is disabled in connected or production mode. The paired `property-os-template` persists these records under forced RLS and implements proposal, owner decision, single-use receipt, exact internal apply, audit, and undo transactionally. External publication, messaging, dispatch, applicant decisions, access disclosure, pricing, and availability remain blocked.

The protected `/admin/agent-workbench` is the owner-facing four-stage loop: record a bounded mission, register exact approved evidence, generate a schema-checked draft, and record accept/revise/reject. The page exposes model, prompt, evidence, output hash, risk, latency, token, and no-action receipts. A review never applies or sends the draft.

## Self-Service Install Proof

The route `/admin/setup` includes the install proof cockpit: proof score, runtime posture, required commands, phase gates, missing production env names, owner approval boundaries, and blocked v1 actions.

The protected API route `/api/install/proof-packet` exposes the same evidence for partner audits and onboarding automation. The local command `npm run install:proof` prints a public-safe JSON proof packet that reports environment key names and configured booleans only; it does not print secret values.

Generate the upstream configuration packet in `property-os-template` with `npm run install:plan -- --config <public-safe-config.json>`, then attach its hashes and this portal's live proof packet to the handoff.

## Owner Notifications

Notifications use a durable tenant-scoped outbox and append-only event ledger. A separately authenticated worker sends HMAC-signed, sanitized webhooks, retries with bounded backoff, triggers the fallback route when urgent acknowledgement is late, and exposes evidence at `/admin/notifications`. See `docs/notification-lifecycle.md` and run `npm run notification:smoke` after the production build.

## Weekly Evidence

The protected `/admin/ops` workflow records one review per organization and UTC week, derives review duration and urgent acknowledgement from server evidence, accepts bounded FAQ and vacancy inputs, and stores five explicit `met`, `not-met`, or `unmeasured` observations. Completion is idempotent and performs no external action. See `docs/weekly-owner-review.md`.

## V1 Safety

- Static portal answers approved facts.
- Forms collect and sanitize demo submissions.
- Availability, rent, lease terms, refunds, urgent repairs, and private data require owner approval.
- No listing channel auto-posting in v1.

## Vercel

Deploy as a normal Next.js project or use the deploy button above after the repository is public. Use preview deployments for owner review before production.

The v0.3 release uses Next.js 16.3.5 and React 19.2.8. `sharp` and `postcss` are pinned to patched versions through npm overrides. Run the dependency audit in CI before deploying; the inherited v0.2 dependency lock is superseded by this release.

## v0 Path

Use `docs/v0-implementation-brief.md` as the v0 prompt brief for remixing the interface while preserving the safety model: approved facts, human approval, no automatic commitments, and operational dashboard density.

## Operating Docs

- `docs/operator-runbook.md`
- `docs/owner-auth.md`
- `docs/self-service-install.md`
- `docs/implementation-cockpit.md`
- `docs/runtime-adapter.md`
- `docs/portal-scene-brief.md`
- `docs/agent-control-center-spec.md`
- `docs/agent-workbench-spec.md`
- `docs/weekly-owner-review.md`
- `docs/product-roadmap.md`
- `docs/production-hardening.md`
- `docs/v0-implementation-brief.md`
- `docs/success-criteria.md`
- `docs/taste-standard.md`
- `docs/release-gate.md`

## Support Boundary

The public template can run as an explicit local demo, but production owner access fails closed. Do not use it with real renter data until the target database, selected auth mode, notifications, legal review, monitoring, and owner approval flows have deployment evidence.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.