Tyler Robertson
All work

TenantSee

Rental management for Canadian landlords and tenants.

Role
Design and engineering, end to end
Years
2024 – Now
Stack
  • Next.js
  • TypeScript
  • MUI
  • Prisma
  • PostgreSQL
  • Stripe
The TenantSee homepageThe TenantSee homepageThe TenantSee homepage

The problem

Plenty of landlords still run their rentals out of spreadsheets, email threads, and paper files, and their tenants chase receipts and repair updates through the same mess. TenantSee puts both sides of the rental on one platform, with one source of truth.

What it does

Everything a landlord needs to track lives in one account:

  • Buildings, units, tenants, and amenities in one structured portfolio
  • Payment tracking for cash, e-transfer, cheque, and bank transfer, with receipts and exports
  • Online rent collection by pre-authorized debit on Growth plans and up
  • Maintenance requests with photo attachments and status updates
  • Document storage with categories and expiry alerts
  • A notification centre with real-time delivery

How it’s built

TenantSee is a Next.js App Router app in the same Turborepo as this site. Data lives in PostgreSQL through Prisma, every company’s data is isolated from every other company’s, and role-based permissions are enforced on the server and reflected in the UI.

Billing runs on Stripe: database-driven subscription plans, Checkout, and a webhook lifecycle for billing history and grace periods. Rent collection uses Stripe Connect with Canadian pre-authorized debit, a scheduled charge job, and webhooks for settlements, refunds, disputes, and payouts.

Sign-in supports passwords, email links, and passkeys through Better Auth. Documents are stored in S3, real-time notifications go through Ably, and errors are tracked in Sentry. Much of the UI comes from shared packages I maintain in the monorepo, including the forms, data grid, and rich-text editor.

Where it is now

TenantSee is live at tenantsee.ca, with a free Hobby plan for smaller portfolios.