[Rails] I tried to summarize the passion and functions of the beginners who created the share house search site!

App overview

It is an application that allows you to easily search for share house properties in Tokyo while referring to the real evaluation of the share house.

--You can search for share houses in Tokyo --Implemented a function to post reviews of properties that you have visited or lived in before with points. --Implemented a function that allows you to manage the properties you care about on My Page top.gif

It is open to the public on the following page! https://share-house-app.herokuapp.com/

Background that made this app

** From my own troubled experience and the idea that "if there is such a thing, more share house residents will increase" **. Specifically, it is as follows.

1.I want to share the goodness of a share house
2.There is no site where you can get real information unique to a share house

1. I want to share the goodness of a share house

I moved to Tokyo from Kansai when I was 22 years old and have lived in a share house for 8 women only for a year and a half. The reason I chose a share house when I came to Tokyo is that I can live in a convenient location with a low rent including the initial cost. I chose a share house based only on the price and location options, but in reality, I can help each other in the event of poor physical condition or a disaster, make friends, receive mail when I am away, and do not need to clean the bath and toilet. I felt the benefits more than I thought I would live in. On the other hand, when I talked about living in a share house, I was often surprised and felt that there were few people who had experience in a share house.

From there, ** "I want you to know more about the goodness of share houses, and I want you to think of share houses as an option when looking for a property to live alone!" ** I came to think, "Let's make a share house version property search site!"

2. There is no site where you can get real information unique to a share house.

When I first searched for a share house, I had a hard time not knowing from the site which site to look for or what the atmosphere of the share house was. Because share houses, including my friends, live together, I start moving in with anxieties that cannot be understood from the inside, such as human relationships, the sanitary environment of the common area, noise, and smell. Therefore, I thought, "Isn't it convenient to create a site that can aggregate word-of-mouth information of tenants and inspectors for each property?", "I want to create a service that can realize that," ** I arrived.

Functions list

All the functions added to TOKYO Share Real Estate are the following ** 16 functions **.

function Gem
Login function devise
Property registration function(CRUD) ×
Room information registration function (CRUD one-to-many association) ×
Save function(Ajax) ×
Review posting / evaluation function(Raty.js) ×
Area search ransack
Commitment condition search ransack
Search result sorting function ransack
Map display function (google map API) geocoder
Icon display function indicating the presence or absence of shared equipment(Many-to-many association) ×
Pagination function kaminari
Graph display of word-of-mouth evaluation results(css) ×
Image upload function CarrierWave
My page function ×
Easy login function ×
Administrator function ×

From here, I will explain the 7 functions that I have devised and implemented in particular!

1. Save function

Feature overview

--Users can save the functions they think are "good!" With the touch of a button, and easily look back at the saved property information.

タイトルなし.gif

What I devised when implementing

--Asynchronous implementation using ajax. ――Reason for implementation: When choosing a property, there are few people who make a prompt decision compared to other shopping and shop selection, so I thought that I would compare a lot of property information and carefully consider it. In considering various information, I thought that it was essential to have a function that allows me to save the properties I liked and look back at them immediately afterwards, so I implemented them.

2. Review posting / evaluation function

Feature overview

――You can post reviews by dividing the pattern at the time of viewing and moving in. --Register and display review points using stars raty gif.gif

What I devised when implementing

- Users don't feel pain when posting reviews and Can provide useful information for share house search users Concise A simple post form. --In order to dispel anxiety when choosing a share house, the evaluation items are "cleanliness of common areas", "noise", "location", "human relations" . Added 4 items that can be understood only by a person. --Implemented so that you can see the evaluation of the property at a glance by expressing the evaluation with ★ using the jQuery plug-in (Raty).

3. Graph display function

Feature overview

--Display the word-of-mouth evaluation score of the property in a bar graph for each item --Implemented by combining conditional branching in if statement of ruby ​​and css

スクリーンショット 2020-12-19 21.19.29.png

What I devised when implementing

--Select a simple bar graph display so that you can see the property evaluation at a glance. --Implemented using css instead of javascript for the easiest and hassle-free implementation. --Refactored to avoid repeating the same code using partials.

4. Area search function

Feature overview

--Area search is possible by entering the area name in the search box. --Area search is possible from the button in the area search box area search gif.gif

What I devised when implementing

--Simple and easy-to-search design --Use csv import rake task when inputting original data of area name.

5. Discerning search Search

Feature overview

--Use ransack - "Large number of people" "Rooms of 8 tatami mats or more" "Near the station" "Rent 50,000 or less" "Enrichment of privacy" "Emphasis on community" "Private room" Can be searched from. (Search items will be added in the future)

kodawari.gif

What I devised when implementing

――By using a search button that uses images, we made it easier to get an image of the property.

" Large number of people "" Rooms over 8 tatami mats "" Near the station " Search by conditions that specify the range of each number with ransack

" Rent 50,000 or less " Search across columns of related models (parents and children) with ransack

" Privacy enhancement "" Community-oriented " A partial match search is performed to see if the column (string type) that describes other information about the property contains the characters "auto lock, key", "event event, party". (Implementation method will be fixed)

" Private room " Create a room type column with boolean type and conditional branch with true/false

6. Map display function

Feature overview

-Use Google map API to map the location of the property スクリーンショット 2020-12-19 20.09.10.png

