/prop-suite

This a property-inclined social media space where clients who want to rent an apartment can follow an agent to see available apartments for rent in an area.

Primary LanguageRuby

Linters

Prop-suite

This is a platform where clients can check for available property(apartment) postings, contact the sellers, then review the sellers after a transaction. The app's original theme both in design and functionality is built to mimic Twitter, so users also have to option to follow other users. The app is mobile-responsive.

Outline

Live version

The website is hosted on heroku here => propsuite.

UI Preview

image image
image image

Features

The app has two levels of authorization;

  • A regular client can

    • view public documents on the website(apartments, agents' reviews, followers).
    • signup for an account to be able to use the service.
    • search for an apartment by address, category, price.
  • A user has all the privileges of a regular client and can also perform the following actions:

    • Log in to use their account.
    • Add a new apartment posting with multiple photos.
    • review a seller after a transaction.
    • follow other users.
    • update their profiles including avatar and coverphoto uploads.
    • Log out of their account.
    • Delete their account.

Technologies

Installation

Follow the steps below to setup a local development environment. First ensure you have postgres installed, and a version of Ruby on Rails equal to or greater than v5.2.3 .

  1. Clone the repository from a terminal git clone https://github.com/codecell/prop-suite.
  2. Navigate to the project directory. cd prop-suite
  3. Install project Ruby/Rails dependencies. bundle install
  4. Install Javascript dependencies. yarn install
  5. Run the migrations to setup the tables. rails db:migrate
  6. Start the rails server. rails server
  7. Visit localhost:3000 and Voila!!!.

Cloudinary setup

All image uploads are hosted on Cloudinary, so ensure to register for an account(registration is free). - After registration copy your cloud-name, api-secret and api-key into config/application.yml, I left a sample in config/application_sample.yml. - Please do not expose your cloudinary credentials to the public so ensure to place the path to the config/application.yml in the .gitignore file.

Entity Relationship Diagram

image

Endpoints

Auth

EndPoint Functionality
POST /users/sign_up Allows a client to create an account.
POST /users/sign_in Signs in a user into their account(session).

Users

EndPoint Functionality
GET /users Allows a user to view who to follow.
GET /users/user_id Allows a user to view another user's page, view followers.
GET /users/user_id/edit Allows a user to view and alter profile fields for update.
PATCH /users/user_id Allows a user update their profiles.

Apartments

EndPoint Functionality
GET /apartments Allows a client to view all apartments.
GET /apartments/:apartment_id Allows a client to view a specific apartment.
POST /apartments Allows a user to create an apartment.

Following

EndPoint Functionality
POST /followings Allows user to follow another user.

Reviews

EndPoint Functionality
GET /users/user_id/reviews Allows an client to view a user's reviews.
POST /users/user_id/reviews Allows user to review another user.

Search

EndPoint Functionality
GET /searches/new Allows a client enter search fields.
POST /searches Allows a client to search for apartments.

Author

👤 Alfred Ezaka

Show your support

Give a ⭐️ if you like this project!

Licence

  • MIT