Property Manager — Property Management Software
Track repairs, expenses, receipts, mileage, documents, and vendors across your entire rental portfolio. Built for landlords and property managers who want a simple, self-hosted solution with real tax-time value.
Features Overview
🏠 Properties & Units
Manage any number of rental properties, each with one or more units. Track the tenant name, rent amount, and occupancy status per unit. Soft-delete keeps historical data intact when a property is retired.
🔧 Repairs
Log repair requests against any unit with a title, category (Plumbing, Electrical, HVAC, Appliances, Structural, Roofing, Flooring, Painting, Landscaping, Pest, Other), priority (Low → Emergency), and estimated/actual cost. Status progresses through Open → In Progress → On Hold → Completed / Cancelled — and the completion date is stamped automatically.
Filter the list by property, status, or priority. Use the inline search to find any repair by title, category, or vendor.
💰 Expenses & Receipts
Record every property-related expense with a vendor name, payment method, amount, and tax-deductibility flag. Attach one or more receipt images or PDFs per expense — files are stored on the server and viewable inline or downloadable. Filter by property, category, and year.
Supported expense categories: Repairs, Materials, Labor, Utilities, Insurance, Property Tax, Mortgage, HOA Fees, Management, Advertising, Legal, Accounting, Supplies, Other.
🚗 Mileage Log
Log every property-related drive with start/end location, trip date, and purpose. Check "Round Trip" and the app doubles the mileage automatically. The current IRS standard rate ($0.70/mile) is built in — your tax deduction is calculated on every entry and summarized per year and per property.
📁 Documents
Upload photos, PDFs, Word documents, spreadsheets, and text files (up to 50 MB each). Tag documents to a property, unit, repair, or expense. Add free-form tags (e.g. roof, 2024, permit) for easy retrieval. Images appear in a visual photo grid; non-image files appear in a sortable table.
Supported categories: Photo, Receipt, Contract, Lease Agreement, Inspection, Permit, Insurance, Invoice, Other.
👷 Vendors
Keep a contact directory of your contractors and service providers — plumbers, electricians, handymen, and more. Record each vendor's specialty, phone, email, website, license number, hourly rate, insurance status, and whether they're a preferred vendor. Filter by specialty or narrow the list to preferred or insured vendors only.
📊 Reports
Year-end tax & expense summaries in a single view. Select a tax year (and optionally filter by property) to see:
- Total miles driven, IRS deduction amount, trip count, and a per-property breakdown
- Total expenses, tax-deductible total, and an expense breakdown by category
- A combined "Total Estimated Deductions" banner you can hand directly to your accountant
📊 Dashboard
At-a-glance summary cards for total properties, occupied/total units (with occupancy rate), open repairs (with emergency count highlighted), and year-to-date expenses. A mileage banner shows YTD miles and estimated IRS deduction. The dashboard also lists all open and in-progress repairs so nothing slips through.
Licensing
Annual License
- Properties & Units
- Repairs
- Expenses & Receipts
- Mileage Log
- Documents
- Vendors
- Reports
Property Manager is sold as a flat annual license — one license key covers one installation with no limits on properties, units, or user accounts. Every feature is included; there are no feature tiers or per-property add-ons.
System Requirements
Server / Host Machine
- 64-bit Windows 10/11 or Windows Server 2019+, or any 64-bit Linux distribution (x64)
- No .NET runtime required — the release binaries are self-contained
- 500 MB free disk space for the application; additional space for uploaded receipts and documents
- No external database server required — SQLite is embedded
Browser
- Any modern browser: Chrome 90+, Edge 90+, Firefox 90+, Safari 15+
- JavaScript must be enabled (required for Blazor Server)
Download & Installation
Download
Download the latest release from the GitHub Releases page. Each release ships self-contained binaries for Windows and Linux (no .NET runtime needed) plus a Docker image. The assets are:
PropertyManager-vX.Y.Z-windows-x64.zip— Windows x64PropertyManager-vX.Y.Z-linux-x64.tar.gz— Linux x64SHA256SUMS.txt— checksums for the archives above
Verify the download against the published checksum:
# Linux
sha256sum -c SHA256SUMS.txt --ignore-missing
# Windows (PowerShell)
Get-FileHash .\PropertyManager-vX.Y.Z-windows-x64.zip -Algorithm SHA256
Option A — Windows
-
Extract the ZIP to a folder, for example
C:\PropertyManager:Expand-Archive .\PropertyManager-vX.Y.Z-windows-x64.zip -DestinationPath C:\PropertyManager -
Run the application
cd C:\PropertyManager .\RentalManager.Web.exe - Open http://localhost:5000 in a browser. The first run creates the database, seeds the roles, and redirects you to the first-run setup wizard.
To listen on a different port or on all network interfaces:
$env:ASPNETCORE_URLS = "http://0.0.0.0:8080"
.\RentalManager.Web.exe
Option B — Linux
-
Download and extract the archive to a folder, for example
/opt/property-manager:mkdir -p /opt/property-manager && cd /opt/property-manager wget https://github.com/stoxello/PropertyManager-Releases/releases/latest/download/PropertyManager-vX.Y.Z-linux-x64.tar.gz tar -xzf PropertyManager-vX.Y.Z-linux-x64.tar.gz chmod +x RentalManager.Web -
Run the application (must have write access to the folder so the database can
be created):
ASPNETCORE_URLS=http://0.0.0.0:8080 ./RentalManager.Web - Open http://localhost:8080 (or the server's address on your LAN). First run redirects to the setup wizard.
To run as a systemd service, create /etc/systemd/system/property-manager.service:
[Unit]
Description=Stoxello Property Manager
After=network.target
[Service]
WorkingDirectory=/opt/property-manager
ExecStart=/opt/property-manager/RentalManager.Web
Environment=ASPNETCORE_URLS=http://0.0.0.0:8080
Restart=always
RestartSec=3
User=property
[Install]
WantedBy=multi-user.target
Then create a dedicated non-root user that owns the folder and enable the service:
sudo useradd --system --home /opt/property-manager property
sudo chown -R property:property /opt/property-manager
sudo systemctl enable --now property-manager
Option C — Docker
A prebuilt image is published to GitHub Container Registry with X.Y.Z, X.Y,
and latest tags. Run it with persistent volumes for /app/data,
/app/receipts, and /app/documents:
docker run -d \
--name property-manager \
-p 8080:8080 \
-v property-data:/app/data \
-v property-receipts:/app/receipts \
-v property-documents:/app/documents \
ghcr.io/stoxello/property-management:latest
rental_manager.db (the SQLite database), receipts/,
documents/, dp-keys/ (data-protection keys), and
license-machine-id.txt. Keep these files when upgrading.
First-Run Setup
On the very first launch Property Manager detects that no administrator account exists and automatically redirects every request to /account/setup.
-
Create your Admin account
Enter your full name, email address, and a password (minimum 8 characters, at least one uppercase letter and one digit). Click Create Account. - You are now logged in as Administrator. The dashboard opens immediately — no separate login step needed.
-
Activate your license (optional during trial)
Navigate to Admin → License (or/account/license) in the sidebar. Enter your license key and the email address associated with your purchase, then click Activate. A green confirmation banner confirms success. -
Add your first property
Click Properties & Units in the left sidebar and then Add Property.
Using the Application
Adding a Property and Its Units
- Go to Properties & Units → Add Property.
- Fill in the property name, address, city, state, and ZIP. Save.
- On the property row click the Units icon to open the units list for that property.
- Click Add Unit — enter the unit number, monthly rent, tenant name (if occupied), and check Occupied.
Logging a Repair
- Go to Repairs → New Repair.
- Select the property and unit, enter a descriptive title, and choose the category and priority.
- Optionally enter an estimated cost and vendor name. Save.
- As work progresses, open the repair and change the status to In Progress, On Hold, or Completed. The completion date is filled in automatically when you mark a repair complete.
- You can attach expenses and documents directly to a repair from its detail page.
Recording an Expense
- Go to Expenses → Add Expense.
- Select the property, enter a description, date, amount, category, and payment method.
- If the expense is tax-deductible check the Tax Deductible box — it will be included in the Reports summary.
- To attach a receipt, save the expense first and then re-open it to use the receipt upload section.
Logging a Mileage Trip
- Go to Mileage Log → Log Trip, or click the Log Trip button on the Dashboard banner.
- Select the property (and optionally the unit), enter the start and end locations, miles driven, and purpose.
- Check Round Trip if you drove both ways — the total miles (and deduction) will be doubled.
- The IRS deduction at $0.70/mile is shown immediately on save.
Uploading Documents & Photos
- Go to Documents.
- Expand the Upload Documents / Photos panel.
- Select a property and (optionally) link to a repair. Choose a category and add comma-separated tags.
- Click Choose Files to Upload — you can select multiple files at once. Supported types: images, PDF, Word, Excel, and plain text. Maximum 50 MB per file.
- Images appear in the photo grid below; other file types appear in the files table where they can be previewed inline or downloaded.
Running a Tax Report
- Go to Reports.
- Select the tax year. Optionally filter to a single property.
- The left card shows your mileage deduction summary; the right card shows your expense summary by category.
- The green banner at the bottom shows the combined estimated deduction — mileage plus tax-deductible expenses. Share this number with your accountant.
Administration
Managing Users
Administrators can manage user accounts at Admin → Users (only visible to users with the Admin role).
- Add a user: Click Add User, enter their full name, email, a password, and select their role (Admin or User).
- Edit a user: Click the edit icon on their row to change their name or role.
- Disable a user: Toggle the Active switch on their row. Disabled users are immediately signed out and cannot log back in.
Activating or Changing Your License
- Go to Admin → License (or
/account/license). - The current status shows the licensed product, who it's licensed to, the expiry date, install seats used, and the last validation result.
- To activate a new key, enter it in the License Key field along with your registered email, then click Activate.
- To buy or renew a license, use the Stoxello Store button on the license page, or visit stoxello.com/store.
Backing Up Your Data
All application data lives in the folder the app runs from:
rental_manager.db— the SQLite database (all records, users, settings)receipts/anddocuments/— uploaded files organized by year
You can either copy these files to a safe location, or use the built-in backup tools at
Admin → Settings — download a Database Only backup or a Full Backup
(.zip of the database plus all uploaded files), and restore from a .db file when needed.
robocopy or xcopy command nightly. On Linux, a cron job with cp or rsync works well.
Updating to a New Version
- Back up your data (see above).
- Stop the running application.
- Keep the data files —
rental_manager.db,receipts/,documents/,dp-keys/, andlicense-machine-id.txt— and replace the remaining files with the new release. - Start the application and verify everything loads correctly. The database schema is created automatically — no migrations are required.
Questions or issues? Email [email protected].
© 2026 Property Manager. All rights reserved.