What I devised when implementing

This is one of the places where I got stuck in creating this app.

【error contents】
The geocoder doesn't work and changing the address in the view doesn't add latitude and longitude to the table.

【solution】
Enable Geocoding API in addition to google map API and remove the restrictions of the Google API HTTP referrer

7. My page function

Feature overview

--You can browse the list of properties posted by word of mouth. --You can browse the list of saved properties --You can browse the list of registered properties

mypage gif.gif

What I devised when implementing

--The property information display part has been refactored using partials so that the same code is not repeatedly entered in the view of each page. --Displays the number of registered properties, the number of reviewed properties, and the number of saved properties.

8. Additional implementation planned

--Complicated search function --Addition of room furniture information page --Post multiple property images and display multiple --Inquiry function to property posters --Test code using rspec --Responsive support --Display the word-of-mouth total result on the administrator screen --Deploy to AWS

See the Trello URL for details. https://trello.com/b/Cdp4Es2l/%E3%82%B7%E3%82%A7%E3%82%A2%E3%83%8F%E3%82%A6%E3%82%B9%E6 % A4% 9C% E7% B4% A2% E3% 82% B5% E3% 82% A4% E3% 83% 88

9. Other points

・ Hearing with friends who actually live in the share house and friends who are interested in the share house about the importance and concerns when searching for properties, consider the specifications of the application ・ Specifications that can handle property information only for accounts with administrator privileges ・ Developed while carefully managing tasks with Pururiku and Trero on Github

10. Technology used, etc.

--Language: Ruby --Framework: Ruby on Rails --Front: html, Sass, JavaScript (jQuery) --Infrastructure: heroku --Source code control: GitHub --Other: Task management with Trello

11. Environment

Recommended Posts

[Rails] I tried to summarize the passion and functions of the beginners who created the share house search site!
I tried to summarize the basics of kotlin and java
[For Swift beginners] I tried to summarize the messy layout cycle of ViewController and View
I tried to summarize the methods of Java String and StringBuilder
I tried to summarize the key points of gRPC design and development
I tried to summarize the state transition of docker
I tried to introduce Bootstrap 4 to the Rails 6 app [for beginners]
I tried to summarize the basic grammar of Ruby briefly
[Rails 6.0, Docker] I tried to summarize the Docker environment construction and commands necessary to create a portfolio
[Rails] Read the RSS of the site and return the contents to the front
I tried to make the "Select File" button of the sample application created in the Rails tutorial cool
I tried to summarize the Stream API
[Rails] Articles for beginners to organize and understand the flow of form_with
I tried to measure and compare the speed of GraalVM with JMH
Rails API mode I tried to implement the keyword multiple search function using arrays and iterative processing.
[Rails] I tried to raise the Rails version from 5.0 to 5.2
I tried to organize the session in Rails
[Beginner's point of view] I tried to solve the FizzBuzz problem "easily" with Ruby!
05. I tried to stub the source of Spring Boot
I tried to reduce the capacity of Spring Boot
[Ruby On Rails] How to search and save the data of the parent table from the child table
I tried to verify this and that of Spring @ Transactional
[Swift] I tried to implement the function of the vending machine
I tried JAX-RS and made a note of the procedure
Let's summarize how to extend the expiration date of Rails
I tried to summarize personally useful apps and development tools (development tools)
I tried to build the environment of WSL2 + Docker + VSCode
I tried to summarize personally useful apps and development tools (Apps)
[Rails] I tried to implement "Like function" using rails and js
I tried to express the result of before and after of Date class with a number line
I tried to solve the problem of "multi-stage selection" with Ruby
I tried to summarize the words that I often see in docker-compose.yml
I tried to implement Ajax processing of like function in Rails
[Rails] How to get the URL of the transition source and redirect
I tried to summarize what was asked at the site-java edition-
I tried to sort the data in descending order, ascending order / Rails
I tried to build the environment of PlantUML Server with Docker
[Ruby] Tonight, I tried to summarize the loop processing [times, break ...]
I tried to implement the image preview function with Rails / jQuery
Special Lecture on Multi-Scale Simulation: I tried to summarize the 5th
I tried to understand how the rails method "redirect_to" is defined
Special Lecture on Multi-Scale Simulation: I tried to summarize the 8th
I tried to check the operation of gRPC server with grpcurl
I tried to understand how the rails method "link_to" is defined
Special Lecture on Multi-Scale Simulation: I tried to summarize the 7th
I tried to solve the problem of Google Tech Dev Guide
I don't really understand the difference between swift Error and NSError, so I tried to summarize it myself.
I tried to summarize iOS 14 support
I tried to explain the method
[Rails] I tried deleting the application
I tried to summarize Java learning (1)
I tried to summarize Java 8 now
I tried to summarize the stumbling points when developing an Android application
[Rails] The 12 functions that beginners have added to the problem-solving portfolio are these!
[Ruby] I want to extract only the value of the hash and only the key
[Introduction to Java] I tried to summarize the knowledge that I think is essential
Don't forget to summarize the features and points of the flea market apps
I want to pass the argument of Annotation and the argument of the calling method to aspect
[CircleCI] I was addicted to the automatic test of CircleCI (rails + mysql) [Memo]
I tried to make full use of the CPU core in Ruby
I tried to visualize the access of Lambda → Athena with AWS X-Ray