Repository Analysis

fastapi/full-stack-fastapi-template

Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.

6.3 Low AI signal View on GitHub
6.3
Adjusted Score
6.3
Raw Score
100%
Time Factor
2026-05-29
Last Push
43,416
Stars
TypeScript
Language
16,853
Lines of Code
192
Files
78
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 11LOW 67

Pattern Findings

78 matches across 6 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers48 hits · 50 pts
SeverityFileLineSnippet
LOWbackend/app/utils.py68def generate_reset_password_email(email_to: str, email: str, token: str) -> EmailData:
LOWbackend/app/utils.py85def generate_new_account_email(
LOWbackend/app/utils.py103def generate_password_reset_token(email: str) -> str:
LOWbackend/app/utils.py116def verify_password_reset_token(token: str) -> str | None:
LOWbackend/app/main.py10def custom_generate_unique_id(route: APIRoute) -> str:
LOWbackend/app/core/config.py109 def _enforce_non_default_secrets(self) -> Self:
LOWbackend/app/api/deps.py52def get_current_active_superuser(current_user: CurrentUser) -> User:
LOWbackend/app/api/routes/login.py105def recover_password_html_content(email: str, session: SessionDep) -> Any:
LOWbackend/tests/conftest.py39def normal_user_token_headers(client: TestClient, db: Session) -> dict[str, str]:
LOWbackend/tests/utils/user.py10def user_authentication_headers(
LOWbackend/tests/utils/user.py30def authentication_token_from_email(
LOWbackend/tests/utils/utils.py17def get_superuser_token_headers(client: TestClient) -> dict[str, str]:
LOWbackend/tests/scripts/test_backend_pre_start.py8def test_init_successful_connection() -> None:
LOWbackend/tests/scripts/test_test_pre_start.py8def test_init_successful_connection() -> None:
LOWbackend/tests/crud/test_user.py30def test_not_authenticate_user(db: Session) -> None:
LOWbackend/tests/crud/test_user.py37def test_check_if_user_is_active(db: Session) -> None:
LOWbackend/tests/crud/test_user.py45def test_check_if_user_is_active_inactive(db: Session) -> None:
LOWbackend/tests/crud/test_user.py53def test_check_if_user_is_superuser(db: Session) -> None:
LOWbackend/tests/crud/test_user.py61def test_check_if_user_is_superuser_normal_user(db: Session) -> None:
LOWbackend/tests/api/routes/test_login.py28def test_get_access_token_incorrect_password(client: TestClient) -> None:
LOWbackend/tests/api/routes/test_login.py67def test_recovery_password_user_not_exits(
LOWbackend/tests/api/routes/test_login.py113def test_reset_password_invalid_token(
LOWbackend/tests/api/routes/test_items.py55def test_read_item_not_enough_permissions(
LOWbackend/tests/api/routes/test_items.py100def test_update_item_not_found(
LOWbackend/tests/api/routes/test_items.py114def test_update_item_not_enough_permissions(
LOWbackend/tests/api/routes/test_items.py142def test_delete_item_not_found(
LOWbackend/tests/api/routes/test_items.py154def test_delete_item_not_enough_permissions(
LOWbackend/tests/api/routes/test_users.py15def test_get_users_superuser_me(
LOWbackend/tests/api/routes/test_users.py26def test_get_users_normal_user_me(
LOWbackend/tests/api/routes/test_users.py37def test_create_user_new_email(
LOWbackend/tests/api/routes/test_users.py60def test_get_existing_user_as_superuser(
LOWbackend/tests/api/routes/test_users.py79def test_get_non_existing_user_as_superuser(
LOWbackend/tests/api/routes/test_users.py90def test_get_existing_user_current_user(client: TestClient, db: Session) -> None:
LOWbackend/tests/api/routes/test_users.py117def test_get_existing_user_permissions_error(
LOWbackend/tests/api/routes/test_users.py132def test_get_non_existing_user_permissions_error(
LOWbackend/tests/api/routes/test_users.py146def test_create_user_existing_username(
LOWbackend/tests/api/routes/test_users.py165def test_create_user_by_normal_user(
LOWbackend/tests/api/routes/test_users.py267def test_update_password_me_incorrect_password(
LOWbackend/tests/api/routes/test_users.py282def test_update_user_me_email_exists(
LOWbackend/tests/api/routes/test_users.py300def test_update_password_me_same_password_error(
LOWbackend/tests/api/routes/test_users.py342def test_register_user_already_exists_error(client: TestClient) -> None:
LOWbackend/tests/api/routes/test_users.py384def test_update_user_not_exists(
LOWbackend/tests/api/routes/test_users.py397def test_update_user_email_exists(
LOWbackend/tests/api/routes/test_users.py451def test_delete_user_me_as_superuser(
LOWbackend/tests/api/routes/test_users.py463def test_delete_user_super_user(
LOWbackend/tests/api/routes/test_users.py482def test_delete_user_not_found(
LOWbackend/tests/api/routes/test_users.py493def test_delete_user_current_super_user_error(
LOWbackend/tests/api/routes/test_users.py508def test_delete_user_without_privileges(
Self-Referential Comments11 hits · 38 pts
SeverityFileLineSnippet
MEDIUMcompose.override.yml23 # Create an entrypoint "http" listening on port 80
MEDIUMcompose.override.yml25 # Create an entrypoint "https" listening on port 443
MEDIUMcompose.traefik.yml15 # Define the port inside of the Docker service to use
MEDIUMcompose.traefik.yml48 # Create an entrypoint "http" listening on port 80
MEDIUMcompose.traefik.yml50 # Create an entrypoint "https" listening on port 443
MEDIUMcompose.traefik.yml52 # Create the certificate resolver "le" for Let's Encrypt, uses the environment variable EMAIL
MEDIUMcompose.traefik.yml70 # Create a volume to store the certificates, even if the container is recreated
MEDIUM…98dd8ec85a3_edit_replace_id_integers_in_all_models_.py25 # Create a new UUID column with a default UUID value
MEDIUMbackend/tests/crud/test_user.py101 # Create a bcrypt hash directly (simulating legacy password)
MEDIUMbackend/tests/api/routes/test_login.py136 # Create a bcrypt hash directly (simulating legacy password)
MEDIUMbackend/tests/api/routes/test_login.py170 # Create an argon2 hash (current default)
Fake / Example Data6 hits · 6 pts
SeverityFileLineSnippet
LOWREADME.md200- `first_superuser`: (default: `"admin@example.com"`) The email of the first superuser (in .env).
LOWfrontend/src/routes/login.tsx91 placeholder="user@example.com"
LOWfrontend/src/routes/recover-password.tsx101 placeholder="user@example.com"
LOWfrontend/src/routes/signup.tsx122 placeholder="user@example.com"
LOWbackend/tests/api/routes/test_login.py54 patch("app.core.config.settings.SMTP_USER", "admin@example.com"),
LOWbackend/tests/api/routes/test_users.py43 patch("app.core.config.settings.SMTP_USER", "admin@example.com"),
Unused Imports5 hits · 5 pts
SeverityFileLineSnippet
LOWbackend/app/alembic/env.py1
LOW…rsions/fe56fa70289e_add_created_at_to_user_and_item.py10
LOW…98dd8ec85a3_edit_replace_id_integers_in_all_models_.py10
LOW…sions/1a31ce608336_add_cascade_delete_relationships.py10
LOW…ons/9c0a54914c78_add_max_length_for_string_varchar_.py10
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippet
LOWfrontend/playwright.config.ts41 storageState: 'playwright/.auth/user.json',
LOWfrontend/playwright.config.ts61 // dependencies: ['setup'],
LOWbackend/alembic.ini1# A generic, single database configuration.
LOWbackend/alembic.ini21# the 'revision' command, regardless of autogenerate
Excessive Try-Catch Wrapping4 hits · 4 pts
SeverityFileLineSnippet
LOWbackend/app/backend_pre_start.py27 except Exception as e:
LOWbackend/app/tests_pre_start.py27 except Exception as e:
LOWbackend/tests/scripts/test_backend_pre_start.py26 except Exception:
LOWbackend/tests/scripts/test_test_pre_start.py26 except Exception: