Skip to content

Commit e31a88b

Browse files
committed
v1.1.0
1 parent 5e9ceee commit e31a88b

22 files changed

+321
-347
lines changed

.github/workflows/ci.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Pipeline de CI do Django
1+
name: Django Base CI Pipeline / Pipeline de CI do Django Base
22

33
# Triggers: Runs this pipeline on every push or pull request to the master and develop branches
44
# Gatilhos: Roda este pipeline em todo push ou pull request para as branches master e develop
@@ -15,7 +15,7 @@ jobs:
1515
runs-on: ubuntu-latest
1616
services:
1717
postgres:
18-
image: postgres:15-alpine
18+
image: postgres:16-alpine
1919
env:
2020
POSTGRES_DB: test_db
2121
POSTGRES_USER: test_user
@@ -53,48 +53,48 @@ jobs:
5353
steps:
5454
# Step 1: Clones your repository into the virtual machine
5555
# Passo 1: Clona seu repositório para dentro da máquina virtual
56-
- name: Checkout do código
56+
- name: Code checkout / Checkout do código
5757
uses: actions/checkout@v4
5858

5959
# Step 2: Sets up the Python environment
6060
# Passo 2: Configura o ambiente Python
61-
- name: Configurar Python 3.11
61+
- name: Configure Python 3.14 / Configurar Python 3.14
6262
uses: actions/setup-python@v5
6363
with:
64-
python-version: "3.11"
64+
python-version: "3.14"
6565

6666
# Step 3: Sets up uv
6767
# Passo 3: Configura o uv
68-
- name: Configurar uv
68+
- name: Configure uv / Configurar uv
6969
uses: astral-sh/setup-uv@v1
7070

7171
# Step 4: Install development dependencies
7272
# uv will use caching automatically to speed up future builds
7373
# Passo 4: Instala as dependências de desenvolvimento
7474
# O uv usará o cache automaticamente para acelerar builds futuros
75-
- name: Instalar dependências
75+
- name: InstallInstalar dependências
7676
run: uv venv && source .venv/bin/activate && uv pip install -e .[dev]
7777

7878
# Step 5: Run Ruff to check formatting and linting
7979
# The --check flag does not modify files, it just fails if they are not formatted
8080
# Passo 5: Rodar o Ruff para verificar a formatação e o linting
8181
# A flag --check não altera os arquivos, apenas falha se não estiverem formatados
82-
- name: Verificar formatação com Ruff
83-
run: uv run ruff format --check .
84-
- name: Verificar linting com Ruff
82+
- name: Verify formatting with Ruff / Verificar formatação com Ruff
8583
run: uv run ruff format --check .
84+
- name: Verify linting with Ruff / Verificar linting com Ruff
85+
run: uv run ruff check .
8686

8787
# Step 6: Run tests with coverage
8888
# For CI, tests run against an in-memory SQLite database, which is fast
8989
# and requires no external database service. Django does this by default.
9090
# Passo 6: Rodar os testes com coverage
9191
# Para CI, os testes rodam contra um banco de dados SQLite em memória, que é
9292
# rápido e não requer um serviço de banco de dados externo. O Django faz isso por padrão.
93-
- name: Rodar testes e gerar cobertura
93+
- name: Run tests and generate coverage / Rodar testes e gerar cobertura
9494
run: uv run coverage run manage.py test src
9595
# Step 7: Check if test coverage meets the target
9696
# The pipeline will fail if the total coverage is below 80%
9797
# Passo 7: Verificar se a cobertura de testes atingiu a meta
9898
# O pipeline falhará se a cobertura total for menor que 80%
99-
- name: Verificar cobertura de testes
99+
- name: Verify test coverage / Verificar cobertura de testes
100100
run: uv run coverage report -m

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ mediafiles/
5151
Thumbs.db
5252
ehthumbs.db
5353

54+
# Prettier
55+
node_modules/
56+
57+
# AI Assisted Documentation / Documentação assistida por AI
5458
.claude/
5559
.claude_context.md
5660
generate_project_summary.py

