Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

stoertebeker/picture-stage

https://github.com/stoertebeker/picture-stage · scanned 2026-06-16 00:22 UTC (2 months, 2 weeks ago)

102 raw signals (0 security + 102 graph)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 2 months, 2 weeks ago · v1 · 89 actionable findings from 1 signal source. 13 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

All 1162 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.

LabelLayerStatusPath
uploadZoneComponent software healthy frontend/static/js/components.js:uploadZoneComponent
guestViewerComponent software healthy frontend/static/js/components.js:guestViewerComponent
galleryManagerComponent software healthy frontend/static/js/components.js:galleryManagerComponent
langSwitcherComponent software healthy frontend/static/js/components.js:langSwitcherComponent
auditFilterComponent software healthy frontend/static/js/components.js:auditFilterComponent
shareUrlComponent software healthy frontend/static/js/components.js:shareUrlComponent
copyButtonComponent software healthy frontend/static/js/components.js:copyButtonComponent
settingsMenuComponent software healthy frontend/static/js/components.js:settingsMenuComponent
syncThemeToggleState software healthy frontend/static/js/app.js:syncThemeToggleState
toggleTheme software healthy frontend/static/js/app.js:toggleTheme
wireThemeToggles software healthy frontend/static/js/app.js:wireThemeToggles
openAutoDialogs software healthy frontend/static/js/app.js:openAutoDialogs
showToast software healthy frontend/static/js/app.js:showToast
role software healthy frontend/static/js/app.js:role
user_a_id software healthy tests/security/test_tenant_isolation.py:16
user_b_id software healthy tests/security/test_tenant_isolation.py:21
gallery_a_id software healthy tests/security/test_tenant_isolation.py:26
gallery_b_id software healthy tests/security/test_tenant_isolation.py:31
test_gallery_query_includes_owner_filter software healthy tests/security/test_tenant_isolation.py:38
test_gallery_list_query_filters_owner software healthy tests/security/test_tenant_isolation.py:52
test_gallery_detail_query_filters_owner software healthy tests/security/test_tenant_isolation.py:60
test_upload_checks_gallery_owner software healthy tests/security/test_tenant_isolation.py:74
test_list_images_checks_gallery_owner software healthy tests/security/test_tenant_isolation.py:80
test_export_checks_gallery_owner software healthy tests/security/test_tenant_isolation.py:90
test_share_create_checks_owner software healthy tests/security/test_tenant_isolation.py:100
test_share_revoke_checks_owner software healthy tests/security/test_tenant_isolation.py:106
test_admin_router_requires_admin software healthy tests/security/test_tenant_isolation.py:118
test_guest_router_has_no_admin_dependency software healthy tests/security/test_tenant_isolation.py:130
test_guest_router_never_serves_originals software healthy tests/security/test_tenant_isolation.py:137
test_selection_event_uses_request_session_id software healthy tests/integration/test_guest_selection_session.py:9
test_selection_event_rejects_session_from_other_gallery software healthy tests/integration/test_guest_selection_session.py:54
test_selection_persists_across_sessions_same_gallery software healthy tests/integration/test_guest_selection_session.py:95
test_selection_rejected_after_gallery_completed software healthy tests/integration/test_guest_selection_session.py:141
_override_get_db software healthy tests/integration/conftest.py:35
_reset_schema software healthy tests/integration/conftest.py:45
db software healthy tests/integration/conftest.py:56
verify_db software healthy tests/integration/conftest.py:63
client software healthy tests/integration/conftest.py:74
make_user software healthy tests/integration/conftest.py:81
auth_headers software healthy tests/integration/conftest.py:91
_make software healthy tests/integration/conftest.py:94
owner software healthy tests/integration/conftest.py:101
other_user software healthy tests/integration/conftest.py:106
_gallery_with_marks software healthy tests/integration/test_export_selections.py:14
test_export_txt_marked_is_comma_separated_filenames software healthy tests/integration/test_export_selections.py:48
test_export_marked_filter_excludes_untouched software healthy tests/integration/test_export_selections.py:67
test_export_rejects_unknown_format software healthy tests/integration/test_export_selections.py:84
test_selection_page_shows_only_marked_images software healthy tests/integration/test_export_selections.py:97
test_selection_page_is_owner_only software healthy tests/integration/test_export_selections.py:112
_make_shared_gallery software healthy tests/integration/test_expiry.py:13

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
README.md software healthy README.md
CLAUDE.md software healthy CLAUDE.md
tailwind.config.js software healthy tailwind.config.js
Dockerfile software healthy Dockerfile
.env.example software healthy .env.example
pyproject.toml software healthy pyproject.toml
LICENSE software healthy LICENSE
PLAN.md software healthy PLAN.md
AGENTS.md software healthy AGENTS.md
CHANGELOG.md software healthy CHANGELOG.md
docker-compose.yml software healthy docker-compose.yml
htmx.min.js software healthy frontend/static/js/htmx.min.js
alpine.min.js software healthy frontend/static/js/alpine.min.js
components.js software healthy frontend/static/js/components.js
app.js software healthy frontend/static/js/app.js
styles.css software healthy frontend/static/css/styles.css
input.css software healthy frontend/static/css/input.css
guest_password.html software healthy frontend/static/spikes/guest_password.html
dashboard.html software healthy frontend/static/spikes/dashboard.html
gallery_detail.html software healthy frontend/static/spikes/gallery_detail.html
legal_pages.html software healthy frontend/static/spikes/legal_pages.html
guest_viewer.html software healthy frontend/static/spikes/guest_viewer.html
guest_lightbox.html software healthy frontend/static/spikes/guest_lightbox.html
datenschutz.example.md software healthy legal/datenschutz.example.md
impressum.example.md software healthy legal/impressum.example.md
__init__.py software healthy tests/__init__.py
conftest.py software healthy tests/conftest.py
__init__.py software healthy tests/security/__init__.py
test_tenant_isolation.py software healthy tests/security/test_tenant_isolation.py
test_guest_selection_session.py software healthy tests/integration/test_guest_selection_session.py
__init__.py software healthy tests/integration/__init__.py
conftest.py software healthy tests/integration/conftest.py
test_export_selections.py software healthy tests/integration/test_export_selections.py
test_expiry.py software healthy tests/integration/test_expiry.py
test_guest_message.py software healthy tests/integration/test_guest_message.py
test_completion_notification.py software healthy tests/integration/test_completion_notification.py
test_gallery_delete.py software healthy tests/integration/test_gallery_delete.py
test_signup_enumeration.py software healthy tests/integration/test_signup_enumeration.py
test_guest_owner_status.py software healthy tests/integration/test_guest_owner_status.py
test_guest_complete.py software healthy tests/integration/test_guest_complete.py
test_audit_log.py software healthy tests/integration/test_audit_log.py
test_admin_users.py software healthy tests/integration/test_admin_users.py
test_frontend_gallery_detail.py software healthy tests/unit/test_frontend_gallery_detail.py
test_auth_disabled_status.py software healthy tests/unit/test_auth_disabled_status.py
test_client_ip_extraction.py software healthy tests/unit/test_client_ip_extraction.py
test_frontend_legal.py software healthy tests/unit/test_frontend_legal.py
test_jwt_invalidation.py software healthy tests/unit/test_jwt_invalidation.py
__init__.py software healthy tests/unit/__init__.py
test_gallery_quota.py software healthy tests/unit/test_gallery_quota.py
test_frontend_auth.py software healthy tests/unit/test_frontend_auth.py

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
TestGalleryIsolation software healthy tests/security/test_tenant_isolation.py:35
TestImageIsolation software healthy tests/security/test_tenant_isolation.py:71
TestExportIsolation software healthy tests/security/test_tenant_isolation.py:87
TestShareIsolation software healthy tests/security/test_tenant_isolation.py:97
TestAdminEndpoints software healthy tests/security/test_tenant_isolation.py:115
TestGuestApiIsolation software healthy tests/security/test_tenant_isolation.py:127
_StubUser software healthy tests/unit/test_auth_disabled_status.py:22
TestAllowedTransitions software healthy tests/unit/test_gallery_lifecycle.py:19
TestStatusFieldRemovedFromUpdate software healthy tests/unit/test_gallery_lifecycle.py:61
TestStatusTransitionSchema software healthy tests/unit/test_gallery_lifecycle.py:70
TestShareLinkAutoTransition software healthy tests/unit/test_gallery_lifecycle.py:88
TestTransitionEndpointGuards software healthy tests/unit/test_gallery_lifecycle.py:144
TestCompleteReviewEndpoint software healthy tests/unit/test_gallery_lifecycle.py:164
_U software healthy tests/unit/test_frontend_admin_users.py:18
_FakeSession software healthy tests/unit/test_preview_worker.py:26
_CapturingSession software healthy tests/unit/test_preview_worker.py:132
TestSortByEnum software healthy tests/unit/test_sort_filter.py:15
TestSortDirectionEnum software healthy tests/unit/test_sort_filter.py:40
TestImageFilterEnum software healthy tests/unit/test_sort_filter.py:54
TestExifDateParsing software healthy tests/unit/test_sort_filter.py:78
TestEndpointStructure software healthy tests/unit/test_sort_filter.py:114
_DataImagesExtractor software healthy tests/unit/test_frontend_guest.py:17
TestBulkDeleteSchema software healthy tests/unit/test_bulk_operations.py:15
TestBulkDeleteEndpoint software healthy tests/unit/test_bulk_operations.py:37
TestGalleryDuplicateSchema software healthy tests/unit/test_bulk_operations.py:68
TestGalleryDuplicateEndpoint software healthy tests/unit/test_bulk_operations.py:84
TestStorageCopyMethod software healthy tests/unit/test_bulk_operations.py:126
TestDashboardSchemas software healthy tests/unit/test_admin_dashboard.py:12
TestDashboardEndpointStructure software healthy tests/unit/test_admin_dashboard.py:58
TestNotificationSchemas software healthy tests/unit/test_notifications.py:28
TestSSRFProtection software healthy tests/unit/test_notifications.py:64
TestNotificationService software healthy tests/unit/test_notifications.py:118
TestNotificationRouter software healthy tests/unit/test_notifications.py:144
TestEmailTemplates software healthy tests/unit/test_notifications.py:173
TestCompleteReviewNotification software healthy tests/unit/test_notifications.py:187
TestNotifyAdminsSignup software healthy tests/unit/test_notifications.py:203
TestSendVerificationEmail software healthy tests/unit/test_notifications.py:296
TestNotifyOwnerGalleryCompleted software healthy tests/unit/test_notifications.py:383
Settings software healthy app/config.py:9
LocaleMiddleware software healthy app/main.py:61
CSRFMiddleware software healthy app/security/middleware.py:10
SecurityHeadersMiddleware software healthy app/security/middleware.py:63
ImageSortBy software healthy app/frontend/guest.py:36
SortDirection software healthy app/frontend/guest.py:42
ImageFilter software healthy app/frontend/guest.py:47
WatermarkConfig software healthy app/galleries/schemas.py:23
GalleryCreate software healthy app/galleries/schemas.py:53
GalleryUpdate software healthy app/galleries/schemas.py:75
GalleryStatusTransition software healthy app/galleries/schemas.py:96
GalleryResponse software healthy app/galleries/schemas.py:100

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
GET /health api healthy app/main.py
GET /set-lang/{locale} api healthy app/main.py
GET /impressum api healthy app/frontend/legal.py
GET /datenschutz api healthy app/frontend/legal.py
GET / api healthy app/frontend/dashboard.py
GET /dashboard api healthy app/frontend/dashboard.py
POST /dashboard/galleries api healthy app/frontend/dashboard.py
GET /login api healthy app/frontend/auth.py
POST /login api healthy app/frontend/auth.py
GET /signup api healthy app/frontend/auth.py
POST /signup api healthy app/frontend/auth.py
POST /logout api healthy app/frontend/auth.py
GET /verify-email/{token} api healthy app/frontend/auth.py
GET /galleries/{gallery_id} api healthy app/frontend/galleries.py
GET /galleries/{gallery_id}/selection api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/rename api healthy app/frontend/galleries.py
GET /galleries/{gallery_id}/images-grid api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/upload api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/share api healthy app/frontend/galleries.py
DELETE /galleries/{gallery_id}/share api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/password api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/expiry api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/watermark api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/message api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/status api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/bulk-delete api healthy app/frontend/galleries.py
POST /galleries/{gallery_id}/delete api healthy app/frontend/galleries.py
GET /galleries/{gallery_id}/export api healthy app/frontend/galleries.py
GET /galleries/{gallery_id}/audit-log api healthy app/frontend/galleries.py
GET /admin/signups api healthy app/frontend/admin.py
POST /admin/approve/{signup_id} api healthy app/frontend/admin.py
POST /admin/reject/{signup_id} api healthy app/frontend/admin.py
GET /admin/nav-badge api healthy app/frontend/admin.py
GET /admin/users api healthy app/frontend/admin.py
POST /admin/users/{user_id}/status/{action} api healthy app/frontend/admin.py
POST /admin/users/{user_id}/delete api healthy app/frontend/admin.py
POST /admin/users/{user_id}/reset-password api healthy app/frontend/admin.py
POST /admin/users/{user_id}/gallery-limit api healthy app/frontend/admin.py
GET /setup api healthy app/frontend/setup.py
POST /setup api healthy app/frontend/setup.py
GET /{token} api healthy app/frontend/guest.py
GET /{token}/gallery-images api healthy app/frontend/guest.py
POST /{token}/verify-password api healthy app/frontend/guest.py
POST / api healthy app/galleries/router.py
GET /{gallery_id} api healthy app/galleries/router.py
PATCH /{gallery_id} api healthy app/galleries/router.py
DELETE /{gallery_id} api healthy app/galleries/router.py
PATCH /{gallery_id}/status api healthy app/galleries/router.py
POST /{gallery_id}/duplicate api healthy app/galleries/router.py
GET /{gallery_id}/audit-log api healthy app/galleries/router.py

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
frontend software healthy frontend
static software healthy frontend/static
js software healthy frontend/static/js
css software healthy frontend/static/css
spikes software healthy frontend/static/spikes
legal software healthy legal
tests software healthy tests
security software healthy tests/security
integration software healthy tests/integration
unit software healthy tests/unit
migrations software healthy tests/migrations
docs software healthy docs
design software healthy docs/design
scripts software healthy scripts
app software healthy app
security software healthy app/security
frontend software healthy app/frontend
galleries software healthy app/galleries
notifications software healthy app/notifications
i18n software healthy app/i18n
auth software healthy app/auth
cli software healthy app/cli
templates software healthy app/templates
galleries software healthy app/templates/galleries
legal software healthy app/templates/legal
email software healthy app/templates/email
auth software healthy app/templates/auth
dashboard software healthy app/templates/dashboard
admin software healthy app/templates/admin
_macros software healthy app/templates/_macros
setup software healthy app/templates/setup
guest software healthy app/templates/guest
admin software healthy app/admin
selections software healthy app/selections
db software healthy app/db
images software healthy app/images
guest software healthy app/guest
storage software healthy app/storage
.claude software healthy .claude
alembic software healthy alembic
versions software healthy alembic/versions
.github software healthy .github
workflows software healthy .github/workflows

