Property maintenance with a paper trail.
Version 1.2.0 on the App Store · on Google PlayMartin is a mobile-first property-maintenance suite for small landlords and the tradespeople who keep their rentals running. It is named for the Purple Martin, a bird that lives in houses people put up for it and pays rent in work.
The handyman logs time against a property, with photos, notes, a materials list and expenses with their receipts. The owner approves the hours and the money and turns a resident's report into an assigned repair. The resident reports a problem with photos and watches it get fixed. Every repair keeps one documented trail, from report to closed.
Clock in and out against a property, pause the timer, attach photos and notes to the session, keep the shopping list, and log expenses with a receipt photo. Mileage is a category.
See hours and spend per property, approve them, and assign repair tickets. In an operation this size the owner often holds the wrench too, so it is one app: the tabs follow your role.
Report a dripping tap with photos, follow what happens, and talk to the people fixing it. A resident never sees money, hours, or anyone else's unit.
Clocking in, taking a photo, writing a note, logging an expense and composing a chat message all work with no signal at all. The work is kept on the phone the moment it happens and reaches the server the next time the phone can. A crawl space or a dead zone changes nothing.
docker compose up on your own boxThe apps talk to a Martin server you host: an Elixir and Phoenix application in Docker, on a generic Linux machine. There is no Martin cloud, and no third-party service is required to run it. The same container answers a browser, with a manager's desk for reviewing a month of hours and a way for a resident to report a problem without installing anything.
One deployment is one landlord's operation. Your records live on your server and on the phones that use it.
Martin has no open sign-up. Every account starts from an invite issued by the person who runs the buildings, on their server. After that, you sign in with a password, with Google, or on iPhone with Apple. Google and Apple replace the password, never the invite.
The apps send what you enter to the server you paired with, and nowhere else. Usage counts are off unless the operator of that server turns them on. When they are on, Google Analytics on the web and Firebase Analytics in the apps count which screens are opened and which actions are taken. They never carry a name, an email address, a street address, a unit, or any Martin id; Google's own analytics identifiers are the only ids that go with them.
Each Martin server publishes its own privacy policy at
/privacy, and the one that binds you is the one your server
serves. Ours is here:
Martin privacy policy.
Both apps need a Martin server and an invite from whoever runs it. Questions go to rentalops@river.io, and the support page covers the common ones.