.pre-commit-config.yaml

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ repos:
1212
# Ruff - Fast Python linter and formatter (replaces Black, isort, flake8, etc.)
1313
# Ruff - Linter e formatador Python rápido (substitui Black, isort, flake8, etc.)
1414
- repo: https://github.com/astral-sh/ruff-pre-commit
15-
rev: v0.13.2 # Use the latest version / Use a versão mais recente
15+
rev: v0.14.0 # Use the latest version / Use a versão mais recente
1616
hooks:
1717
# Ruff linter with auto-fix
1818
# Linter Ruff com correção automática
1919
- id: ruff
20-
args: [--fix, --exit-non-zero-on-fix]
20+
args: [--fix, --exit-non-zero-on-fix, --ignore=RUF012]
2121
name: Ruff Linter (Python)
2222
description: Run Ruff linter with auto-fix
2323

@@ -31,7 +31,7 @@ repos:
3131
# Quality of life improvements and common fixes
3232
# Melhorias de qualidade de vida e correções comuns
3333
- repo: https://github.com/pre-commit/pre-commit-hooks
34-
rev: v4.5.0
34+
rev: v6.0.0
3535
hooks:
3636
# Remove trailing whitespace / Remove espaços em branco no final
3737
- id: trailing-whitespace
@@ -96,12 +96,6 @@ repos:
9696
description: Prevent direct commits to main/master branches
9797
args: ["--branch", "main", "--branch", "master"]
9898

99-
# Fix Python encoding pragma / Corrige pragma de encoding Python
100-
- id: fix-encoding-pragma
101-
name: Fix Encoding Pragma
102-
description: Remove or add Python encoding pragma
103-
args: ["--remove"]
104-
10599
# Check for debugger imports / Verifica imports de debugger
106100
- id: debug-statements
107101
name: Check Debug Statements
@@ -117,7 +111,7 @@ repos:
117111
# Scans Python code for common security issues
118112
# Escaneia código Python para problemas comuns de segurança
119113
- repo: https://github.com/PyCQA/bandit
120-
rev: "1.7.10"
114+
rev: "1.8.6"
121115
hooks:
122116
- id: bandit
123117
name: Bandit Security Linter
@@ -142,7 +136,7 @@ repos:
142136
# Check for Django migrations issues
143137
# Verifica problemas em migrations do Django
144138
- repo: https://github.com/adamchainz/django-upgrade
145-
rev: "1.15.0"
139+
rev: "1.29.0"
146140
hooks:
147141
- id: django-upgrade
148142
name: Django Upgrade
@@ -164,7 +158,7 @@ repos:
164158
# Format YAML files consistently
165159
# Formata arquivos YAML de forma consistente
166160
- repo: https://github.com/pre-commit/mirrors-prettier
167-
rev: v3.1.0
161+
rev: v4.0.0-alpha.8
168162
hooks:
169163
- id: prettier
170164
name: Prettier (YAML, JSON, Markdown)

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.11
1+
3.14

.vscode/settings.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,16 @@
1212
}
1313
},
1414
"ruff.importStrategy": "fromEnvironment",
15-
"ruff.path": ["python"]
15+
"ruff.path": ["python"],
16+
"files.exclude": {
17+
"**/.git": true,
18+
"**/.svn": true,
19+
"**/.hg": true,
20+
"**/CVS": true,
21+
"**/.DS_Store": true,
22+
"**/__pycache__": true,
23+
"**/.pytest_cache": true,
24+
"**/.venv": true,
25+
"**/htmlcov": true
26+
}
1627
}

