felipesalvim /
projeto-nexus-innova-faculdade
Website institucional do projeto de extensão Nexus Innova, desenvolvido com HTML5, CSS3, JavaScript puro e PHP
Loading repository data…
luizeh / repository
Website institucional desenvolvido como projeto de aprendizado em HTML e CSS para a Tio Preto Barbearia.
Tio Preto Barbearia (Douradina‑PR) é um sistema web que centraliza toda a operação de uma barbearia:
⚠️ Não há integração de pagamento — os pedidos ficam aguardando confirmação manual do administrador.
bcrypt)| Camada | Tecnologia |
|---|---|
| Backend | PHP (sem framework, MVC simplificado) |
| Banco de dados | MySQL 8 via PDO (prepared statements) |
| Servidor local | XAMPP (MySQL na porta 3307) |
| Frontend | HTML5, CSS3, JavaScript vanilla |
| Alertas / modais | SweetAlert2 v11 (via npm) |
| Ícones | Font Awesome 6.5 |
| Fontes | Google Fonts — Playfair Display, Barlow, Barlow Condensed |
| Mensagens | API WhatsApp (r4dev) |
Arquitetura MVC simplificada, sem framework:
Browser ──▶ view/**.php (páginas renderizadas no servidor)
│ └─ guard de sessão (require_admin.php / session.php)
│ └─ controllers/*.controller.php (prepara dados)
│ └─ sql/*Sql.php (DAOs) ──▶ config/Connection.php (PDO singleton)
│
└─ JS (fetch) ──▶ api/**.php ──▶ DAOs ──▶ helpers::resposta_json()
config/Connection.php — conexão PDO (padrão Singleton)sql/*Sql.php — DAOs, uma classe por entidadecontrollers/* — carregam dados e expõem variáveis para as viewsapi/* — endpoints HTTP que sempre retornam o mesmo envelope JSON:{ "success": true, "message": "Texto ao usuário", "data": null }
tiopretobarbearia-crud/
├── index.php → redireciona para view/index.php
├── config/
│ └── Connection.php → conexão PDO (singleton)
├── helpers/
│ └── helpers.php → validações + resposta_json + guards
├── sql/
│ ├── *Sql.php → DAOs (Agendamentos, Clientes, Horarios, ...)
│ └── migrations/
│ └── 000_schema_completo.sql → schema completo do banco
├── controllers/ → preparam dados para as views
├── api/
│ ├── auth/ → login, cadastro, logout, guards de sessão
│ ├── admin/ → endpoints do painel (CRUD, horários, whatsapp)
│ ├── user/ → endpoints do cliente (agenda, carrinho, pedidos)
│ └── produtos/ → upload de imagens
├── view/
│ ├── index.php · login.php · cadastro.php · catalogo.php
│ ├── admin/ → dashboard, agendamentos, horários, produtos...
│ ├── user/ → agenda, carrinho, pedidos, perfil...
│ └── partials/ → head, sidebar, topbar, modais reutilizáveis
└── assets/
├── css/ (admin · public · auth · shared)
├── js/ (admin · public · auth)
└── img/produtos/ → imagens enviadas
Database: tiopretobarbearia · Charset utf8mb4. Principais tabelas:
| Tabela | Descrição |
|---|---|
usuarios | Clientes e admins (admin = 0/1), senha em bcrypt |
servicos | Serviços oferecidos (preço, duração) |
agendamentos | Agendamentos (com status e observações) |
agendamento_servicos | Relação N:N — múltiplos serviços por agendamento |
produtos / tags | Produtos da loja e categorias |
carrinho / _itens | Carrinho por usuário |
pedidos / _itens | Pedidos com snapshot de preço |
notificacoes / logs | Notificações ao cliente e trilha de auditoria |
site_config | Textos editáveis da landing/rodapé |
horarios_funcionamento | Padrão semanal (1=Seg … 7=Dom, ISO‑8601) |
horarios_excecoes | Exceção por data específica |
horarios_bloqueios | Bloqueios recorrentes intra‑dia (com exceção de dias) |
horarios_periodos | Bloqueios por período (ex.: férias) |
🕐 hora_fim calculada em SQL somando a duração dos serviços do agendamento
🔒 Cliente não agenda em horário passado nem em dias/faixas indisponíveis
🧠 Resolução de disponibilidade por prioridade:
exceção por data ▸ período (férias) ▸ padrão semanal
Ou seja, uma exceção por data pode reabrir um dia dentro das férias.
🚫 Bloqueios flexíveis: recorrentes (ex.: almoço), "todos os dias exceto sábado" e por período (dia inteiro ou faixa de horário)
🖼️ Upload seguro de imagens: valida MIME real (finfo), nome aleatório, máx. 2 MB
🔐 Segurança: PDO com prepared statements, htmlspecialchars nas views, guards de sessão e validação de input em todas as camadas
# 1. Clone o repositório dentro de htdocs
git clone <url-do-repo> tiopretobarbearia-crud
cd tiopretobarbearia-crud
# 2. Instale as dependências de front (SweetAlert2)
npm install
# 3. Crie o banco de dados e importe o schema
mysql -h 127.0.0.1 -P 3307 -u root -e "CREATE DATABASE IF NOT EXISTS tiopretobarbearia CHARACTER SET utf8mb4;"
mysql -h 127.0.0.1 -P 3307 -u root tiopretobarbearia < sql/migrations/000_schema_completo.sql
🌐 http://localhost/tiopretobarbearia-crud/
Conexão padrão (
config/Connection.php): hostlocalhost, porta3307, usuárioroot, senha vazia. Ajuste conforme o seu ambiente.
helpers::resposta_json()InvalidArgumentException → 422, RuntimeException → 409, Throwable → 500POST usam o campo action no corpo JSON (criar, editar, excluir, status, ...)date('N')view/{recurso}.php · api/{área}/{recurso}.php · sql/{Entidade}Sql.php · controllers/{recurso}.controller.phpDistribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Feito para a Tio Preto Barbearia
Selected from shared topics, language and repository description—not editorial ratings.
felipesalvim /
Website institucional do projeto de extensão Nexus Innova, desenvolvido com HTML5, CSS3, JavaScript puro e PHP
ppparavidino /
Website institucional moderno para empresa de transporte coletivo. Desenvolvido com HTML5, CSS3, JavaScript e PHP. Foco em apresentação da empresa + seção completa de "Trabalhe Conosco" com envio de currículos. Tecnologias: HTML5 • CSS3 • JavaScript • PHP • Design Responsivo