From f3df17aaa4216d1f2d82af08267c0185da970d96 Mon Sep 17 00:00:00 2001 From: wander Date: Wed, 3 Jun 2026 15:42:50 -0300 Subject: [PATCH] Enviar arquivos para "/" --- Dockerfile | 20 +++++++++++ Leiame.txt | 19 ++++++++++ README.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++ app.zip | Bin 0 -> 36185 bytes 4 files changed, 139 insertions(+) create mode 100644 Dockerfile create mode 100644 Leiame.txt create mode 100644 README.md create mode 100644 app.zip diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..58dd97b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM php:8.2-apache + +# Utilitários + extensões PHP +RUN apt-get update && apt-get install -y unzip \ + && docker-php-ext-install pdo pdo_mysql \ + && a2enmod rewrite \ + && sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +# Copia e extrai o zip na raiz do Apache +COPY app.zip /tmp/app.zip +RUN unzip /tmp/app.zip -d /var/www/html/ \ + && rm /tmp/app.zip + +# Permissões +RUN mkdir -p /var/www/html/uploads \ + && chown -R www-data:www-data /var/www/html \ + && chmod 755 /var/www/html/uploads + +EXPOSE 80 diff --git a/Leiame.txt b/Leiame.txt new file mode 100644 index 0000000..ccb0f1f --- /dev/null +++ b/Leiame.txt @@ -0,0 +1,19 @@ +1. PHP 8.2 + Apache (imagem base) +2. apt install unzip (para extrair o zip) +3. pdo + pdo_mysql (já resolvido antes) +4. mod_rewrite (Apache) +5. COPY app.zip → /tmp/app.zip +6. unzip → /var/www/html/ +7. rm app.zip (limpa o temporário) +8. cria uploads/ + permissões www-data +///////////////////////// +Como usar no Coolify +O repositório/contexto de build precisa ter dois arquivos na raiz: + +Dockerfile +app.zip ← zip com todas as pastas da aplicação +⚠️ Atenção com a estrutura do zip — ao criar o app.zip, zipar o conteúdo da pasta, não a pasta em si. Exemplo correto no terminal: + +# Dentro da pasta do projeto: +zip -r app.zip assets includes pages index.php login.php logout.php .env.example +Se o zip criar uma subpasta interna (ex: app/index.php), o unzip extrai para /var/www/html/app/ em vez de /var/www/html/ — e o site não abre. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..92284a5 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# 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 + +```bash +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: + +```php +define('DB_HOST', 'localhost'); +define('DB_NAME', 'catalogo'); +define('DB_USER', 'root'); +define('DB_PASS', 'sua_senha'); +``` + +### 3. Permissão de upload + +```bash +chmod 755 uploads/ +``` + +### 4. Servidor de desenvolvimento + +```bash +# 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 tabela `usuario`. + +--- + +## 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) diff --git a/app.zip b/app.zip new file mode 100644 index 0000000000000000000000000000000000000000..58ff42bb5cafe03468b1554db1ed08cd99e523bb GIT binary patch literal 36185 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 literal 0 HcmV?d00001