Local para os usuários colocarem projetos e fotos de casas dos sonhos! E onde essas possam ser avaliadas por outros usuários. Qualquer usuário pode postar qualquer casa:
- Arquitetos podem postar projetos,
- Corretores de imóveis podem anunciar casas de seus clientes,
- Usuários podem postar casas "Virtuais" criadas em programas e em jogos como "The Sims" ou "Minecraft".
🎉 PROJETO 100% FUNCIONAL - TODAS AS FUNCIONALIDADES IMPLEMENTADAS! 🎉
- ✅ Sistema de autenticação de usuários (Laravel Breeze)
- ✅ CRUD completo de casas com validação e autorização
- ✅ Busca e filtragem avançada (localização, tipo, preço, quartos, banheiros, vagas)
- ✅ Sistema de avaliações (ratings) com estrelas de 1-5
- ✅ Comentários nas avaliações
- ✅ Cálculo automático de média de avaliações
- ✅ Proteção contra auto-avaliação
- ✅ Uma avaliação por usuário por casa
- ✅ Sistema de favoritos com toggle em tempo real (AJAX)
- ✅ Sistema de solicitação de contato com status (pendente, contatado, fechado)
- ✅ Compartilhamento em redes sociais (Facebook, Twitter, WhatsApp)
- ✅ Upload de imagens real com armazenamento local
- ✅ Suporte para URL de imagens externas
- ✅ Validação completa de formulários (Form Requests)
- ✅ Autorização e segurança (Policies, Gates)
- ✅ Página de listagem de favoritos com paginação e ações
- ✅ Página de solicitações recebidas com gerenciamento de status
- ✅ Página de solicitações enviadas para acompanhamento
- ✅ Navegação completa com links para todas as funcionalidades
- ✅ Empty states em todas as páginas sem dados
- ✅ Mensagens de feedback para todas as ações
- ✅ Formulários com dupla opção (upload de arquivo OU URL)
- ✅ Preview de imagem atual no formulário de edição
- ✅ Filtros com persistência de valores após busca
- ✅ Modals interativos para solicitação de contato
- ✅ Migrations completas para todas as tabelas
- ✅ Relacionamentos Eloquent configurados
- ✅ Seeders com dados realistas (Users, Homes, Ratings, Favorites, Contact Requests)
- ✅ Constraints de integridade (unique, foreign keys, cascade delete)
Funcionalidades que poderiam ser adicionadas em versões futuras (não são necessárias para o MVP atual):
- 📊 Dashboard com estatísticas das casas do usuário (visualizações, favoritos, avaliações médias)
- 📈 Gráficos de desempenho das casas
- 🔔 Sistema de notificações para novas solicitações de contato
- 🖼️ Galeria de múltiplas imagens por casa (atualmente suporta 1 foto)
- 🗺️ Integração com mapas (Google Maps/Leaflet) para visualizar localização
- 🔍 Comparação entre casas (comparar até 3 casas lado a lado)
- 📜 Histórico de visualizações do usuário
- 🏷️ Sistema de tags/categorias adicionais (moderno, clássico, sustentável, etc.)
- 💬 Sistema de mensagens diretas entre usuários
- 🚨 Sistema de denúncias/reports para conteúdo inadequado
- 🧪 Testes automatizados (Unit Tests, Feature Tests)
- 🚀 API REST para aplicação mobile
- 🌍 Internacionalização (i18n) - suporte a múltiplos idiomas
- 📄 Exportação de dados (PDF, Excel)
- 🔧 CI/CD Pipeline para deploy automatizado
- ⚡ Cache de queries e resultados
- 🔍 Full-text search com Elasticsearch/Meilisearch
- 📧 Envio de emails para notificações importantes
- 🌙 Modo escuro (Dark mode)
- ♿ Melhorias de acessibilidade (WCAG 2.1)
- 📱 Progressive Web App (PWA)
- 🎨 Temas personalizáveis
- Laravel 10
- Laravel Blade
- Laravel Breeze
- Tailwind CSS
- MySQL
- AJAX (Vanilla JavaScript)
- PHP 8.1+
- Composer
- Node.js & NPM
- MySQL 5.7+ ou MariaDB
- Git
git clone https://github.com/israelcena/dreamhouse.git
cd dreamhouse# Dependências PHP
composer install
# Dependências JavaScript
npm install
npm run build# Copie o arquivo de exemplo
cp .env.example .env
# Gere a chave da aplicação
php artisan key:generateEdite o arquivo .env e configure suas credenciais do MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dreamhouse
DB_USERNAME=seu_usuario
DB_PASSWORD=sua_senha# Criar as tabelas
php artisan migrate
# Popular com dados de teste
php artisan db:seed
# Criar link simbólico para storage (necessário para upload de imagens)
php artisan storage:linkOpção 1: Servidor interno do PHP
php artisan serveAcesse: http://localhost:8000
Opção 2: Laravel Sail (Docker)
./vendor/bin/sail up -dAcesse: http://localhost
Após executar os seeders, você terá:
- 10 usuários (user1@test.com até user10@test.com, senha:
password) - 20 casas cadastradas
- Avaliações aleatórias para as casas
- Favoritos pré-configurados
- Solicitações de contato de exemplo
O projeto possui um sistema completo de avaliações para as casas cadastradas:
Características:
- Avaliação por estrelas: De 1 a 5 estrelas
- Comentários opcionais: Usuários podem adicionar comentários às suas avaliações
- Média de avaliações: Cálculo automático da média de avaliações de cada casa
- Proteções:
- Usuários não podem avaliar suas próprias casas
- Cada usuário pode avaliar cada casa apenas uma vez
- Usuários só podem excluir suas próprias avaliações
Como usar:
- Acesse uma casa específica
- Se estiver autenticado e não for o proprietário, verá um formulário de avaliação
- Selecione de 1 a 5 estrelas
- Opcionalmente, adicione um comentário
- Clique em "Enviar Avaliação"
Permite aos usuários salvar suas casas preferidas:
Características:
- Toggle de favoritos em tempo real (AJAX)
- Feedback visual instantâneo
- Lista de favoritos no perfil do usuário
- Um clique para adicionar/remover
Como usar:
- Clique no ícone de coração na página da casa
- A casa será adicionada/removida dos favoritos instantaneamente
- Acesse
/favoritospara ver todas as suas casas favoritadas
Os usuários podem solicitar contato com o proprietário da casa:
Características:
- Modal de contato com formulário completo
- Pré-preenchimento com dados do usuário autenticado
- Validação de dados
- Status de solicitação (pendente, contatado, fechado)
- Proprietários podem gerenciar solicitações recebidas
Como usar:
- Clique em "Solicitar Contato" na página da casa
- Preencha o formulário com nome, email, telefone e mensagem
- Aguarde o retorno do proprietário
- Proprietários acessam
/solicitacoes-contatopara ver as solicitações
Compartilhe casas nas redes sociais:
Redes suportadas:
Como usar:
- Clique nos ícones de redes sociais na página da casa
- A página será aberta com o compartilhamento pré-configurado
Sistema completo de upload de imagens:
Características:
- Upload real de arquivos (JPEG, PNG, JPG, GIF, WEBP)
- Tamanho máximo: 5MB
- Armazenamento local em
/storage/homes - Também suporta URLs externas
- Remoção automática de imagens ao excluir casa
Como usar:
- No formulário de cadastro/edição de casa
- Escolha entre:
- Upload de arquivo: Selecione uma imagem do seu computador
- URL externa: Cole o link de uma imagem online
Sistema de filtros avançados para encontrar a casa ideal:
Filtros disponíveis:
- Localização/endereço
- Tipo de imóvel (Casa, Apartamento)
- Faixa de preço (mínimo e máximo)
- Número mínimo de quartos
- Número mínimo de banheiros
- Número mínimo de vagas
- Apenas casas ativas
Características:
- Filtros persistem após a busca
- Botão de limpar filtros
- Paginação dos resultados
- Mensagem quando não há resultados
- Informações de autenticação dos usuários
- Relacionamentos: casas, avaliações, favoritos, solicitações de contato
- Dados completos das casas (endereço, tipo, preço, área, quartos, banheiros, vagas)
active: Flag para ativar/desativar anúncio- Relacionamentos: usuário (proprietário), avaliações, favoritos, solicitações
user_id: ID do usuário que avaliouhome_for_rent_id: ID da casa avaliadarating: Nota de 1 a 5comment: Comentário opcional (TEXT)- Constraint unique:
(user_id, home_for_rent_id)- previne avaliações duplicadas
user_id: ID do usuáriohome_for_rent_id: ID da casa favoritada- Constraint unique:
(user_id, home_for_rent_id)- previne duplicatas - Cascade delete: remove favorito se usuário ou casa for excluído
user_id: ID do usuário que solicitouhome_for_rent_id: ID da casaname,email,phone: Dados de contatomessage: Mensagem do interessado (TEXT)status: ENUM ('pending', 'contacted', 'closed')- Permite múltiplas solicitações do mesmo usuário para a mesma casa
- Explorar Casas - Veja todas as casas cadastradas e use os filtros de busca
- Dashboard - Gerencie suas casas cadastradas
- Favoritos - Acesse suas casas favoritadas
- Solicitações - Veja solicitações de contato recebidas
Como Anunciante:
- Faça login/registro
- Acesse "Dashboard"
- Clique em "Cadastrar Nova Casa"
- Preencha o formulário (upload de imagem ou URL)
- Aguarde avaliações e solicitações de contato
- Gerencie solicitações em "Solicitações"
Como Visitante:
- Faça login/registro
- Navegue por "Explorar Casas"
- Use filtros para encontrar a casa ideal
- Clique em uma casa para ver detalhes
- Avalie a casa (1-5 estrelas + comentário)
- Adicione aos favoritos (clique no ❤️)
- Solicite contato com o proprietário
- Acompanhe suas solicitações em "Minhas Solicitações"
# Resetar banco de dados e popular novamente
php artisan migrate:fresh --seed
# Limpar cache
php artisan cache:clear
php artisan config:clear
php artisan view:clear
# Verificar rotas
php artisan route:list
# Executar apenas um seeder específico
php artisan db:seed --class=RatingSeederGET / - Página inicial
GET /login - Login
GET /register - Registro
GET /dashboard - Dashboard do usuário (autenticado)
GET /homes - Listagem de casas
GET /homes/{id} - Detalhes da casa
GET /favoritos - Lista de favoritos
GET /solicitacoes-contato - Solicitações recebidas
GET /minhas-solicitacoes - Solicitações enviadas
POST /homes/{id}/rating - Criar avaliação
POST /homes/{id}/favorite/toggle- Toggle favorito (AJAX)
POST /homes/{id}/contato - Enviar solicitação de contato
Contribuições são bem-vindas! Por favor:
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT.
Israel Cena
- GitHub: @israelcena
- LinkedIn: Israel Cena
⭐ Se este projeto foi útil para você, considere dar uma estrela no GitHub!