CHANGELOG.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
## [1.1.0] - 2025-10-10
2+
3+
This version focuses on modernizing the development environment, updating
4+
dependencies, and reinforcing security and performance configurations, aligning
5+
the project with the latest best practices. Esta versão foca na modernização do
6+
ambiente de desenvolvimento, atualização de dependências e reforço das
7+
configurações de segurança e performance, alinhando o projeto com as práticas
8+
mais recentes.
9+
10+
### Changed - Infrastructure & Environment / Infraestrutura e Ambiente
11+
12+
- **Python Update:** The development and production environment has been
13+
upgraded to use **Python 3.14**, ensuring access to the latest language
14+
features and performance improvements.
15+
- **Atualização do Python:** O ambiente de desenvolvimento e produção foi
16+
atualizado para usar **Python 3.14**, garantindo acesso aos recursos mais
17+
recentes e melhorias de performance da linguagem.
18+
- **Dependency Upgrade:** All project dependencies (such as Django, DRF, Ruff,
19+
etc.) have been updated to their latest stable versions, ensuring better
20+
security and new features.
21+
- **Atualização de Dependências:** Todas as dependências do projeto (como
22+
Django, DRF, Ruff, etc.) foram atualizadas para as suas versões mais
23+
recentes e estáveis, garantindo mais segurança e novas funcionalidades.
24+
- **`docker-compose.yml` Improvement:** Docker volumes now have explicit names
25+
(e.g., `django_base_postgres_data`), which simplifies management and prevents
26+
conflicts.
27+
- **Melhoria no `docker-compose.yml`:** Os volumes do Docker agora têm nomes
28+
explícitos (ex: `django_base_postgres_data`), facilitando a gestão e
29+
evitando conflitos.
30+
- **CI Pipeline Update:** The GitHub Actions workflow (`ci.yml`) has been
31+
updated to use Python 3.13 and Postgres 16, ensuring that continuous
32+
integration runs in a modern environment.
33+
- **Atualização do Pipeline de CI:** O workflow do GitHub Actions (`ci.yml`)
34+
foi atualizado para usar Python 3.13 e Postgres 16, garantindo que a
35+
integração contínua rode num ambiente moderno.
36+
37+
### Changed - Code Quality & DX (Developer Experience) / Qualidade de Código e DX
38+
39+
- **Pre-commit Hooks Update:** The code verification tools (`ruff`, `bandit`,
40+
etc.) in `.pre-commit-config.yaml` have been updated to their latest versions,
41+
improving code analysis and formatting.
42+
- **Atualização dos Pre-commit Hooks:** As ferramentas de verificação de
43+
código (`ruff`, `bandit`, etc.) no `.pre-commit-config.yaml` foram
44+
atualizadas para as suas versões mais recentes, melhorando a análise e
45+
formatação do código.
46+
- **`.gitignore` Improvement:** The `node_modules/` folder has been added to
47+
`.gitignore` to prevent frontend dependencies from being versioned.
48+
- **Melhoria no `.gitignore`:** Adicionada a pasta `node_modules/` ao
49+
`.gitignore` para evitar que dependências de frontend sejam versionadas.
50+
51+
### Changed - Security & Performance / Segurança e Performance
52+
53+
- **Nginx Security Hardening:** The `Permissions-Policy` header has been added
54+
to the `nginx.conf` configuration to restrict the use of sensitive browser
55+
features, increasing application security.
56+
- **Reforço de Segurança no Nginx:** Adicionado o cabeçalho
57+
`Permissions-Policy` à configuração do `nginx.conf` para restringir o uso de
58+
funcionalidades sensíveis do navegador, aumentando a segurança da aplicação.
59+
- **Database Optimization:** `Meta.indexes` have been added to the
60+
`UserProfile`, `Category`, and `Tag` models. This speeds up database queries
61+
that use these fields for filtering, improving API performance.
62+
- **Otimização da Base de Dados:** Adicionados `Meta.indexes` aos modelos
63+
`UserProfile`, `Category` e `Tag`. Isto acelera as consultas à base de dados
64+
que usam estes campos para filtros, melhorando a performance da API.
65+
- **Cookie Security:** The production configuration (`prod.py`) has been
66+
adjusted to use `SESSION_COOKIE_SAMESITE = 'Strict'`, offering more robust
67+
protection against CSRF attacks.
68+
- **Segurança de Cookies:** A configuração de produção (`prod.py`) foi
69+
ajustada para usar `SESSION_COOKIE_SAMESITE = 'Strict'`, oferecendo uma
70+
proteção mais robusta contra ataques CSRF.
71+
72+
### Changed - Documentation / Documentação
73+
74+
- **CI Status Badge:** A CI/CD pipeline status badge has been added to
75+
`README.md`, visually showing whether the tests are passing.
76+
- **Badge de Status do CI:** Adicionado um badge de status do pipeline de
77+
CI/CD ao `README.md`, mostrando visualmente se os testes estão a passar.

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
# Base stage with common configuration for all environments
1212
# Stage base com configuração comum para todos os ambientes
13-
FROM python:3.11-slim AS base
13+
FROM python:3.13-slim AS base
1414

