6.0 KiB
6.0 KiB
🕓 Sistema de Ponto Eletrônico (Django + Bootstrap)
Este projeto é a migração da aplicação existente para o framework Django, mantendo os nomes originais das tabelas e módulos (em português), com interface web baseada em Bootstrap e painel administrativo nativo do Django.
⚙️ Estrutura Geral do Projeto
ponto_eletronico/
├── manage.py
├── requirements.txt
├── README.md
├── .env
├── docker-compose.yml
├── Dockerfile
│
├── config/
│ ├── __init__.py
│ ├── asgi.py
│ ├── wsgi.py
│ ├── urls.py
│ └── settings/
│ ├── base.py
│ ├── dev.py
│ ├── prod.py
│ └── logging.py
│
├── empresa/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── empresa/
│ │ ├── empresa_list.html
│ │ └── empresa_form.html
│
├── usuario/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── usuario/
│ │ ├── usuario_list.html
│ │ ├── usuario_form.html
│ │ └── login.html
│
├── configuracoes/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── configuracoes/
│ │ └── configuracoes_form.html
│
├── feriados/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── feriados/
│ │ ├── feriado_list.html
│ │ └── feriado_form.html
│
├── pagamento/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── pagamento/
│ │ └── pagamento_status.html
│
├── turno/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── turno/
│ │ ├── turno_list.html
│ │ └── turno_form.html
│
├── turno_dia/
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ └── templates/
│ └── turno_dia/
│ └── turno_dia_form.html
│
├── marcacao/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── marcacao/
│ │ ├── marcacao_list.html
│ │ ├── marcacao_form.html
│ │ └── dashboard.html
│
├── ajuste_horario/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── ajuste_horario/
│ │ ├── ajuste_list.html
│ │ └── ajuste_form.html
│
├── ajuste_ausencia/
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── ajuste_ausencia/
│ │ ├── ausencia_list.html
│ │ └── ausencia_form.html
│
├── templates/
│ ├── base.html
│ ├── includes/
│ │ ├── _navbar.html
│ │ ├── _footer.html
│ │ └── _messages.html
│ └── registration/
│ ├── login.html
│ └── logout.html
│
├── static/
│ ├── css/
│ │ ├── bootstrap.min.css
│ │ ├── estilo.css
│ ├── js/
│ │ ├── bootstrap.bundle.min.js
│ │ └── app.js
│ ├── img/
│ └── vendor/
│ └── bootstrap/
│
└── scripts/
├── migrate_legacy.py
└── seed_demo_data.py
🔗 Relação entre apps e tabelas
| App Django | Tabela original | Função principal |
|---|---|---|
empresa |
tbl_empresa |
dados da empresa |
usuario |
tbl_usuario |
usuários e cargos |
configuracoes |
tbl_configuracoes |
parâmetros de ponto |
feriados |
tbl_feriados |
feriados e adicionais |
pagamento |
tbl_pagamento |
controle de assinatura |
turno |
tbl_turno |
turnos padrão |
turno_dia |
tbl_turno_dia |
dias da semana do turno |
marcacao |
tbl_marcacao |
marcações de ponto |
ajuste_horario |
tbl_ajuste_horario |
ajustes manuais de ponto |
ajuste_ausencia |
tbl_ajuste_ausencia |
ausências justificadas |
🧠 Criando um novo app Django
Para criar um novo aplicativo dentro do projeto, siga os passos abaixo:
-
Ative o ambiente virtual:
venv\Scripts\activate # No Windows source venv/bin/activate # No Linux/macOS -
Certifique-se de estar dentro da pasta do projeto (onde está o arquivo
manage.py). -
Execute o comando:
python manage.py startapp nome_do_appExemplo:
python manage.py startapp usuario -
Adicione o app em
INSTALLED_APPSdentro do arquivosettings.py:INSTALLED_APPS = [ ... 'usuario', ] -
Crie os modelos e registre-os no admin:
- Edite o arquivo
models.pycom suas tabelas. - Edite o
admin.pypara registrar os modelos.
- Edite o arquivo
-
Rode as migrações:
python manage.py makemigrations python manage.py migrate -
Teste o servidor:
python manage.py runserver
💪 Frontend (Bootstrap)
O frontend utiliza Bootstrap 5 integrado aos templates Django.
- Layout base:
templates/base.html - Navbar, rodapé e mensagens ficam em
templates/includes/ - Cada app possui seus próprios templates HTML.