https://github.com/thiagohrcosta/realstate-rails-api
Projeto elaborado para demonstrar competências full-stack desenvolvendo uma API para fornecer dados ao Front-end da aplicação de aluguel de imóveis.
https://github.com/thiagohrcosta/realstate-rails-api
bootstrap css html5 postgresql ruby-on-rails scss-framework
Last synced: 3 months ago
JSON representation
Projeto elaborado para demonstrar competências full-stack desenvolvendo uma API para fornecer dados ao Front-end da aplicação de aluguel de imóveis.
- Host: GitHub
- URL: https://github.com/thiagohrcosta/realstate-rails-api
- Owner: thiagohrcosta
- Created: 2021-06-01T15:44:03.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-03T19:34:40.000Z (about 5 years ago)
- Last Synced: 2025-06-26T02:42:30.669Z (about 1 year ago)
- Topics: bootstrap, css, html5, postgresql, ruby-on-rails, scss-framework
- Language: Ruby
- Homepage: http://api-realsate.herokuapp.com/
- Size: 258 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## RealState - API

Projeto desenvolvido com o objetivo de desenvolver uma API para armazenar dados de imóveis para locação com posterior alimentação do front-end.
Para fins didáticos este projeto foi hospedado no Heroku e pode ser visto [clicando aqui](http://api-realsate.herokuapp.com/).
## Tecnologias utilizadas neste projeto
Este projeto foi criado com:

Gems utilizadas:
- [Devise](https://github.com/heartcombo/devise)
- [Pundit](https://github.com/varvet/pundit)
- [Simple_form](https://github.com/heartcombo/simple_form)
- [Rspec](https://github.com/rspec/rspec-rails)
## Modelagem da API
O modelo elaborado para o presente projeto segue devidamente apresentado abaixo:

A tabela **User** foi implementado mediante a Gem Devise, sendo padrão login por emal e senha, desta forma ocultou-se o campo password por ser inerente ao devise.

## API endpoint
A **API** poderá ser acessada a partir do endpoint `localhost:3000/api/v1/rentals` ou a partir do endpoint hospedado no heroku ([clique aqui](http://api-realsate.herokuapp.com/api/v1/rentals)).

Cada imóvel inserido na API poderá também ser acessado pelo endpoint: `api/v1/rentals/:id`, veja [clicando aqui](http://api-realsate.herokuapp.com/api/v1/rentals/3).
## Home page

A home page foi estilizada usando CSS-grid usando o seguinte:
.rental-grid{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-gap: 16px;
margin: 10px;
}
.rental-card{
margin: 10px 0;
border: 1px solid #E8E8E8;
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
}
Todos os dados apresentados pelo front-end são enviados pela API. Foram limitados 06 resultados na página inicial que são apresentados de forma aleatória ao usuário sempre que ele atualizar a página.
A barra de busca na página principal não foi implementada nesta versão, sendo realizada posteriormente por questão de prazo mediante a gem Pg_search conforme implementado [neste projeto (Imdb_search)](https://github.com/thiagohrcosta/imdb_search), permitindo posterior consulta a partir dos dados enviados pela API.
## Show page
Ao clicar em um determinado imóvel o usuário será automaticamente encaminhado para a rota mediante o id cadastrado pela API, lhe sendo apresentada a seguinte tela:

## Para alugar
Caso o usuário decida clicar na opção **"Para alugar"** ele será encaminhado para uma página onde são listados todos os imóveis apresentados pela API.

Novamente, caso o usuário clique em **"Ver detalhes"** ele será redirecionado para a página do imóvel conforme apresentada no item anterior.
O menu de busca lateral ainda não foi implementado nesta versão atual, sendo apresentado apenas sua versão front-end. Para criar o estilo visualizado foi utilizado **Flex** e **Bootstrap**.
## Painel
Caso o usuário esteja cadastrado no site e tenha poderes (neste momento foi deixado liberado para qualquer usuário para fins de testes) ele poderá acessar o painel administrativo onde poderá cadastrar novos imóveis, editar ou remover. Toda a operação CRUD refletirá na API.

Cada usuário apenas poderá ver no painel administrativo os imóveis que ele cadastrou.

## Login
Páginas não sensíveis são acessadas por qualquer usuário, contudo, para cadastrar, editar ou apagar imóveis será necessário se cadastrar previamente.

Existem dois usuários padrões cadastrados no banco de dados que podem ser utilziados para teste:
**Usuário 1 - admin - 6 imóveis cadastrados**
- email: admin@admin.com
- senha: 123456
**Usuário 2 - thiago - 2 imóveis cadastrados**
- email: thiago@admin.com
- senha: 123456
## Testes
Para a realização de testes unitários foi utilizada a gem Rspec, sendo criado 11 testes.

Para rodar os testes basta executar o comando `rspec spec/models` dentro da pasta do arquivo.
## Como rodar a aplicação?
Este projeto foi desenvolvido em :
- Ruby (2.6.6);
- Rails (6.1.3.2);
Caso você já tenha instalado o Ruby on Rails nas versões acima apontadas, após efetuar o download do projeto é necessário rodar os seguintes comandos:
- yarn install;
Caso o projeto continue apresentando erros rode os seguintes comandos:
- bundle install;
- rails db:create (caso o banco de dados não esteja criado);
- rails db:migrante (para implementar as migrações no bando de dados);
- rails db:seed (para popular a API);
Caso alguma migração ou seed apresente erro você poderá tentar o comando:
- rails db:reset
Tudo estando certo, basta rodar o comando
- rails s