Este é um sistema simples e funcional para agendamento de horários em uma clínica de estética. Desenvolvido com foco em praticidade e automação, ele permite que clientes agendem serviços via interface web, enquanto a profissional recebe notificações por e-mail automaticamente.
- Frontend: HTML, CSS, JavaScript
- Backend: Python (Flask)
- Banco de Dados: MySQL
- Infraestrutura: Docker e Docker Compose
- Notificações: Envio de e-mails via SMTP
- Sistema Operacional: Ubuntu Server (em máquina virtual)
📦 Sistema-Agendamento-Clinica-Estetica
├── 📂 backend
│ ├── 🐍 app.py # Lógica principal da API
│ ├── 🗃️ database.py # Conexão e operações com MySQL
│ ├── ✉️ email_utils.py # Serviço de envio de e-mails
│ ├── 📜 requirements.txt # Dependências Python
│ └── 🐳 Dockerfile # Configuração da imagem Docker
├── 📂 frontend
│ ├── 🌐 index.html # Interface de agendamento
│ ├── 🎨 style.css # Estilos responsivos
│ └── 🛠️ script.js # Lógica de interação
├── 🐳 docker-compose.yml # Definição dos serviços
├── ⚙️ setup_clinica.sh # Script de automação para Ubuntu
└── 🔒 .env.example # Template de variáveis de ambiente
- Docker
- Docker Compose
- Ubuntu Server (pode rodar em VM)
- Acesso SMTP (ex: Gmail com senha de app)
git clone https://github.com/seu-usuario/Sistema-Agendamento-Clinica-Estetica.git
cd Sistema-Agendamento-Clinica-Estetica
cp .env.example .env # Configure com seus dados
docker-compose up --build -d
- URL de Acesso:
http://localhost:80
- Instale a extensão Live Server no VS Code
- Clique com o botão direito no
index.html
e selecione "Open with Live Server"
cd frontend
python3 -m http.server 8080
- Acesse em:
http://localhost:8080
- URL Base:
http://localhost:5000
- Documentação (Swagger UI):
http://localhost:5000/docs
ip a
➡️ Procure um IP no formato 192.168.x.x
- Exemplo de requisição:
http://192.168.56.101:5000/agendar
- 🔄 Verifique a configuração de rede da VM (modo Bridge ou NAT)
- 🔥 Confirme que o firewall permite conexões na porta
5000
- 🌍 Para produção: utilize o IP público ou domínio do servidor
- O script
setup_clinica.sh
pode ser utilizado para configurar rapidamente o ambiente em um servidor Ubuntu:
📜 Ver código do script
#!/bin/bash
echo "🚀 Configurando ambiente para a Clínica de Estética..."
# Atualização do sistema
echo "🔄 Atualizando pacotes..."
sudo apt update && sudo apt upgrade -y
# Instalação do Docker
echo "🐳 Instalando Docker..."
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo usermod -aG docker $USER
# Estrutura do projeto
echo "📂 Criando estrutura de diretórios..."
mkdir -p /repo/Sistema-Agendamento-Clinica-Estetica/{frontend,backend}
cd /repo/Sistema-Agendamento-Clinica-Estetica
# Docker Compose
echo "📝 Gerando docker-compose.yml..."
cat <<EOF > docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql_clinica
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: agendamentos
MYSQL_USER: user
MYSQL_PASSWORD: userpass
volumes:
- mysql_data:/var/lib/mysql
ports:
- "3306:3306"
backend:
build: ./backend
container_name: backend_clinica
restart: always
ports:
- "5000:5000"
depends_on:
- mysql
env_file:
- .env
frontend:
image: nginx:alpine
container_name: frontend_clinica
volumes:
- ./frontend:/usr/share/nginx/html:ro
ports:
- "80:80"
volumes:
mysql_data:
EOF
# Configuração de ambiente
echo "🔧 Configurando variáveis..."
cat <<EOF > .env
DB_HOST=mysql
DB_USER=user
DB_PASSWORD=userpass
DB_NAME=agendamentos
EMAIL_USER=seu_email@gmail.com
EMAIL_PASS=sua_senha_app
EMAIL_PROFISSIONAL=profissional@clinica.com
EOF
# Backend setup
echo "🐍 Configurando backend..."
cat <<EOF > backend/requirements.txt
flask
mysql-connector-python
python-dotenv
pyjwt
EOF
cat <<EOF > backend/Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
EOF
echo "✅ Configuração concluída com sucesso!"
echo "👉 Execute 'docker-compose up --build' para iniciar o sistema"
⚠️ Não compartilhe o.env
em repositórios públicos. Ele contém informações sensíveis como senhas de e-mail e credenciais do banco.
Recomendações:
- Utilize HTTPS com Let's Encrypt
- Implemente autenticação JWT para APIs
- Faça backups regulares do volume MySQL
- Edite o
.env
com:
EMAIL_USER=seu_email@gmail.com
EMAIL_PASS=sua_senha_app # Use "Senha de App" do Google
EMAIL_PROFISSIONAL=recebedor@clinica.com
- Autenticação de usuários
- Painel administrativo para controle de agendamentos
- Confirmação de agendamento via e-mail
- Integração com WhatsApp
Luiz Carlos de Araújo Machado
LinkedIn
- Versão: 1.0.0
- Última Atualização: 19/05/2025