Skip to content
Closed
Show file tree
Hide file tree
Changes from 53 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
5e24a6d
Fix homepage container flexibility
OUMIMANDAL Aug 19, 2025
caea551
Restore pnpm-lock.yaml
OUMIMANDAL Aug 19, 2025
7e7c88e
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 19, 2025
026ee9a
refactor: fix layout duplication and styling issues
OUMIMANDAL Aug 19, 2025
305d246
Merge branch 'fix-homepage-container-flexibility' of https://github.c…
OUMIMANDAL Aug 19, 2025
8a73963
fix: merge duplicate :root block in globals.css
OUMIMANDAL Aug 19, 2025
8917f7c
fix: mark layout props as read-only
OUMIMANDAL Aug 19, 2025
3789e3d
fix: correctly mark RootLayout props as read-only
OUMIMANDAL Aug 19, 2025
5e0536e
refactor: unify dark-mode map-tiles filter under .dark class
OUMIMANDAL Aug 19, 2025
f565947
Merge branch 'main' into fix-homepage-container-flexibility
kasya Aug 20, 2025
37fa65b
refactor: remove redundant @media wrapper for .dark .map-tiles
OUMIMANDAL Aug 20, 2025
4b93f3e
Merge branch 'fix-homepage-container-flexibility' of https://github.c…
OUMIMANDAL Aug 20, 2025
adb2e32
refactor: use IssueMetadata across components to reduce duplication
OUMIMANDAL Aug 20, 2025
64ffd22
fix: rename tailwind.config.ts → .js to avoid import issues
OUMIMANDAL Aug 20, 2025
058cdd7
fix: rename tailwind.config.ts to .js to avoid import issues
OUMIMANDAL Aug 20, 2025
41d79c1
fix: restore tailwind.config.ts and fix CJS wrapper
OUMIMANDAL Aug 20, 2025
fdd40ea
chore: remove duplicate tailwind.config.js
OUMIMANDAL Aug 20, 2025
3419a80
fix: allow className in Footer and fix release link
OUMIMANDAL Aug 21, 2025
2e76459
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 25, 2025
891dd58
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 26, 2025
2cd43f6
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 26, 2025
d87feba
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 27, 2025
03f7dcc
Merge branch 'main' into fix-homepage-container-flexibility
kasya Aug 28, 2025
b952945
Bump github/codeql-action from 3.29.8 to 3.29.9 (#2064)
dependabot[bot] Aug 13, 2025
ec0d606
Resolve merge conflict in pnpm-lock.yaml
OUMIMANDAL Aug 21, 2025
23facd8
fix: resolve conflicts and update layout/tailwind
OUMIMANDAL Aug 27, 2025
558aa6f
chore: resolve merge conflicts
OUMIMANDAL Aug 27, 2025
48f79f1
Update pre-commit: add pyproject-fmt
arkid15r Aug 13, 2025
5892607
Add id field to graphql entities (#2045)
rudransh-shrivastava Aug 14, 2025
7352a18
Run make update
arkid15r Aug 14, 2025
df7aff0
test- inmproved test coverage of github internal nodes more than 80% …
trucodd Aug 15, 2025
c425484
Run make update
arkid15r Aug 15, 2025
6ee3cd5
Using default message
arkid15r Aug 16, 2025
dc5ed1d
removed leader and suggested leader, introduced entity_member model (…
abhayymishraa Aug 17, 2025
690fe21
Update entity member admin mixin
arkid15r Aug 17, 2025
f4d49ea
Using default message
arkid15r Aug 18, 2025
10082d5
Using default message
arkid15r Aug 19, 2025
f17b2e7
Using default message
dependabot[bot] Aug 19, 2025
e483c63
Bump github/codeql-action from 3.29.9 to 3.29.10 (#2099)
dependabot[bot] Aug 19, 2025
e625c12
fix: merge duplicate :root block in globals.css
OUMIMANDAL Aug 19, 2025
8b5e522
fix: mark layout props as read-only
OUMIMANDAL Aug 19, 2025
1117ef3
fix: correctly mark RootLayout props as read-only
OUMIMANDAL Aug 19, 2025
2f37ee0
refactor: unify dark-mode map-tiles filter under .dark class
OUMIMANDAL Aug 19, 2025
0bdde86
refactor: remove redundant @media wrapper for .dark .map-tiles
OUMIMANDAL Aug 20, 2025
ba63156
Fix #1882: Added test for RecentIssues Component (#2087)
anurag2787 Aug 20, 2025
c5e0993
Integrate Lighthouse CI (#2079)
rudransh-shrivastava Aug 20, 2025
b083a8a
refactor: use IssueMetadata across components to reduce duplication
OUMIMANDAL Aug 20, 2025
4bbc988
Using default message
OUMIMANDAL Aug 20, 2025
b0627fe
fix: rename tailwind.config.ts to .js to avoid import issues
OUMIMANDAL Aug 20, 2025
a735bd5
fix: restore tailwind.config.ts and fix CJS wrapper
OUMIMANDAL Aug 20, 2025
2f6d0e7
Using default message
OUMIMANDAL Aug 20, 2025
3fcd9f9
Using default message
OUMIMANDAL Aug 21, 2025
dc248c0
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 28, 2025
9641262
Merge branch 'main' into fix-homepage-container-flexibility
OUMIMANDAL Aug 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 3 additions & 14 deletions .github/workflows/run-ci-cd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -492,26 +492,15 @@ jobs:
- name: Check out repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8

- name: Install pnpm
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: true
version: 10

- name: Set up Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
cache-dependency-path: frontend/pnpm-lock.yaml
cache: 'pnpm'
node-version: 22

- name: Run lighthouse-ci
env:
LHCI_BASE_URL: 'https://nest.owasp.dev'
run: |
pnpm run lighthouse-ci
timeout-minutes: 15
- name: Run Lighthouse CI
working-directory: frontend
run: |
npx -y @lhci/[email protected] autorun
Comment on lines +500 to +503
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Prefer pinned, lockfile-backed execution over npx; also pass config explicitly and retain artifacts.

npx fetches code at runtime and bypasses your lockfile. Use pnpm dlx (via Corepack) to keep supply-chain controls tighter and speed up repeat runs, and pass the config path explicitly to avoid accidental defaults. Also upload LHCI artifacts for debugging.

Apply this diff within the step:

-      - name: Run Lighthouse CI
+      - name: Run Lighthouse CI
         working-directory: frontend
-        run: |
-          npx -y @lhci/[email protected] autorun
+        run: |
+          corepack enable
+          corepack prepare pnpm@10 --activate
+          pnpm dlx @lhci/[email protected] autorun --config=./lighthouserc.json

And add a follow-up step to persist reports:

- name: Upload LHCI reports
  if: always()
  uses: actions/upload-artifact@v4
  with:
    name: lhci-report
    path: frontend/.lighthouseci
    if-no-files-found: ignore
    retention-days: 7
🤖 Prompt for AI Agents
In .github/workflows/run-ci-cd.yaml around lines 500-503, replace the npx
invocation with a lockfile-backed pnpm dlx (via Corepack) call and pass the LHCI
config path explicitly so the runner uses the pinned package and the intended
config (e.g., run pnpm dlx @lhci/[email protected] autorun
--config=frontend/.lighthouseci/lhci.yml from the frontend working-directory),
and add a new follow-up step to always upload the LHCI artifacts at
frontend/.lighthouseci using actions/upload-artifact@v4 with name lhci-report,
if-no-files-found: ignore, and a retention-days of 7.

💡 Verification agent

🧩 Analysis chain

Confirm LHCI 0.15.1 compatibility with Node 22 (or pin Node 20 LTS).

Node 22 is new; some CLIs lag support. If incompatibilities exist, pin Node to 20.x here or bump LHCI to a version that officially supports Node 22.


🌐 Web query:

Does @lhci/[email protected] officially support Node.js 22? If not, what is the earliest LHCI version that supports Node 22?

💡 Result:

Short answer: No — @lhci/[email protected] does not officially state Node.js 22 support. The Lighthouse CI docs and repo examples recommend Node 16 (and their quick-start shows Node 18 for CI), and the project’s server docs require Node 16 LTS. I could not find any LHCI release that explicitly declares official Node 22 support. [1][2][3]

Sources:

  • @lhci/cli v0.15.1 on npm (package info). [1]
  • Lighthouse CI docs / quick-start (shows Node 16 / Node 18 in examples). [2]
  • LHCI server requirements (Node v16 LTS). [3]

Pin Node to 20.x in CI before running LHCI
LHCI v0.15.1 doesn’t support Node 22 (docs/examples only reference Node 16/18). Add an actions/setup-node@v3 step with node-version: '20.x' immediately before the “Run Lighthouse CI” step in ​.github/workflows/run-ci-cd.yaml.

🤖 Prompt for AI Agents
.github/workflows/run-ci-cd.yaml around lines 500 to 503: LHCI v0.15.1 is
incompatible with Node 22 in the runner; add an actions/setup-node@v3 step with
node-version: '20.x' immediately before the "Run Lighthouse CI" step so the
frontend working-directory uses Node 20.x when executing npx @lhci/cli autorun.
Include the setup-node step as a separate job step just above the existing "Run
Lighthouse CI" step and ensure it applies to the same job/runner.


build-production-images:
name: Build Production Images
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/run-code-ql.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8

- name: Initialize CodeQL
uses: github/codeql-action/init@3c3833e0f8c1c83d449a7478aa59c036a9165498
uses: github/codeql-action/init@96f518a34f7a870018057716cc4d7a5c014bd61c
with:
languages: ${{ matrix.language }}

Expand All @@ -53,6 +53,6 @@ jobs:
run: pnpm install --frozen-lockfile

- name: Perform CodeQL analysis
uses: github/codeql-action/analyze@3c3833e0f8c1c83d449a7478aa59c036a9165498
uses: github/codeql-action/analyze@96f518a34f7a870018057716cc4d7a5c014bd61c
with:
category: /language:${{ matrix.language }}
2 changes: 2 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ repos:
exclude: (.github|pnpm-lock.yaml)

- repo: https://github.com/astral-sh/ruff-pre-commit

rev: v0.12.11

hooks:
- id: ruff
args:
Expand Down
378 changes: 197 additions & 181 deletions backend/poetry.lock

Large diffs are not rendered by default.

104 changes: 103 additions & 1 deletion backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ name = "OWASP Nest"
version = "0.1.0"
description = "Your gateway to OWASP"
authors = [ "Arkadii Yakovets <[email protected]>" ]
authors = [ "Arkadii Yakovets <[email protected]>" ]
readme = "README.md"

packages = [ { include = "apps" } ]
packages = [ { include = "apps" } ]

Comment on lines +10 to 15
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Duplicate keys in [tool.poetry]: authors and packages are repeated (invalid TOML).

TOML forbids redefining the same key/table; Poetry will fail to parse. Remove the duplicates.

Apply:

- authors = [ "Arkadii Yakovets <[email protected]>" ]
- packages = [ { include = "apps" } ]
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 10 to 15 there are duplicate keys
(authors and packages) which is invalid TOML; remove the repeated entries so
each key appears only once — keep the correct single authors line and a single
packages table (or merge their contents if they differ), and ensure the
resulting TOML is syntactically valid (no duplicate keys).

[tool.poetry.dependencies]
Expand All @@ -20,6 +22,7 @@ django-cors-headers = "^4.7.0"
django-ninja = "^1.4.3"
django-redis = "^6.0.0"
django-storages = { extras = [ "s3" ], version = "^1.14.4" }
django-storages = { extras = [ "s3" ], version = "^1.14.4" }
emoji = "^2.14.1"
Comment on lines 24 to 26
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Duplicate dependency entry: django-storages repeated.

Keep a single line for the package.

- django-storages = { extras = [ "s3" ], version = "^1.14.4" }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
django-storages = { extras = [ "s3" ], version = "^1.14.4" }
django-storages = { extras = [ "s3" ], version = "^1.14.4" }
emoji = "^2.14.1"
django-storages = { extras = [ "s3" ], version = "^1.14.4" }
emoji = "^2.14.1"
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 24 to 26 there is a duplicate dependency
entry for django-storages; remove the redundant line so only a single
django-storages = { extras = ["s3"], version = "^1.14.4" } remains (preserve the
extras and version exactly) and keep the subsequent emoji = "^2.14.1" line
unchanged.

geopy = "^2.4.1"
gunicorn = "^23.0.0"
Expand All @@ -44,7 +47,7 @@ requests = "^2.32.5"
sentry-sdk = { extras = [ "django" ], version = "^2.20.0" }
slack-bolt = "^1.22.0"
slack-sdk = "^3.35.0"
strawberry-graphql = { extras = [ "django" ], version = "^0.281.0" }
strawberry-graphql = { extras = [ "django" ], version = "^0.278.1" }
strawberry-graphql-django = "^0.65.1"
thefuzz = "^0.22.1"

Expand All @@ -64,6 +67,64 @@ python-dotenv = "^1.0.1"
[tool.ruff]
target-version = "py313"

line-length = 99
lint.select = [ "ALL" ]
lint.extend-select = [ "I" ]
lint.ignore = [
"ANN", # https://docs.astral.sh/ruff/rules/#flake8-annotations-ann/
"ARG002", # https://docs.astral.sh/ruff/rules/unused-method-argument/
"C901", # https://docs.astral.sh/ruff/rules/complex-structure/
"COM812", # https://docs.astral.sh/ruff/rules/missing-trailing-comma/
"D407", # https://docs.astral.sh/ruff/rules/missing-dashed-underline-after-section/
"DJ012", # https://docs.astral.sh/ruff/rules/django-unordered-body-content-in-model/
"FIX002", # https://docs.astral.sh/ruff/rules/line-contains-todo/
"PLC0415", # https://docs.astral.sh/ruff/rules/import-outside-top-level/
"PLR0912", # https://docs.astral.sh/ruff/rules/too-many-branches/
"PLR0913", # https://docs.astral.sh/ruff/rules/too-many-arguments/
"PLR0915", # https://docs.astral.sh/ruff/rules/too-many-statements/
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
"TD003", # https://docs.astral.sh/ruff/rules/missing-todo-link/
]
lint.per-file-ignores."**/__init__.py" = [
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
"F401", # https://docs.astral.sh/ruff/rules/unused-import/
]
lint.per-file-ignores."**/management/commands/*.py" = [
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
"D102", # https://docs.astral.sh/ruff/rules/undocumented-public-method/
"T201", # https://docs.astral.sh/ruff/rules/print/
]
lint.per-file-ignores."**/migrations/*.py" = [
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
"E501", # https://docs.astral.sh/ruff/rules/line-too-long/
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
]
lint.per-file-ignores."**/models/*.py" = [
"D106", # https://docs.astral.sh/ruff/rules/undocumented-public-nested-class/
]
lint.per-file-ignores."**/rest/v1/*.py" = [
Comment on lines 67 to +107
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Duplicate [tool.ruff] block begins here; another appears below — this is invalid TOML.

Consolidate to a single [tool.ruff] table. Decide on one source of truth.

-[tool.ruff]
-target-version = "py313"
-
-line-length = 99
-lint.select = [ "ALL" ]
-lint.extend-select = [ "I" ]
-lint.ignore = [
-  "ANN",
-  "ARG002",
-  "C901",
-  "COM812",
-  "D407",
-  "DJ012",
-  "FIX002",
-  "PLC0415",
-  "PLR0912",
-  "PLR0913",
-  "PLR0915",
-  "RUF012",
-  "TD003",
-]
-lint.per-file-ignores."**/__init__.py" = [ "D104", "F401" ]
-lint.per-file-ignores."**/management/commands/*.py" = [ "D101", "D102", "T201" ]
-lint.per-file-ignores."**/migrations/*.py" = [ "D100", "D101", "D104", "E501", "RUF012" ]
-lint.per-file-ignores."**/models/*.py" = [ "D106" ]
-lint.per-file-ignores."**/rest/v1/*.py" = [ "ARG001", "B008" ]
-lint.per-file-ignores."**/settings/*.py" = [ "RUF012" ]
-lint.per-file-ignores."**/tests/**/*.py" = [
-  "D100","D101","D102","D103","D107","PLR2004","RUF012","S101","SLF001",
-]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[tool.ruff]
target-version = "py313"
line-length = 99
lint.select = [ "ALL" ]
lint.extend-select = [ "I" ]
lint.ignore = [
"ANN", # https://docs.astral.sh/ruff/rules/#flake8-annotations-ann/
"ARG002", # https://docs.astral.sh/ruff/rules/unused-method-argument/
"C901", # https://docs.astral.sh/ruff/rules/complex-structure/
"COM812", # https://docs.astral.sh/ruff/rules/missing-trailing-comma/
"D407", # https://docs.astral.sh/ruff/rules/missing-dashed-underline-after-section/
"DJ012", # https://docs.astral.sh/ruff/rules/django-unordered-body-content-in-model/
"FIX002", # https://docs.astral.sh/ruff/rules/line-contains-todo/
"PLC0415", # https://docs.astral.sh/ruff/rules/import-outside-top-level/
"PLR0912", # https://docs.astral.sh/ruff/rules/too-many-branches/
"PLR0913", # https://docs.astral.sh/ruff/rules/too-many-arguments/
"PLR0915", # https://docs.astral.sh/ruff/rules/too-many-statements/
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
"TD003", # https://docs.astral.sh/ruff/rules/missing-todo-link/
]
lint.per-file-ignores."**/__init__.py" = [
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
"F401", # https://docs.astral.sh/ruff/rules/unused-import/
]
lint.per-file-ignores."**/management/commands/*.py" = [
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
"D102", # https://docs.astral.sh/ruff/rules/undocumented-public-method/
"T201", # https://docs.astral.sh/ruff/rules/print/
]
lint.per-file-ignores."**/migrations/*.py" = [
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
"D104", # https://docs.astral.sh/ruff/rules/undocumented-public-package/
"E501", # https://docs.astral.sh/ruff/rules/line-too-long/
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
]
lint.per-file-ignores."**/models/*.py" = [
"D106", # https://docs.astral.sh/ruff/rules/undocumented-public-nested-class/
]
lint.per-file-ignores."**/rest/v1/*.py" = [
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 67-107 there is a duplicate [tool.ruff]
table which makes the TOML invalid; consolidate into a single [tool.ruff] table
by merging rules, options, and all lint.per-file-ignores entries under one
header, remove the redundant [tool.ruff] block, ensure no conflicting keys
remain (resolve by choosing the intended value) and keep the combined
configuration syntactically valid TOML.

"ARG001", # https://docs.astral.sh/ruff/rules/unused-function-argument/
"B008", # https://docs.astral.sh/ruff/rules/function-call-in-default-argument/
]
lint.per-file-ignores."**/settings/*.py" = [
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
]
lint.per-file-ignores."**/tests/**/*.py" = [
"D100", # https://docs.astral.sh/ruff/rules/undocumented-public-module/
"D101", # https://docs.astral.sh/ruff/rules/undocumented-public-class/
"D102", # https://docs.astral.sh/ruff/rules/undocumented-public-method/
"D103", # https://docs.astral.sh/ruff/rules/undocumented-public-function/
"D107", # https://docs.astral.sh/ruff/rules/undocumented-public-init/
"PLR2004", # https://docs.astral.sh/ruff/rules/magic-value-comparison/
"RUF012", # https://docs.astral.sh/ruff/rules/mutable-class-default/
"S101", # https://docs.astral.sh/ruff/rules/assert/
"SLF001", # https://docs.astral.sh/ruff/rules/private-member-access/
]
[tool.ruff]
target-version = "py313"

line-length = 99
lint.select = [ "ALL" ]
lint.extend-select = [ "I" ]
Expand Down Expand Up @@ -134,12 +195,26 @@ addopts = [
"--durations=5",
"--no-cov-on-fail",
"--numprocesses=auto",
"--cov-config=pyproject.toml",
"--cov-fail-under=80",
"--cov-precision=2",
"--cov-report=term-missing",
"--cov=.",
"--dist=loadscope",
"--durations-min=1",
"--durations=5",
"--no-cov-on-fail",
"--numprocesses=auto",
]
Comment on lines +198 to 208
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

pytest addopts duplicated verbatim.

Remove the second copy to avoid confusing downstream tooling that parses arrays.

-  "--cov-config=pyproject.toml",
-  "--cov-fail-under=80",
-  "--cov-precision=2",
-  "--cov-report=term-missing",
-  "--cov=.",
-  "--dist=loadscope",
-  "--durations-min=1",
-  "--durations=5",
-  "--no-cov-on-fail",
-  "--numprocesses=auto",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"--cov-config=pyproject.toml",
"--cov-fail-under=80",
"--cov-precision=2",
"--cov-report=term-missing",
"--cov=.",
"--dist=loadscope",
"--durations-min=1",
"--durations=5",
"--no-cov-on-fail",
"--numprocesses=auto",
]
]
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 198 to 208, the pytest addopts array is
duplicated verbatim; remove the second copy of the "--cov-..."/related entries
so the addopts array contains each option only once, ensuring downstream tooling
parses a single, non-duplicated list.

filterwarnings = [
"ignore::DeprecationWarning:pytest_cov",
"ignore::DeprecationWarning:xdist",
"ignore::django.conf.RemovedInDjango60Warning:django",
"ignore::pydantic.warnings.PydanticDeprecatedSince20",
"ignore::DeprecationWarning:pytest_cov",
"ignore::DeprecationWarning:xdist",
"ignore::django.conf.RemovedInDjango60Warning:django",
"ignore::pydantic.warnings.PydanticDeprecatedSince20",
]
Comment on lines +214 to 218
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Duplicate filterwarnings entries.

Delete the repeated block to keep settings DRY.

-  "ignore::DeprecationWarning:pytest_cov",
-  "ignore::DeprecationWarning:xdist",
-  "ignore::django.conf.RemovedInDjango60Warning:django",
-  "ignore::pydantic.warnings.PydanticDeprecatedSince20",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"ignore::DeprecationWarning:pytest_cov",
"ignore::DeprecationWarning:xdist",
"ignore::django.conf.RemovedInDjango60Warning:django",
"ignore::pydantic.warnings.PydanticDeprecatedSince20",
]
]
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 214 to 218 there are duplicate
filterwarnings entries; remove the repeated block so each warning filter appears
only once (keep a single canonical filterwarnings list with unique entries), and
verify the TOML array syntax remains valid after deletion.

log_level = "INFO"

Expand All @@ -157,19 +232,38 @@ omit = [
"wsgi.py",
]

[tool.coverage.run]
branch = true
omit = [
"__init__.py",
"**/admin.py",
"**/apps.py",
"**/migrations/*",
"**/mentorship/*", # TODO: work in progress
"manage.py",
"settings/*",
"tests/*",
"wsgi.py",
]

Comment on lines +235 to +248
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Duplicate [tool.coverage.run] table.

TOML table redefinition is invalid. Keep a single coverage.run table.

-[tool.coverage.run]
-branch = true
-omit = [
-  "__init__.py",
-  "**/admin.py",
-  "**/apps.py",
-  "**/migrations/*",
-  "**/mentorship/*", # TODO: work in progress
-  "manage.py",
-  "settings/*",
-  "tests/*",
-  "wsgi.py",
-]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[tool.coverage.run]
branch = true
omit = [
"__init__.py",
"**/admin.py",
"**/apps.py",
"**/migrations/*",
"**/mentorship/*", # TODO: work in progress
"manage.py",
"settings/*",
"tests/*",
"wsgi.py",
]
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 235 to 248 there is a duplicate
[tool.coverage.run] table which is invalid in TOML; locate the existing
[tool.coverage.run] table elsewhere in the file and merge these omit entries
into that single table (or remove this duplicate block entirely), ensuring all
omit patterns are combined into one omit array under the single
[tool.coverage.run] table and the TOML syntax remains valid.

[tool.mypy]
explicit_package_bases = true
ignore_missing_imports = true
mypy_path = "backend"
plugins = [ "strawberry.ext.mypy_plugin" ]
plugins = [ "strawberry.ext.mypy_plugin" ]

Comment on lines 253 to 255
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Duplicated mypy plugins line.

Remove the second plugins assignment.

-plugins = [ "strawberry.ext.mypy_plugin" ]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
plugins = [ "strawberry.ext.mypy_plugin" ]
plugins = [ "strawberry.ext.mypy_plugin" ]
plugins = [ "strawberry.ext.mypy_plugin" ]
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 253 to 255, there is a duplicated plugins
declaration (two identical lines setting plugins = [
"strawberry.ext.mypy_plugin" ]). Remove the redundant second assignment so only
a single plugins = [ "strawberry.ext.mypy_plugin" ] line remains; ensure no
trailing blank duplicate lines are left and save the file.

[[tool.mypy.overrides]]
disable_error_code = [ "attr-defined" ]
module = [ "apps.*.models.mixins.*", "apps.*.admin.*" ]
disable_error_code = [ "attr-defined" ]
module = [ "apps.*.models.mixins.*", "apps.*.admin.*" ]

Comment on lines 256 to 261
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Duplicated [[tool.mypy.overrides]] block.

Delete the duplicate to avoid confusion in override ordering.

-[[tool.mypy.overrides]]
-disable_error_code = [ "attr-defined" ]
-module = [ "apps.*.models.mixins.*", "apps.*.admin.*" ]

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 256 to 261 there is a duplicated
[[tool.mypy.overrides]] block with identical keys; remove the duplicate block so
only a single overrides entry remains to avoid confusion in override ordering,
ensuring the remaining block contains the intended disable_error_code and module
entries and the file keeps valid TOML structure.

[[tool.mypy.overrides]]
disable_error_code = [ "var-annotated" ]
module = [ "apps.*.migrations.*" ]
disable_error_code = [ "var-annotated" ]
module = [ "apps.*.migrations.*" ]

Comment on lines 262 to 267
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Duplicated [[tool.mypy.overrides]] block.

Same duplication for migrations override; remove the second one.

-[[tool.mypy.overrides]]
-disable_error_code = [ "var-annotated" ]
-module = [ "apps.*.migrations.*" ]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[[tool.mypy.overrides]]
disable_error_code = [ "var-annotated" ]
module = [ "apps.*.migrations.*" ]
disable_error_code = [ "var-annotated" ]
module = [ "apps.*.migrations.*" ]
# backend/pyproject.toml (around lines 262–267)
[[tool.mypy.overrides]]
disable_error_code = [ "var-annotated" ]
module = [ "apps.*.migrations.*" ]
🤖 Prompt for AI Agents
In backend/pyproject.toml around lines 262 to 267 there is a duplicated
[[tool.mypy.overrides]] block for the migrations override; remove the second
duplicate block so only one overrides section remains for module =
["apps.*.migrations.*"] with disable_error_code = ["var-annotated"], ensuring
the remaining block preserves the correct keys and values and no other unrelated
lines are altered.

[[tool.mypy.overrides]]
disable_error_code = [ "return-value", "attr-defined", "misc" ]
Expand All @@ -180,3 +274,11 @@ format = true
format_css = true
format_js = true
indent = 4
disable_error_code = [ "return-value", "attr-defined", "misc" ]
module = [ "apps.*.api.internal.queries.*", "apps.*.api.internal.nodes.*" ]

[tool.djlint]
format = true
format_css = true
format_js = true
indent = 4
10 changes: 5 additions & 5 deletions cspell/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions docs/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions frontend/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ format-frontend-code:
&& pnpm run format))

lighthouse-ci:
@cd frontend && pnpm run lighthouse-ci

lighthouse-ci-desktop:
@cd frontend && pnpm run lighthouse-ci:desktop
@cd frontend && npx -y @lhci/[email protected] autorun --collect.url=http://localhost:3000

lint-frontend-code:
@(cd frontend && pnpm run lint:check >/dev/null 2>&1 \
Expand Down
19 changes: 19 additions & 0 deletions frontend/lighthouserc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"ci": {
"assert": {
"assertions": {
"categories:performance": ["warn", { "minScore": 0.9 }],
"categories:accessibility": ["warn", { "minScore": 0.9 }],
"categories:best-practices": ["warn", { "minScore": 0.9 }],
"categories:seo": ["warn", { "minScore": 0.9 }]
}
},
"collect": {
"url": ["https://nest.owasp.dev/"],
"numberOfRuns": 3
},
"upload": {
"target": "temporary-public-storage"
}
}
}
Loading