Skip to content

Leonardostavares/CRUD-Posts

Repository files navigation

📝 Sistema de Gerenciamento de Posts

Sistema web desenvolvido em Laravel 12 para gerenciamento de posts com categorização e relatórios.

📋 Escopo do Projeto

Este sistema permite:

  • CRUD completo de Posts - Criar, listar, visualizar, editar e excluir posts
  • Sistema de Categorias - Organização de posts por categorias
  • Sistema de Usuários - Controle de autoria dos posts
  • Exclusão em Massa - Funcionalidade para excluir múltiplos posts
  • Relatórios - Visualização de posts por categoria e principais autores
  • Validações - Controle de integridade dos dados

🗄️ Estrutura das Tabelas

Users 👥

- id (PRIMARY KEY)
- name (string)
- email (string, unique)
- password (string)
- created_at, updated_at (timestamps)

Categories 📂

- id (PRIMARY KEY)
- name (string, unique)
- description (string, nullable)
- created_at, updated_at (timestamps)

Posts 📰

- id (PRIMARY KEY)
- category_id (FOREIGN KEYcategories.id)
- user_id (FOREIGN KEYusers.id)
- title (string, min: 3 caracteres)
- text (text)
- published_at (datetime, nullable)
- created_at, updated_at (timestamps)

Sessions 🔐

- id (PRIMARY KEY)
- user_id (FOREIGN KEYusers.id, nullable)
- ip_address (string)
- user_agent (text)
- payload (longtext)
- last_activity (integer)

🏗️ Decisões de Modelagem

Relacionamentos

  • Users → Posts: Um usuário pode ter muitos posts (1:N)
  • Categories → Posts: Uma categoria pode ter muitos posts (1:N)
  • Posts: Cada post pertence a um usuário e uma categoria

Constraints e Validações

  • Email único para usuários
  • Nome único para categorias
  • Título mínimo de 3 caracteres para posts (constraint no BD)
  • Chaves estrangeiras com integridade referencial
  • Published_at nullable para permitir rascunhos

Índices

  • Chaves primárias automáticas
  • Índices em chaves estrangeiras
  • Email único indexado

🚀 Como Executar o Projeto

Pré-requisitos

  • PHP 8.2+
  • Composer
  • MySQL/PostgreSQL/SQLite
  • Node.js (para assets, se necessário)

1. Clonar e Instalar Dependências

# Clone o repositório
git clone [url-do-repositorio]
cd cadastrousuarios

# Instalar dependências PHP
composer install

2. Configurar Ambiente

# Copiar arquivo de configuração
cp .env.example .env

# Gerar chave da aplicação
php artisan key:generate

3. Configurar Banco de Dados

Edite o arquivo .env com suas configurações:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cadastrousuarios
DB_USERNAME=seu_usuario
DB_PASSWORD=sua_senha

4. Executar Migrações

# Criar tabelas no banco
php artisan migrate

5. Popular Banco (Seeders)

# Executar seeders para dados iniciais
php artisan db:seed

# Ou seeders específicos
php artisan db:seed --class=UserSeeder
php artisan db:seed --class=CategorySeeder
php artisan db:seed --class=PostSeeder

6. Iniciar Servidor

# Servidor de desenvolvimento
php artisan serve

# Aplicação disponível em: http://localhost:8000

7. Comandos Úteis

# Limpar cache
php artisan cache:clear

# Listar rotas
php artisan route:list

# Reset completo do banco
php artisan migrate:fresh --seed

🛣️ Rotas Disponíveis

Método URL Ação Nome da Rota
GET / Página inicial -
GET /posts Listar posts posts.index
GET /posts/create Criar post posts.create
POST /posts Salvar post posts.store
GET /posts/{id} Ver post posts.show
GET /posts/{id}/edit Editar post posts.edit
PUT /posts/{id} Atualizar post posts.update
DELETE /posts/{id} Excluir post posts.destroy
GET /reports/post-per-category Relatório por categoria reports.post-per-category
GET /reports/top-authors Top autores reports.top-authors

🔧 Funcionalidades Técnicas

Validações Implementadas

  • Título obrigatório (mín. 3 caracteres)
  • Texto obrigatório
  • Categoria deve existir
  • Data de publicação válida

Tratamento de Erros

  • Try-catch nos controllers
  • Logs de erro
  • Mensagens de feedback ao usuário
  • Validação de existência de registros

Segurança

  • Validação de entrada
  • Prepared statements (Query Builder)
  • CSRF protection (Laravel padrão)

🎯 Próximas Melhorias

  • Sistema de autenticação completo
  • Upload de imagens para posts
  • Sistema de comentários
  • Tags para posts
  • Busca e filtros avançados
  • API RESTful
  • Testes automatizados

Desenvolvido com ❤️ usando Laravel 12

About

Crud completo de posts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages