rent-check-backend

Rent Check

logo

Rent Check is an application that serves as a convenient checklist designed to simplify your apartment rental experience.

The app streamlines apartment choice by categorizing check items, allowing you to create groups within each flat based on necessity (must-have and optional), room-specific criteria (bathroom and bedroom), and any other preferences you desire.

In most cases, you confidently assess requirements, checking items like “not ground floor” for a second-floor apartment. In situations of uncertainty, such as when considering pets allowed and a landlord permits cats but is unsure about dogs, Rent Check introduces a meh option.

After inspecting all the apartments and marking your preferences, you’ll have a consolidated list of potential flats, conveniently organized based on your specific criteria. This makes comparing apartments and reaching a final decision a simplified process.

Table of contents

User Guide

Register & Login

To register and log in, enter your username and password.

Note that currently, our app supports only one authentication method (refer to Bearer Authentication for details).

Add Flat

Click the + button to add a flat. Provide the mandatory address and, optionally, a title and description. Upon completion, you’ll be redirected to a dedicated page for the created flat.

add-flat

Add Group

Click the + button to add a group. Next, either assign a new unique title or select from existing groups – those you currently have or had across all flats. As a result, a new empty group is created.

add-group

Add Item

Click the + button to the right of a group title to add an item to the specific group. Likewise for groups, provide either a new unique title or select an existing item. Thus, a new item is added to the group.

add-item

Set an Item Status

There are four statuses you can assign to an item:

To change the status, simply tap on the item.

set-item-status

Delete Item

Swipe an item to delete it from the group.

delete-item

Delete Group

To delete a group, click the 🗑️ button at the right.

delete-group

Delete Flat

To delete a flat, long tap on it

delete-flat

What’s Next

This version represents an MVP, with more exciting features coming!

Check the Rent Check Project to explore opened issues and stay tuned for updates 💙

Implementation Details

For technical details regarding the backend, please refer to the corresponding section. For the frontend, check out the corresponding repository.

Architecture

The application follows a layered architecture:

Technologies Used

The code is implemented in Go, using the following stack:

Database Schema

db-scheme

Authentication and Authorization

The app employs token (Bearer) authorization for secure user access. Here’s how it works:

Testing

Integration tests have been implemented for the repository layer. Testcontainers is utilized to set up a Docker container with a test database.

The current test coverage averages around 80% for flat, group, item, and user repositories.

Deployment

Docker serves as the deployment solution, here are the key characteristics of its configuration:

Development Team