Build a Property Management System with Craft CMS? Is Craft mature enough to build a robust rental property management system like http://www.appfolio.com/features or https://www.tenantcloud.com? 

If so, are there any existing plugins that can handle any of the complex features? I will need to build or contract out the rest.

Required Features: 


site visitors can search for rental units (on Map too)
tenants can pay rent online 
tenants can make maintenance requests online
landlords can look at their accounts (income, expenses, past due, etc)
landlords, agents or admins can add new properties to the system
landlords or agents can book showings
automated notifications/emails (rent due, maintenance complete, etc)
lease document signing (DocuSign API or?)
calendar to schedule maintenance
e-commerce and accounting integration (possibly Quickbooks and banks API)


I've also been researching using ExpressionEngine or using an existing service like the ones mentioned above or even open source, but I really want to use Craft or even EE if possible for flexibility now and in the future.
I think the other answers here are accurate in saying that this could very well be a use case for a more specific application. 

That said, I'm optimistic that this would be possible on Craft with enough planning, budget, and development time; and our own efforts while building out the Sprout Plugin Suite have had use cases like this in mind. 

So, I'm going to try to answer how I'd approach this as a Craft project. There would be lots of questions to get answered along the way, so this is really just a very top level overview of where I'd start to look and ask questions.

I'll frame my answer around the plugins I'm most familiar with.  It's likely with the amount of custom development necessary, multiple plugins or starting points would take a similar amount of time.



1. site visitors can search for rental units (on Map too)

For this requirement, I'd look into Smart Map and reach out to Lindsey DiLoreto if you have specific questions.

2. tenants can pay rent online

This is possible in some form or another with Charge, Sprout Commerce, and Craft Commerce.  The latter two are in private and public beta as of this posting. Specific details would need to be explored.

3. tenants can make maintenance requests online

A fairly customized workflow is possible for this with normal Entries or Sprout Forms, and Sprout Email. When an Entry for a particular Section is saved via an Entry Form, or an Entry for a Form is submitted via a Form, an event will fire and you can setup a Notification in Sprout Email to trigger emails to different people (admins and users) based on different types of maintenance requests.  You have full control over the custom HTML in your notification emails and can customize the message with the information from the submitted Entry or Form.

If you have any specific questions around Sprout Commerce, Sprout Email, or Sprout Forms, you can reach out to Barrel Strength Design.

Views into your Element Listing Pages can be controlled via Element Hooks to help manage workflows and bring key information to the top level, such as the status of a request. For more specific needs, a plugin may be necessary.

4. landlords can look at their accounts (income, expenses, past due, etc)

This should be possible with default Craft functionality for a member section and you can pull data in from any native elements or any plugins that store their data in the database.

5. landlords, agents or admins can add new properties to the system

This is possible with the default Craft functionality and customizing Member Group permissions to your needs.  You'll need to build out the front-end interface, but all you need to allow people to submit data is there.  If you want to trigger email notifications when certain types of properties get added, Sprout Email has a customizable Event API so you could write or ask someone to write a custom plugin that allows emails to be triggered when certain conditions are met.

6. landlords or agents can book showings

It's unclear to me if this ties in to Calendar needs as discussed in #9 or a more general Event question where you have a showing and many people can come. Craft is pretty powerful out of the box and more specific event needs would probably need to be described for a more specific answer.

7. automated notifications/emails (rent due, maintenance complete, etc)

We have automated notifications planned (at some point) for Sprout Email, and we've worked on a some projects where we have initial implementations of this behavior. Some custom development would be needed here, but it's possible, and the notifications could be managed right in Sprout Email to make their content easy to update and manage for a non-technical user.

For things like notifying somebody when maintenance is complete, you could create a custom Email Event to allow you to trigger an email to the particular user who submitted the request when a maintenance work updates a custom field from one status to another.

8. lease document signing (DocuSign API or?)

Some Digital Signature programs allow you to embed certain document types on your website and allow them to be submitted by multiple people. I've seen various implementations of this functionality - however in my quick search around I'm not finding many examples that don't rely to some extent on the API.  I still believe they exist, but for now, my list to you is just this one:


PandaDoc


9. calendar to schedule maintenance

There are a few Calendar plugins to take a look at (in alphabetical order):


Calendar by Solspace
Calendars by Top Shelf Craft
Venti by Tipping Media  


I'd recommend reaching out to each respective developer for specific questions.

10. e-commerce and accounting integration (possibly Quickbooks and banks API)

This is probably going to be the most challenging item to answer without a more detailed spec and understanding of what your budget is. Custom e-commerce and complex integrations, in general, take time to do well and get things right – especially when people are making decisions around the financial data and using that data to run the business.

Both Sprout Commerce and Craft Commerce are being built out with flexibility in mind, but I don't think either of them will be planning to integrate with Quickbooks, Xero, or banks before the more standard Commerce use cases are solved, if at all. It's likely what you're looking for here is a more custom integration targeted specifically at your accounting software and banks.

Depending on your budget, you may want to consider alternative workflows here too that combine programmatic and manual steps.



It's worth noting that most of us plugin developers are pretty friendly, and if you found yourself in a situation where Calendars or SmartMap weren't communicating with Sprout Email in a way that allowed you to send notifications like you need to, or vice versa, we like hearing about it and learning how we can help make the whole plugin ecosystem play more nicely together.

In general, I think these types of applications are a very fine line between custom application and CMS. On one hand, they are going to require customization and the app may be the better route.  On the other hand, enough components of the project revolve around general content management needs that a CMS like Craft already solves well and saves the trouble of managing your own admin UI and many other concepts that are already well established in Craft.

With a project as complex as yours, it may be worthwhile to consider a hybrid approach too. It may be that 80% of your project is a really good fit for Craft and that it makes sense to outsource certain functionality like Scheduling or Commerce to another platform.  Over time, maybe there will be an opportunity to migrate those types of features to Craft at a lower cost.

A lot of trade-offs like that are hard to make, but putting a price tag on your options helps you and your client choose the best approach for the current budget, and prioritize improvements down the road.