snarfblam / Prop-manager

Property management and tenant service web application
7 stars 7 forks source link

Tenant Service Portal

Easy-to-use software for rental property owners. Generates invoices, accepts payments from tenants, and manages a maintenance request list.

Contents

Create Units

There must be at least one unit to begin creating users, so the simplest approach is to create all of your units first. Visit the Units page and click Add New Unit. Give the unit a name and specify the monthly rent. You can temporarily assign the administrator as the tenant.

Create Users

Once your units are set up, create accounts for your tenants. Visit the Users page, and click the New User button. Select the unit the user is associated with and fill in their name and contact information. Note that the email address entered is not used for authentication, only correspondence. Once the form is filled, click Create User. The user will be emailed an activation link to gain access the the account.

Invoicing

Invoices are generated monthly as configured for each unit. Users are emailed a notification when the invoice is generated and can visit the site to pay via credit card (or ACH if the user has set up it up). The application does not store any information regarding invoices and payments except the due date, the amount, and whether it has been paid. Transactions and all financial information are handled directly by Stripe.

The invoice generated each month is based on the rent rate listed at the beginning of the month. If the rent rate is zero for the entirety of a month, an invoice will not be generated. If the rent rate is zero, but then changed to another amount in the middle of a month, an invoice will be generated at that time (or soon thereafter).

When a payment is made through other means, e.g. cash or check, you can find the invoice in the Payments page and manually mark it as payed.

Deployment

This application relies on a number of third-party services. You will need to configure and obtain credentials for:

All Deployments

Follow these steps for any deployment.

  1. Copy or clone the repository into a Node environment. For Heroku, the recommended approach is to clone the repository and use Heroku CLI to create an app, then git push to the generated heroku remote.
  2. In the application's root directory run the command npm install
  3. If necessary, create a database in your local MySQL server named propsmanager for the development environment.
  4. Configure environment variables (see below)

Non-Heroku Deployment

Heroku is the simplest deployment option. However, it is not required. If you're not deploying to Heroku, the following additional steps need to be performed manually:

  1. In the application's /client subdirectory run the command yarn to install React dependencies.
  2. Build the client by running yarn run build in the /client directory.
  3. Start the appliction: run npm start in the application's root directory.

Environment Variables

Under The Hood

Packages

Server Packages

Client Packages

Other Code Resources

Directory Structure

Tenant Service Portal
├─● client/             React Project
│ ├─● public/           Static front-end files
│ └─● src/              React code
│   ├─● components/     Re-usable page elements
│   │ └─● Bootstrap/    Bootstrap 4 components
│   └─● pages/          Page components that correspond to routes
│     └─● modals/       Components to be housed in a modal
├─● config/             Database connection parameters
├─● cron/               Scheduled jobs
├─● mail/               Email sending
├─● models/             Sequelize models
├─● passport/           Passport logic (see also, /routes/auth)
└─● routes/             HTTP routes
  └─● auth/             Passport auth routes