LabelLayerStatusPath
Base data healthy app/db/base.py
User data healthy app/db/models.py
Gallery data healthy app/db/models.py
Image data healthy app/db/models.py
ImagePreview data healthy app/db/models.py
SelectionEvent data healthy app/db/models.py
ShareSession data healthy app/db/models.py
AuditLog data healthy app/db/models.py
NotificationConfig data healthy app/db/models.py
NotificationDelivery data healthy app/db/models.py
PendingSignup data healthy app/db/models.py
users data healthy app/db/models.py
galleries data healthy app/db/models.py
images data healthy app/db/models.py
image_previews data healthy app/db/models.py
selection_events data healthy app/db/models.py
share_sessions data healthy app/db/models.py
audit_log data healthy app/db/models.py
notification_configs data healthy app/db/models.py
notification_deliveries data healthy app/db/models.py
pending_signups data healthy app/db/models.py

LabelLayerStatusPath
203.0.113.7 network healthy tests/integration/test_gallery_delete.py
198.51.100.1 network healthy tests/integration/test_audit_log.py
198.51.100.9 network healthy tests/integration/test_audit_log.py
127.0.0.1 network healthy tests/unit/test_client_ip_extraction.py
1.2.3.4 network healthy tests/unit/test_client_ip_extraction.py
9.9.9.9 network healthy tests/unit/test_client_ip_extraction.py
10.0.0.1 network healthy tests/unit/test_client_ip_extraction.py
172.16.0.1 network healthy tests/unit/test_client_ip_extraction.py
5.6.7.8 network healthy tests/unit/test_client_ip_extraction.py
192.168.1.1 network healthy tests/unit/test_client_ip_extraction.py
169.254.169.254 network healthy tests/unit/test_notifications.py

