36 Commits

Author SHA1 Message Date
e126e4e94e Merge branch 'develop' into develop-davi-lopes 2026-05-20 21:54:30 -03:00
5f8e43716e altera o texto de exemplo 2026-05-20 21:49:25 -03:00
844a03daa2 altera texto de exemplo 2026-05-20 21:37:23 -03:00
7b91169b33 Merge branch 'develop-marcos_assuncao' into develop 2026-05-20 21:33:20 -03:00
52d7108545 Cria lista para merge 2026-05-20 21:32:21 -03:00
19ff4afb5a confugura o texto de exemplo 2026-05-20 21:24:57 -03:00
e33f1a6df9 Altera o texto de exemplo 2026-05-20 21:21:12 -03:00
3a92010083 Merge pull request 'Corrige ortografia' (#35) from develop-marcos_assuncao into develop
Reviewed-on: #35
2026-05-18 23:59:48 +00:00
f86b68e4ed Corrige ortografia 2026-05-18 20:59:12 -03:00
2f2eb352bc Merge pull request 'Testa Desploy em develop e main' (#33) from develop-marcos_assuncao into develop
Reviewed-on: #33
2026-05-18 23:57:21 +00:00
839a02fd6a Testa Desploy em develop e main 2026-05-18 20:57:08 -03:00
5f3cb7e176 Merge branch 'develop-marcos_assuncao' into develop 2026-05-18 20:54:52 -03:00
05829c6a46 Realiza teste de deploy das branches develop e main 2026-05-18 20:50:40 -03:00
304cfc8663 Adiciona tag do Google Analytics 2026-05-15 18:15:46 +00:00
31865ce5d9 Testa evento de push com commit 2026-05-15 17:28:34 +00:00
05d8dc2235 Testa evento de push 2026-05-15 17:22:22 +00:00
0e17a24c13 Cria arquivo de teste para demostração aos alunos da turma de 2024 2026-05-14 21:42:48 -03:00
40a958f6db Merge branch 'develop-marcos_assuncao' into develop 2026-05-14 20:15:06 -03:00
d2b15ee500 Altera o texto para Marcos 2026-05-14 20:12:10 -03:00
d50e3eb070 Atualizar .gitignore 2026-05-12 23:19:16 +00:00
9d0f175f00 Excluir .env 2026-05-12 23:18:46 +00:00
f5ad50dac5 Merge pull request 'Atualiza env.example' (#24) from main into develop
Reviewed-on: #24
2026-05-12 23:17:11 +00:00
398efda11e Atualizar env.example 2026-05-12 23:16:27 +00:00
6e0f6b2753 Merge pull request 'Cria arquivo env.example' (#23) from develop into main
Reviewed-on: #23
2026-05-12 22:50:49 +00:00
2afdbe8f50 Cria arquivo env.example 2026-05-12 22:28:49 +00:00
05124a0092 Merge branch 'develop' 2026-05-11 20:59:42 -03:00
2e9fbe5361 Configura .htaccess para página não encontrada 2026-05-11 20:59:04 -03:00
4467b3ec30 Cria estrutura de pastas 2026-05-11 20:29:29 -03:00
b5c4f500bf Merge pull request 'Criado exemplo bootstrap' (#21) from develop into main
Reviewed-on: #21
2026-05-11 23:15:25 +00:00
f3ba84eb4b Criado exemplo bootstrap 2026-05-11 20:10:36 -03:00
3f3ea89dc4 Merge pull request 'develop' (#20) from develop into main
Reviewed-on: #20
2026-05-07 23:52:02 +00:00
98e544176c Merge pull request 'Altera o texto de teste' (#19) from develop-gabriel-henrique into develop
Reviewed-on: #19
2026-05-07 23:51:02 +00:00
886e27cb41 Altera o texto de teste 2026-05-07 20:44:14 -03:00
55ad55cf2e Atualiza o arquivo README.md 2026-05-05 20:49:15 -03:00
f7edf23937 Adiciona arquivo .env ao projeto 2026-05-05 20:47:11 -03:00
6362eb8a47 Adiciona arquivo CONTRIBUTING.md que instrui como fazer commits usando as boas práticas da comunidade 2026-05-05 20:45:57 -03:00
10 changed files with 286 additions and 12 deletions

2
.gitignore vendored
View File

@@ -0,0 +1,2 @@
.env
.vscode/*

View File

@@ -1,9 +1,19 @@
RewriteEngine On
# Impede que acessem pastas confidenciais (opcional, dependendo da estrutura)
# 1. Define a página de erro 404 personalizada na nova pasta
ErrorDocument 404 /public/notfound.php
# 2. Protege pastas de sistema, mas permite acesso à pasta public
# Bloqueia src, config e vendor
RewriteRule ^(src|config|vendor)/ - [F,L]
# Se o arquivo ou diretório não existir fisicamente, manda para o index.php
# 3. Regra do Roteador (Front Controller)
# Se o arquivo ou diretório solicitado não existir fisicamente...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# ...E não for a própria página de erro (para evitar loops)
RewriteCond %{REQUEST_URI} !^/public/notfound.php
# Envia a requisição para o index.php
RewriteRule ^(.*)$ index.php [QSA,L]

48
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,48 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 0,
"runtimeArgs": [
"-dxdebug.start_with_request=yes"
],
"env": {
"XDEBUG_MODE": "debug,develop",
"XDEBUG_CONFIG": "client_port=${port}"
}
},
{
"name": "Launch Built-in web server",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-dxdebug.mode=debug",
"-dxdebug.start_with_request=yes",
"-S",
"localhost:0"
],
"program": "",
"cwd": "${workspaceRoot}",
"port": 9003,
"serverReadyAction": {
"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
"uriFormat": "http://localhost:%s",
"action": "openExternally"
}
}
]
}

76
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,76 @@
# 🚀 Guia de Desenvolvimento - Sistema de Controle de Faltas
Bem-vindos à equipe! Este projeto une nossas duas turmas em uma simulação real de mercado. Como desenvolvedores, vocês serão responsáveis por construir uma ferramenta robusta utilizando **PHP Orientado a Objetos** e **Bootstrap**.
Para que nossa colaboração funcione e o sistema rode perfeitamente no **EasyPanel**, todos devemos seguir este manual.
---
## 🌳 1. Nossas Branches (Onde o código mora)
Para manter a organização, o repositório é dividido em níveis de segurança:
* **`main` (Produção):** É o código que o cliente vê. **Ninguém** faz commit direto aqui. Apenas o Gerente move o código para cá quando tudo está testado.
* **`develop` (Integração):** É onde o trabalho de todos se encontra. Vocês abrirão seus pedidos de união (Pull Requests) para esta branch.
* **`feature/seu-nome-tarefa` (Criação):** Toda nova tarefa deve ser feita em uma branch própria criada a partir da `develop`.
---
## 💬 2. Padrão de Commits (Como você comunica seu progresso)
Mensagens de commit ruins como "ajuste" ou "testando" não serão aceitas. Usaremos o padrão **Conventional Commits**. Escreva sempre no **imperativo** (ex: "Adiciona", e não "Adicionei").
### Tipos que vocês mais usarão:
| Tipo | Quando usar? | Exemplo |
| :--- | :--- | :--- |
| **`feat`** | Quando você cria algo novo. | `feat: adiciona o formulário de login` |
| **`fix`** | Quando você resolve um erro. | `fix: corrige erro de conexão com o banco` |
| **`docs`** | Quando você altera apenas o README ou manuais. | `docs: detalha o funcionamento do banco` |
| **`style`** | Alteração visual com Bootstrap (CSS/Layout). | `style: centraliza os botões do dashboard` |
| **`refactor`** | Quando você melhora um código PHP sem mudar o que ele faz. | `refactor: simplifica o método de busca` |
---
## 🛠 3. O Fluxo de Trabalho (Passo a Passo)
Sempre que você for começar uma tarefa, siga estes passos:
1. **Atualize seu computador:**
```bash
git checkout develop
git pull origin develop
```
2. **Crie sua branch de trabalho:**
```bash
git checkout -b feature/nome-da-sua-tarefa
```
3. **Trabalhe no código:**
Faça commits pequenos e frequentes seguindo os padrões acima.
4. **Suba para o Gitea:**
```bash
git push origin feature/nome-da-sua-tarefa
```
5. **Peça a Revisão (Pull Request):**
No Gitea, abra um Pull Request para a branch `develop`. **Eu (Gerente)** revisarei seu código e, se estiver tudo certo, farei a aprovação.
---
## 📂 4. Arquitetura do Projeto (PHP OOP)
Não utilizaremos frameworks, por isso a organização das pastas é vital para o funcionamento do nosso container Docker:
* **`/config`**: Arquivos de conexão e variáveis de ambiente.
* **`/public`**: É a única pasta visível para o navegador. Contém o `index.php` e arquivos CSS/JS.
* **`/src/Controller`**: Onde ficará a lógica que decide o que mostrar.
* **`/src/Model`**: Onde as classes PHP conversam com o Banco de Dados (Use PDO!).
* **`/src/View`**: Onde o HTML com Bootstrap será escrito.
---
## ⚠️ 5. Regras de Ouro
* **Segurança:** Nunca coloque senhas no código. Se precisar de uma credencial, peça ao Gerente para configurar no EasyPanel.
* **Qualidade:** Antes de abrir um Pull Request, verifique se não esqueceu nenhum `var_dump` ou comentário desnecessário.
* **Colaboração:** Ajude seus colegas. Se o código dele estiver difícil de entender, comente no Pull Request!
---
**Bom trabalho a todos! Vamos construir um sistema incrível.**

7
env.example Normal file
View File

@@ -0,0 +1,7 @@
# Banco de Dados:
DB_HOST_INTERNAL=enredero_interno_do_servidor_db
DB_HOST_EXTERNAL=enredero_interno_do_servidor_db
DB_PORT=porta
DB_NAME=nome_do_banco
DB_USER=_usuario_do_banco
DB_PASS=senha_do_banco

View File

@@ -0,0 +1,8 @@
<H1>Título HTML</H1>
<?php
if (1 > 2) {
echo "1 é maior do que 2";
} else {
echo "1 não é maior do que 2";
}
?>

77
exemplos/bootstrap.php Normal file
View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Protótipo de Interface - Reserva de Hotéis</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
</head>
<body class="bg-light">
<nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow-sm">
<div class="container">
<a class="navbar-brand" href="#">HotelReserve</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link active" href="#">Busca</a></li>
<li class="nav-item"><a class="nav-link" href="#">Minhas Reservas</a></li>
<li class="nav-item"><a class="nav-link" href="#">Perfil</a></li>
</ul>
</div>
</div>
</nav>
<main class="container my-5">
<section class="card border-0 shadow-sm p-4 mb-4">
<h2 class="h4 mb-3">Encontre sua próxima estadia</h2>
<form class="row g-3">
<div class="col-md-4">
<label class="form-label">Destino</label>
<input type="text" class="form-control" placeholder="Cidade ou Hotel">
</div>
<div class="col-md-3">
<label class="form-label">Check-in</label>
<input type="date" class="form-control">
</div>
<div class="col-md-3">
<label class="form-label">Hóspedes</label>
<select class="form-select">
<option>1 Pessoa</option>
<option>2 Pessoas</option>
<option>Família</option>
</select>
</div>
<div class="col-md-2 d-flex align-items-end">
<button type="submit" class="btn btn-warning w-100 fw-bold">Pesquisar</button>
</div>
</form>
</section>
<section class="row">
<div class="col-md-6 col-lg-4">
<div class="card h-100 shadow-sm border-0">
<img src="https://via.placeholder.com/400x250" class="card-img-top" alt="Hotel Exemplo">
<div class="card-body">
<h5 class="card-title">Resort Vista Mar</h5>
<p class="card-text text-muted">A apenas 50 metros da praia, com café da manhã incluso.</p>
<div class="d-flex justify-content-between align-items-center">
<span class="fw-bold text-success">R$ 450,00 / dia</span>
<a href="#" class="btn btn-outline-primary btn-sm">Ver Detalhes</a>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="text-center py-4 text-muted">
<p>&copy; 2026 - Atividade de ADS - Prototipação de Interfaces</p>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -1 +1,14 @@
<?php echo "Teste de Commit";
<?php echo "Marcos Assunção";?>
<br> 1
<br> 2
<br> 3
<br> 4
<br> 5
<br> 6
<br> 7
<br> 8
<br> 9
<br> 10
<br> 11
<br> 12
<br> 13

1
public/notfound.php Normal file
View File

@@ -0,0 +1 @@
Não encontrado

View File

@@ -1,9 +1,41 @@
Tela de Login
Recuperação de e alteração de Senha
Cadastro de Usuários
Cadastro de Departamentos
Cadastro de Faltas
Impressão das Faltas
Cadastro de Fornecedores
Configurações do Sistema
Envio de Lista de Faltas toda noite para um email pré-cadastrado nas configurações
# 📦 Sistema de Controle de Faltas de Mercadorias
Projeto prático desenvolvido em colaboração pelas turmas de TI da **Faculdade Anhanguera**. O objetivo deste sistema é permitir que uma loja gerencie e registre a falta de produtos em seu estoque ou no recebimento de mercadorias, auxiliando o setor de compras na tomada de decisões.
---
## 🛠 Tecnologias Utilizadas
Para este projeto, adotamos uma stack que equilibra fundamentos de programação e práticas modernas de infraestrutura:
* **Backend:** PHP 8.2 (Orientação a Objetos, sem frameworks).
* **Frontend:** Bootstrap 5 (Interface responsiva).
* **Banco de Dados:** MySQL.
* **Infraestrutura:** Docker & EasyPanel.
* **Versionamento e Gestão:** Gitea.
---
## 📐 Arquitetura do Projeto
O sistema segue o padrão **MVC (Model-View-Controller)** simplificado para garantir a separação de responsabilidades e facilitar o trabalho em equipe:
- **Models:** Responsáveis pela lógica de dados e comunicação com o banco via PDO.
- **Views:** Arquivos PHP/HTML que utilizam Bootstrap para a interface com o usuário.
- **Controllers:** Gerenciam as requisições e conectam o Model à View.
---
## 📂 Estrutura de Pastas
```text
/
├── config/ # Configurações de banco de dados e constantes
├── public/ # Ponto de entrada (index.php), CSS, JS e imagens
├── src/
│ ├── Controller/ # Lógica de controle do sistema
│ ├── Model/ # Classes de entidade e manipulação de dados
│ └── View/ # Templates de exibição (Bootstrap)
├── Dockerfile # Configuração para o container no EasyPanel
└── README.md # Documentação principal