2.7 KiB
2.7 KiB
Catálogo Pessoal de Vídeos & Dicas
Sistema PHP puro + MySQL para catalogar vídeos, artigos e anotações pessoais.
Requisitos
- PHP 8.0+
- MySQL 5.7+ / MariaDB 10.3+
- Extensão PDO + pdo_mysql habilitada
Instalação
1. Banco de dados
mysql -u root -p -e "CREATE DATABASE catalogo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p catalogo < catalogo_schema.sql
2. Configurar conexão
Edite includes/db.php com suas credenciais:
define('DB_HOST', 'localhost');
define('DB_NAME', 'catalogo');
define('DB_USER', 'root');
define('DB_PASS', 'sua_senha');
3. Permissão de upload
chmod 755 uploads/
4. Servidor de desenvolvimento
# Na raiz do projeto:
php -S localhost:8000
Acesse: http://localhost:8000
5. Login padrão
- E-mail: admin@local.dev
- Senha: admin123
⚠️ Troque a senha em produção! Use
password_hash('nova_senha', PASSWORD_BCRYPT)e atualize na tabelausuario.
Estrutura de arquivos
/
├── index.php # Dashboard
├── login.php # Tela de login
├── logout.php
├── assets/
│ ├── css/style.css # Estilos (tema claro/escuro)
│ └── js/theme.js # Toggle de tema
├── includes/
│ ├── db.php # Conexão PDO
│ ├── auth.php # Sessão e autenticação
│ ├── helpers.php # Utilitários (upload, tags, CSRF...)
│ └── layout.php # Header, sidebar, footer
├── pages/
│ ├── conteudo/ # CRUD de conteúdos
│ │ ├── list.php
│ │ ├── form.php # Criar + Editar
│ │ ├── view.php
│ │ └── delete.php
│ ├── nota/ # CRUD de notas + upload
│ │ ├── list.php
│ │ ├── form.php
│ │ ├── view.php
│ │ └── delete.php
│ └── lookup/ # CRUD genérico: Tipo, Fonte, Tag
│ ├── _crud.php # Motor reutilizável
│ ├── tipo.php
│ ├── fonte.php
│ └── tag.php
└── uploads/ # Arquivos enviados (gitignore!)
Funcionalidades
- ✅ Login com sessão PHP + bcrypt
- ✅ CSRF em todos os formulários POST
- ✅ Dashboard com estatísticas
- ✅ Catálogo de conteúdos com filtros (tipo, fonte, ranking, busca)
- ✅ Notas com upload de arquivo (qualquer tipo, máx. 20MB)
- ✅ Tags N:N para conteúdos e notas
- ✅ Ranking de 1 a 5 estrelas (interativo)
- ✅ CRUD completo: Tipos, Fontes, Tags
- ✅ Tema claro/escuro persistido em localStorage
- ✅ Escape de output (XSS protection)