LabelLayerStatusPath
auth::tests/unit/test_jwt_invalidation.py security healthy tests/unit/test_jwt_invalidation.py
auth::tests/integration/test_admin_users.py security healthy tests/integration/test_admin_users.py
auth::README.md security healthy README.md
auth::app/auth/tokens.py security healthy app/auth/tokens.py
auth::alembic/versions/0003_add_tokens_valid_after.py security healthy alembic/versions/0003_add_tokens_valid_after.py
auth::app/config.py security healthy app/config.py
auth::CLAUDE.md security healthy CLAUDE.md

LabelLayerStatusPath
changes cicd healthy .github/workflows/docker-publish.yml
ci cicd healthy .github/workflows/docker-publish.yml
build-and-push cicd healthy .github/workflows/docker-publish.yml
lint-and-test cicd healthy .github/workflows/ci.yml

LabelLayerStatusPath
__init__.py data healthy tests/migrations/__init__.py
test_migration_drift.py data healthy tests/migrations/test_migration_drift.py
migrations.py data healthy app/db/migrations.py

LabelLayerStatusPath
port:587 network healthy README.md
port:8000 network healthy Dockerfile
port:5432 network healthy .github/workflows/ci.yml

LabelLayerStatusPath
image::Dockerfile hardware healthy Dockerfile
db hardware healthy docker-compose.yml
app hardware healthy docker-compose.yml

LabelLayerStatusPath
postgresql data healthy README.md
postgres data healthy CLAUDE.md

LabelLayerStatusPath
caddy network healthy CLAUDE.md
nginx network healthy .env.example

LabelLayerStatusPath
vps::aws hardware healthy README.md
vps::hetzner hardware healthy README.md

LabelLayerStatusPath
password_literal::tests/unit/test_signup_enumeration_unit.py security healthy tests/unit/test_signup_enumeration_unit.py
password_literal::tests/unit/test_signup_enumeration_unit.py security healthy tests/unit/test_signup_enumeration_unit.py

LabelLayerStatusPath
gha::docker-publish cicd healthy .github/workflows/docker-publish.yml
gha::ci cicd healthy .github/workflows/ci.yml

LabelLayerStatusPath
DOCKERHUB_TOKEN cicd healthy
DOCKERHUB_USERNAME cicd healthy

LabelLayerStatusPath
repobility-clone-18xl1cjr software healthy /tmp/repobility-clone-18xl1cjr
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/c872f4c9-ba0e-47be-ac58-3e0846ea8cf6/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/c872f4c9-ba0e-47be-ac58-3e0846ea8cf6/

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.