1515
# Set working directory inside the container
1616
# Define o diretório de trabalho dentro do container

README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Django Base (django_base) 🚀
22

3+
[![CI Pipeline Status](https://github.com/mugubr/django_base/actions/workflows/ci.yml/badge.svg)](https://github.com/mugubr/django_base/actions/workflows/ci.yml)
4+
35
🇬🇧 / 🇺🇸
46

57
## English
@@ -673,17 +675,14 @@ Access Grafana at `http://localhost:3000` (default: `admin`/`admin`)
673675
Pre-configured community dashboards you can import:
674676

675677
1. **Django Metrics** (ID: 9528)
676-
677678
- Monitors Django application metrics, request rates, response times
678679
- Perfect for tracking API performance
679680

680681
2. **PostgreSQL Database** (ID: 9628)
681-
682682
- Database connection pool, query performance, table statistics
683683
- Essential for database health monitoring
684684

685685
3. **Nginx** (ID: 12708) - _Requires nginx-prometheus-exporter_
686-
687686
- Nginx request rates, connection stats, response codes
688687

689688
4. **Redis Dashboard** (ID: 11835)
@@ -1580,18 +1579,15 @@ Acesse o Grafana em `http://localhost:3000` (padrão: `admin`/`admin`)
15801579
Dashboards da comunidade pré-configurados que você pode importar:
15811580

15821581
1. **Django Metrics** (ID: 9528)
1583-
15841582
- Monitora métricas da aplicação Django, taxas de requisição, tempos de
15851583
resposta
15861584
- Perfeito para rastrear performance da API
15871585

15881586
2. **PostgreSQL Database** (ID: 9628)
1589-
15901587
- Pool de conexões do banco, performance de queries, estatísticas de tabelas
15911588
- Essencial para monitoramento da saúde do banco de dados
15921589

15931590
3. **Nginx** (ID: 12708) - _Requer nginx-prometheus-exporter_
1594-
15951591
- Taxas de requisição Nginx, estatísticas de conexão, códigos de resposta
15961592

15971593
4. **Redis Dashboard** (ID: 11835)

docker-compose.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,20 +305,26 @@ services:
305305
# Volumes nomeados persistem dados através de reinicializações e remoções de containers
306306
volumes:
307307
postgres_data:
308+
name: django_base_postgres_data
308309
# PostgreSQL database files
309310
# Arquivos do banco de dados PostgreSQL
310311
redis_data:
312+
name: django_base_redis_data
311313
# Redis persistence files
312314
# Arquivos de persistência Redis
313315
prometheus_data:
316+
name: django_base_prometheus_data
314317
# Prometheus metrics storage
315318
# Armazenamento de métricas Prometheus
316319
grafana_data:
320+
name: django_base_grafana_data
317321
# Grafana configurations and dashboards
318322
# Configurações e dashboards Grafana
319323
static_volume:
324+
name: django_base_static_volume
320325
# Django static files (CSS, JS, images)
321326
# Arquivos estáticos Django (CSS, JS, imagens)
322327
media_volume:
328+
name: django_base_media_volume
323329
# User-uploaded files
324330
# Arquivos enviados por usuários

nginx/nginx.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ server {
7373
# Controla informações de referrer enviadas
7474
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
7575

76+
# New addition: Permissions-Policy for greater security / Nova adição: Permissions-Policy para maior segurança
77+
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
78+
7679
# Gzip Compression / Compressão Gzip
7780
# Reduces bandwidth and improves load times
7881
# Reduz largura de banda e melhora tempos de carregamento

0 commit comments

Comments
 (0)