House Selling and Buying Tracking System
You are tasked with creating an application for realtors and house buyers.
There will be three types of users in the system:
- House hunter
The system should have a preconfigured admin with at least the following attributes: email (unique for each account), name and password.
An admin should be capable of performing all operations performed by realtor or house hunter, and admin accounts cannot be deleted.
Admins should be able to:
- Log in with an email and password.
- Edit profile.
- Create realtor and house hunter accounts.
- Create real estate company. A RealEstateCompanyshould have at least the following attributes:
- Website (use a regex to assure that the URL has a valid syntax)
- Address (location of headquarters, e.g., Raleigh, NC)
- Size (number of realtors, such as 1-50, 51-200, 201-500, 501-1000, 1000+)
- Founded (in what year)
- Revenue (e.g., $100 to $500 million per year)
- Synopsis (text field)
- View the list of users and their profile details (except password).
- View the list of real estate companies, along with detailed information.
- View the list of houses, along with detailed information.
- View all fields of inquiries (defined below) from house hunters.
- Edit or delete real estate companies/users (realtors or house hunters)/houses/inquiries from the system.
A realtor should have at least the following attributes: email (unique for each account), name, password and real estate company id (foreign key), phone.
Anyone can sign up as a realtor using their email, name and password. After signing up, they can perform the following tasks:
- Log in with email and password.
- Edit their own profile to choose an existing real estate company or add a new company. Each realtor can only work for one company.
- Edit their own company information.
- List a house to be sold. A Houseshould have at least following attributes:
- Real estate company id (foreign key)
- Square footage (such as 2000 ft2, 2500 st2)
- Year built
- Style (single family house, apartment, condos)
- List price
- How many floors
- Basement (yes, no)
- Current house owner
- Contact information for listing realtor
- Id’s of potential buyers (a list of foreign keys —may be empty)
- Edit house information that they have posted. Cannot edit houses posted by other realtor.
- View all houses (including those listed by others).
- Upload and add pictures to all the houses listed by this realtor’s company.
- Remove a house (previously listed by this realtor).
- View all the potential buyers for any house in his/her company and their profile details (except password).
- View all inquiries from house hunters for any house in the company.
- Submit replies for all inquiries of houses in the company.
A house hunter should have at least the following attributes:
- email (unique for each account),
- full name,
- preferred contact method (email, text, or phone).
Anyone can sign up as a house hunter using their email, name and password. After signup, they can perform the following tasks:
- Log in with email and password.
- Edit their own profile.
- Search available houses using filters, such as price range, square footage range, location.
- Select houses they are interested in and add them to the house hunter’s interest list.
- View information on all real estate companies
- View information on all houses (except the “potential buyers” attribute)
- Submit an inquiry for a house they are interested in. An Inquiryshould have at least the following attributes:
- Id (created when the inquiry is saved)
- User id (foreign key)
- Message content
- Edit or delete an inquiry they previously submitted.
- There will be only one admin in the system, and the account is preconfigured. The admin account cannot be deleted.
- Someone can sign up as a realtor and a house hunter with the same email address. You should design a way to allow users switch between different roles.
- Each realtor can only work for one real estate company.
- Each real estate company can have multiple realtors.
- Each realtor can list multiple houses.
- If a realtor does not have a company, (s)he cannot post a listing. A realtor can only post houses belong to his/her company.
- Each house hunter can be interested in and send inquiries to multiple houses. They can also remove themselves from the potential buyers list of a house.
Frequently Asked Questions (FAQs)
- Can we use any 3rd party gems?
- Yes, you can.
- When a user creates an account, would they need to specify what type of user they are?
- As mentioned above, after logging in as one role, the user can switch between different roles.
- If the admin account is predefined, how does the admin know how to login? Do we just give the admin a predefined login and password?
- Are all fields compulsory?
- No, You can leave some fields blank when saving records to DB.
- Would a bare minimum UI consist of a page of links and simple HTML?
- As long as the functionalities work, it is ok.
- Is the admin able to edit the existing information for realtors and/or house hunters?
- As mentioned above, an admin should be capable of performing all operations performed by realtor or house hunter.
- Realtor can “”view all houses”” – does this include all houses or only houses posted by themselves.
- All listings. But realtor can only edit houses s/he posted.
- What happens to a house posted by a realtor when the realtor edits his profile and changes his/her company?
- Good question. Your design should be able to handle this situation.
- Admin has the right to create accounts of a realtor and a house hunter. So, when the admin creates an account for house hunter, what does it mean? Will the admin create it for a house hunter with his/her email address? “
- How are the 70 points for this program split across the modules and functions we are supposed to implement? Is the extra credit included in 70, or can we score more than 70?
- You can score more than 70 if you finish all extra credit tasks.
- Do I need to use a database?
- Of course.
Local development environment
- You could choose to use a lightweight Lubuntu imagecreated by Ferry
(firstname.lastname@example.org). If Windows’ unzip does not work, please use 7zip instead.
- Thoroughly test one Model and one Controller (prefer RSpectesting framework).
Please ensure that your deployment is always accessible for grading. You can deploy your app to any of the following. (Try to perform continuous deployment)
- Heroku or any similar PaaS (OpenShift etc) with free plans
- Amazon AWS
- NCSU VCL (choose [CSC517, S18] Ruby on Rails / Expertiza)
Bonus (Extra Credit)
You can do any or all of the below for extra credit (each item below is worth 5 points).
- When a realtor replies a house hunter’s inquiry, send email to the corresponding house hunter.
- All users can use their LinkedIn/Google/Facebook account (implementing any one of them is enough) account to log into the system.
Your submission in Expertiza should consist of the following-
- A link to your deployed application
- A link to your repository (use github.ncsu.edu to host your repository)
- Credentials for the preconfigured admin and any other information that reviewers would find useful should be in the README.md file in this repository
- Some information that reviewers may find useful is:
- how to test various features (e.g., how to access certain pages, what details to enter in the form etc.)
- use cases for some of the edge-case scenarios (e.g., what will happen if admin tries to delete a real estate company which currently has several houses.)