https://github.com/benavlabs/FastAPI-boilerplate.git
· scanned 2026-05-18 03:31 UTC (2 weeks, 4 days ago)
· 10 languages
217 findings (59 legacy + 158 scanner) 55th percentile · Python · small (2-20K LoC) Scanner says 59 (higher by 12)
Last scanned 2 weeks, 4 days ago · v2 · 59 findings from 1 source. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
100.0 | 0.15 | 15.00 |
security_score |
64.5 | 0.25 | 16.12 |
testing_score |
46.0 | 0.20 | 9.20 |
documentation_score |
79.0 | 0.15 | 11.85 |
practices_score |
75.0 | 0.15 | 11.25 |
code_quality |
79.0 | 0.10 | 7.90 |
| Overall | 1.00 | 71.3 |
All 487 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
show_help |
software | healthy | setup.py:31 |
copy_files |
software | healthy | setup.py:49 |
interactive_setup |
software | healthy | setup.py:117 |
main |
software | healthy | setup.py:154 |
test_create_user_success |
software | healthy | tests/test_user.py:16 |
test_create_user_duplicate_email |
software | healthy | tests/test_user.py:36 |
test_create_user_duplicate_username |
software | healthy | tests/test_user.py:48 |
test_read_user_success |
software | healthy | tests/test_user.py:64 |
test_read_user_not_found |
software | healthy | tests/test_user.py:80 |
test_read_users_success |
software | healthy | tests/test_user.py:95 |
test_patch_user_success |
software | healthy | tests/test_user.py:117 |
test_patch_user_forbidden |
software | healthy | tests/test_user.py:136 |
test_erase_user_success |
software | healthy | tests/test_user.py:154 |
test_erase_user_not_found |
software | healthy | tests/test_user.py:172 |
test_erase_user_forbidden |
software | healthy | tests/test_user.py:184 |
client |
software | healthy | tests/conftest.py:27 |
db |
software | healthy | tests/conftest.py:35 |
override_dependency |
software | healthy | tests/conftest.py:41 |
mock_db |
software | healthy | tests/conftest.py:46 |
mock_redis |
software | healthy | tests/conftest.py:52 |
sample_user_data |
software | healthy | tests/conftest.py:62 |
sample_user_read |
software | healthy | tests/conftest.py:73 |
current_user_dict |
software | healthy | tests/conftest.py:94 |
get_current_user |
software | healthy | tests/helpers/mocks.py:9 |
oauth2_scheme |
software | healthy | tests/helpers/mocks.py:13 |
create_user |
software | healthy | tests/helpers/generators.py:9 |
create_first_tier |
software | healthy | src/scripts/create_first_tier.py:14 |
main |
software | healthy | src/scripts/create_first_tier.py:34 |
create_first_user |
software | healthy | src/scripts/create_first_superuser.py:18 |
main |
software | healthy | src/scripts/create_first_superuser.py:71 |
lifespan_with_admin |
software | healthy | src/app/main.py:15 |
__init__ |
software | healthy | src/app/middleware/client_cache_middleware.py:31 |
dispatch |
software | dead | src/app/middleware/client_cache_middleware.py:35 |
__init__ |
software | healthy | src/app/middleware/logger_middleware.py:19 |
dispatch |
software | dead | src/app/middleware/logger_middleware.py:22 |
get_current_user |
software | healthy | src/app/api/dependencies.py:24 |
get_optional_user |
software | dead | src/app/api/dependencies.py:42 |
get_current_superuser |
software | dead | src/app/api/dependencies.py:68 |
rate_limiter_dependency |
software | dead | src/app/api/dependencies.py:75 |
health |
software | healthy | src/app/api/v1/health.py:25 |
ready |
software | healthy | src/app/api/v1/health.py:38 |
write_rate_limit |
software | healthy | src/app/api/v1/rate_limits.py:19 |
read_rate_limits |
software | healthy | src/app/api/v1/rate_limits.py:45 |
read_rate_limit |
software | healthy | src/app/api/v1/rate_limits.py:68 |
patch_rate_limit |
software | healthy | src/app/api/v1/rate_limits.py:83 |
erase_rate_limit |
software | healthy | src/app/api/v1/rate_limits.py:103 |
write_tier |
software | healthy | src/app/api/v1/tiers.py:17 |
read_tiers |
software | healthy | src/app/api/v1/tiers.py:35 |
read_tier |
software | healthy | src/app/api/v1/tiers.py:45 |
patch_tier |
software | healthy | src/app/api/v1/tiers.py:54 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
mkdocs.yml |
software | healthy | mkdocs.yml |
README.md |
software | healthy | README.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
.pre-commit-config.yaml |
software | healthy | .pre-commit-config.yaml |
setup.py |
software | healthy | setup.py |
LICENSE.md |
software | healthy | LICENSE.md |
pyproject.toml |
software | healthy | pyproject.toml |
CODE_OF_CONDUCT.md |
software | healthy | CODE_OF_CONDUCT.md |
test_user.py |
software | healthy | tests/test_user.py |
__init__.py |
software | healthy | tests/__init__.py |
conftest.py |
software | healthy | tests/conftest.py |
mocks.py |
software | healthy | tests/helpers/mocks.py |
generators.py |
software | healthy | tests/helpers/generators.py |
index.md |
software | healthy | docs/index.md |
community.md |
software | healthy | docs/community.md |
extra.css |
software | healthy | docs/stylesheets/extra.css |
production.md |
software | healthy | docs/user-guide/production.md |
project-structure.md |
software | healthy | docs/user-guide/project-structure.md |
index.md |
software | healthy | docs/user-guide/index.md |
development.md |
software | healthy | docs/user-guide/development.md |
testing.md |
software | healthy | docs/user-guide/testing.md |
jwt-tokens.md |
software | healthy | docs/user-guide/authentication/jwt-tokens.md |
index.md |
software | healthy | docs/user-guide/authentication/index.md |
user-management.md |
software | healthy | docs/user-guide/authentication/user-management.md |
permissions.md |
software | healthy | docs/user-guide/authentication/permissions.md |
pagination.md |
software | healthy | docs/user-guide/api/pagination.md |
versioning.md |
software | healthy | docs/user-guide/api/versioning.md |
index.md |
software | healthy | docs/user-guide/api/index.md |
endpoints.md |
software | healthy | docs/user-guide/api/endpoints.md |
exceptions.md |
software | healthy | docs/user-guide/api/exceptions.md |
settings-classes.md |
software | healthy | docs/user-guide/configuration/settings-classes.md |
environment-specific.md |
software | healthy | docs/user-guide/configuration/environment-specific.md |
docker-setup.md |
software | healthy | docs/user-guide/configuration/docker-setup.md |
index.md |
software | healthy | docs/user-guide/configuration/index.md |
environment-variables.md |
software | healthy | docs/user-guide/configuration/environment-variables.md |
models.md |
software | healthy | docs/user-guide/database/models.md |
schemas.md |
software | healthy | docs/user-guide/database/schemas.md |
migrations.md |
software | healthy | docs/user-guide/database/migrations.md |
crud.md |
software | healthy | docs/user-guide/database/crud.md |
index.md |
software | healthy | docs/user-guide/database/index.md |
index.md |
software | healthy | docs/user-guide/rate-limiting/index.md |
redis-cache.md |
software | healthy | docs/user-guide/caching/redis-cache.md |
cache-strategies.md |
software | healthy | docs/user-guide/caching/cache-strategies.md |
client-cache.md |
software | healthy | docs/user-guide/caching/client-cache.md |
index.md |
software | healthy | docs/user-guide/caching/index.md |
index.md |
software | healthy | docs/user-guide/admin-panel/index.md |
user-management.md |
software | healthy | docs/user-guide/admin-panel/user-management.md |
configuration.md |
software | healthy | docs/user-guide/admin-panel/configuration.md |
adding-models.md |
software | healthy | docs/user-guide/admin-panel/adding-models.md |
index.md |
software | healthy | docs/user-guide/background-tasks/index.md |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestWriteUser |
software | healthy | tests/test_user.py:12 |
TestReadUser |
software | healthy | tests/test_user.py:60 |
TestReadUsers |
software | healthy | tests/test_user.py:91 |
TestPatchUser |
software | healthy | tests/test_user.py:113 |
TestEraseUser |
software | healthy | tests/test_user.py:150 |
RateLimit |
software | healthy | src/app/models/rate_limit.py:9 |
Tier |
software | healthy | src/app/models/tier.py:9 |
Post |
software | healthy | src/app/models/post.py:11 |
User |
software | healthy | src/app/models/user.py:12 |
ClientCacheMiddleware |
software | healthy | src/app/middleware/client_cache_middleware.py:5 |
LoggerMiddleware |
software | healthy | src/app/middleware/logger_middleware.py:10 |
PostCreateAdmin |
software | healthy | src/app/admin/views.py:16 |
HealthCheck |
software | healthy | src/app/core/schemas.py:9 |
ReadyCheck |
software | healthy | src/app/core/schemas.py:16 |
UUIDSchema |
software | healthy | src/app/core/schemas.py:27 |
TimestampSchema |
software | healthy | src/app/core/schemas.py:31 |
PersistentDeletion |
software | healthy | src/app/core/schemas.py:50 |
Token |
software | healthy | src/app/core/schemas.py:63 |
TokenData |
software | healthy | src/app/core/schemas.py:68 |
TokenBlacklistBase |
software | healthy | src/app/core/schemas.py:72 |
TokenBlacklistRead |
software | healthy | src/app/core/schemas.py:77 |
TokenBlacklistCreate |
software | healthy | src/app/core/schemas.py:81 |
TokenBlacklistUpdate |
software | healthy | src/app/core/schemas.py:85 |
AppSettings |
software | healthy | src/app/core/config.py:8 |
CryptSettings |
software | healthy | src/app/core/config.py:17 |
FileLoggerSettings |
software | healthy | src/app/core/config.py:24 |
ConsoleLoggerSettings |
software | healthy | src/app/core/config.py:38 |
DatabaseSettings |
software | healthy | src/app/core/config.py:50 |
SQLiteSettings |
software | healthy | src/app/core/config.py:54 |
MySQLSettings |
software | healthy | src/app/core/config.py:60 |
PostgresSettings |
software | healthy | src/app/core/config.py:78 |
FirstUserSettings |
software | healthy | src/app/core/config.py:96 |
TestSettings |
software | healthy | src/app/core/config.py:103 |
RedisCacheSettings |
software | healthy | src/app/core/config.py:107 |
ClientSideCacheSettings |
software | healthy | src/app/core/config.py:117 |
RedisQueueSettings |
software | healthy | src/app/core/config.py:121 |
RedisRateLimiterSettings |
software | healthy | src/app/core/config.py:126 |
DefaultRateLimitSettings |
software | healthy | src/app/core/config.py:136 |
CRUDAdminSettings |
software | healthy | src/app/core/config.py:141 |
EnvironmentOption |
software | healthy | src/app/core/config.py:162 |
EnvironmentSettings |
software | healthy | src/app/core/config.py:168 |
CORSSettings |
software | healthy | src/app/core/config.py:172 |
Settings |
software | healthy | src/app/core/config.py:178 |
TokenType |
software | healthy | src/app/core/security.py:24 |
CacheIdentificationInferenceError |
software | healthy | src/app/core/exceptions/cache_exceptions.py:1 |
InvalidRequestError |
software | healthy | src/app/core/exceptions/cache_exceptions.py:7 |
MissingClientError |
software | healthy | src/app/core/exceptions/cache_exceptions.py:13 |
RateLimiter |
software | healthy | src/app/core/utils/rate_limit.py:13 |
WorkerSettings |
software | healthy | src/app/core/worker/settings.py:17 |
Base |
software | healthy | src/app/core/db/database.py:10 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
helpers |
software | healthy | tests/helpers |
docs |
software | healthy | docs |
stylesheets |
software | healthy | docs/stylesheets |
user-guide |
software | healthy | docs/user-guide |
authentication |
software | healthy | docs/user-guide/authentication |
api |
software | healthy | docs/user-guide/api |
configuration |
software | healthy | docs/user-guide/configuration |
database |
software | healthy | docs/user-guide/database |
rate-limiting |
software | healthy | docs/user-guide/rate-limiting |
caching |
software | healthy | docs/user-guide/caching |
admin-panel |
software | healthy | docs/user-guide/admin-panel |
background-tasks |
software | healthy | docs/user-guide/background-tasks |
getting-started |
software | healthy | docs/getting-started |
scripts |
software | healthy | scripts |
production_with_nginx |
software | healthy | scripts/production_with_nginx |
gunicorn_managing_uvicorn_workers |
software | healthy | scripts/gunicorn_managing_uvicorn_workers |
local_with_uvicorn |
software | healthy | scripts/local_with_uvicorn |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
scripts |
software | healthy | src/scripts |
app |
software | healthy | src/app |
models |
software | healthy | src/app/models |
middleware |
software | healthy | src/app/middleware |
api |
software | healthy | src/app/api |
v1 |
software | healthy | src/app/api/v1 |
admin |
software | healthy | src/app/admin |
core |
software | healthy | src/app/core |
exceptions |
software | healthy | src/app/core/exceptions |
utils |
software | healthy | src/app/core/utils |
worker |
software | healthy | src/app/core/worker |
db |
software | healthy | src/app/core/db |
schemas |
software | healthy | src/app/schemas |
crud |
software | healthy | src/app/crud |
migrations |
software | healthy | src/migrations |
versions |
software | healthy | src/migrations/versions |
| Label | Layer | Status | Path |
|---|---|---|---|
GET /health |
api | healthy | src/app/api/v1/health.py |
GET /ready |
api | healthy | src/app/api/v1/health.py |
POST /tier/{tier_name}/rate_limit |
api | healthy | src/app/api/v1/rate_limits.py |
GET /tier/{tier_name}/rate_limits |
api | healthy | src/app/api/v1/rate_limits.py |
GET /tier/{tier_name}/rate_limit/{id} |
api | healthy | src/app/api/v1/rate_limits.py |
PATCH /tier/{tier_name}/rate_limit/{id} |
api | healthy | src/app/api/v1/rate_limits.py |
DELETE /tier/{tier_name}/rate_limit/{id} |
api | healthy | src/app/api/v1/rate_limits.py |
POST /tier |
api | healthy | src/app/api/v1/tiers.py |
GET /tiers |
api | healthy | src/app/api/v1/tiers.py |
GET /tier/{name} |
api | healthy | src/app/api/v1/tiers.py |
PATCH /tier/{name} |
api | healthy | src/app/api/v1/tiers.py |
DELETE /tier/{name} |
api | healthy | src/app/api/v1/tiers.py |
POST /task |
api | healthy | src/app/api/v1/tasks.py |
GET /task/{task_id} |
api | healthy | src/app/api/v1/tasks.py |
POST /user |
api | healthy | src/app/api/v1/users.py |
GET /users |
api | healthy | src/app/api/v1/users.py |
GET /user/me/ |
api | healthy | src/app/api/v1/users.py |
GET /user/{username} |
api | healthy | src/app/api/v1/users.py |
PATCH /user/{username} |
api | healthy | src/app/api/v1/users.py |
DELETE /user/{username} |
api | healthy | src/app/api/v1/users.py |
DELETE /db_user/{username} |
api | healthy | src/app/api/v1/users.py |
GET /user/{username}/rate_limits |
api | healthy | src/app/api/v1/users.py |
GET /user/{username}/tier |
api | healthy | src/app/api/v1/users.py |
PATCH /user/{username}/tier |
api | healthy | src/app/api/v1/users.py |
POST /logout |
api | healthy | src/app/api/v1/logout.py |
POST /{username}/post |
api | healthy | src/app/api/v1/posts.py |
GET /{username}/posts |
api | healthy | src/app/api/v1/posts.py |
GET /{username}/post/{id} |
api | healthy | src/app/api/v1/posts.py |
PATCH /{username}/post/{id} |
api | healthy | src/app/api/v1/posts.py |
DELETE /{username}/post/{id} |
api | healthy | src/app/api/v1/posts.py |
DELETE /{username}/db_post/{id} |
api | healthy | src/app/api/v1/posts.py |
POST /login |
api | healthy | src/app/api/v1/login.py |
POST /refresh |
api | healthy | src/app/api/v1/login.py |
GET /docs |
api | healthy | src/app/core/setup.py |
GET /redoc |
api | healthy | src/app/core/setup.py |
GET /openapi.json |
api | healthy | src/app/core/setup.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::scripts/production_with_nginx/Dockerfile |
hardware | healthy | scripts/production_with_nginx/Dockerfile |
image::scripts/gunicorn_managing_uvicorn_workers/Dockerfile |
hardware | healthy | scripts/gunicorn_managing_uvicorn_workers/Dockerfile |
image::scripts/local_with_uvicorn/Dockerfile |
hardware | healthy | scripts/local_with_uvicorn/Dockerfile |
web |
hardware | healthy | scripts/production_with_nginx/docker-compose.yml |
worker |
hardware | healthy | scripts/production_with_nginx/docker-compose.yml |
db |
hardware | healthy | scripts/production_with_nginx/docker-compose.yml |
redis |
hardware | healthy | scripts/production_with_nginx/docker-compose.yml |
nginx |
hardware | healthy | scripts/production_with_nginx/docker-compose.yml |
web |
hardware | healthy | scripts/gunicorn_managing_uvicorn_workers/docker-compose.yml |
worker |
hardware | healthy | scripts/gunicorn_managing_uvicorn_workers/docker-compose.yml |
db |
hardware | healthy | scripts/gunicorn_managing_uvicorn_workers/docker-compose.yml |
redis |
hardware | healthy | scripts/gunicorn_managing_uvicorn_workers/docker-compose.yml |
create_superuser |
hardware | healthy | scripts/gunicorn_managing_uvicorn_workers/docker-compose.yml |
web |
hardware | healthy | scripts/local_with_uvicorn/docker-compose.yml |
worker |
hardware | healthy | scripts/local_with_uvicorn/docker-compose.yml |
db |
hardware | healthy | scripts/local_with_uvicorn/docker-compose.yml |
redis |
hardware | healthy | scripts/local_with_uvicorn/docker-compose.yml |
create_superuser |
hardware | healthy | scripts/local_with_uvicorn/docker-compose.yml |
pytest |
hardware | healthy | scripts/local_with_uvicorn/docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
RateLimit |
data | healthy | src/app/models/rate_limit.py |
rate_limit |
data | healthy | src/app/models/rate_limit.py |
Tier |
data | healthy | src/app/models/tier.py |
tier |
data | healthy | src/app/models/tier.py |
Post |
data | healthy | src/app/models/post.py |
post |
data | healthy | src/app/models/post.py |
User |
data | healthy | src/app/models/user.py |
user |
data | healthy | src/app/models/user.py |
Base |
data | healthy | src/app/core/db/database.py |
TokenBlacklist |
data | healthy | src/app/core/db/token_blacklist.py |
token_blacklist |
data | healthy | src/app/core/db/token_blacklist.py |
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::scripts/production_with_nginx/.env.example |
security | healthy | scripts/production_with_nginx/.env.example |
password_literal::scripts/production_with_nginx/.env.example |
security | healthy | scripts/production_with_nginx/.env.example |
password_literal::scripts/gunicorn_managing_uvicorn_workers… |
security | healthy | scripts/gunicorn_managing_uvicorn_workers/.env.example |
password_literal::scripts/gunicorn_managing_uvicorn_workers… |
security | healthy | scripts/gunicorn_managing_uvicorn_workers/.env.example |
password_literal::scripts/local_with_uvicorn/.env.example |
security | healthy | scripts/local_with_uvicorn/.env.example |
password_literal::scripts/local_with_uvicorn/.env.example |
security | healthy | scripts/local_with_uvicorn/.env.example |
| Label | Layer | Status | Path |
|---|---|---|---|
redis |
data | healthy | mkdocs.yml |
postgres |
data | healthy | scripts/production_with_nginx/.env.example |
postgresql |
data | healthy | scripts/production_with_nginx/.env.example |
sqlite |
data | healthy | src/app/core/config.py |
mysql |
data | healthy | src/app/core/config.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::tests |
cicd | healthy | .github/workflows/tests.yml |
gha::linting |
cicd | healthy | .github/workflows/linting.yml |
gha::type-checking |
cicd | healthy | .github/workflows/type-checking.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
cicd | healthy | .github/workflows/tests.yml |
lint |
cicd | healthy | .github/workflows/linting.yml |
type-check |
cicd | healthy | .github/workflows/type-checking.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8000 |
network | healthy | scripts/production_with_nginx/docker-compose.yml |
port:80 |
network | healthy | scripts/production_with_nginx/docker-compose.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::mkdocs.yml |
security | healthy | mkdocs.yml |
auth::src/app/core/security.py |
security | healthy | src/app/core/security.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-4votuxmw |
software | healthy | /tmp/repobility-clone-4votuxmw |
| Label | Layer | Status | Path |
|---|---|---|---|
env.py |
data | healthy | src/migrations/env.py |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | setup.py |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | setup.py |
This page is publicly accessible at:
https://repobility.com/scan/7be2b6f3-5c00-44fb-b169-5c6bfae29bdf/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/7be2b6f3-5c00-44fb-b169-5c6bfae29bdf/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.