https://github.com/Winner-Nick/exam-tutor
· scanned 2026-06-16 00:58 UTC (2 months, 1 week ago)
99 raw signals (0 security + 99 graph)
Last scanned 2 months, 1 week ago · v1 · 93 actionable findings from 1 signal source. 6 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 462 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 |
|---|---|---|---|
request |
software | healthy | frontend/src/api.ts:request |
upload |
software | healthy | frontend/src/api.ts:upload |
pageImageUrl |
software | healthy | frontend/src/api.ts:pageImageUrl |
paperPageImageUrl |
software | healthy | frontend/src/api.ts:paperPageImageUrl |
initialTheme |
software | healthy | frontend/src/store.ts:initialTheme |
Protected |
software | healthy | frontend/src/App.tsx:Protected |
App |
software | healthy | frontend/src/App.tsx:App |
compressImage |
software | healthy | frontend/src/utils/compressImage.ts:compressImage |
compressPicked |
software | healthy | frontend/src/utils/compressImage.ts:compressPicked |
installErrorBuffer |
software | healthy | frontend/src/utils/diagnostics.ts:installErrorBuffer |
push |
software | healthy | frontend/src/utils/diagnostics.ts:push |
collectDiag |
software | healthy | frontend/src/utils/diagnostics.ts:collectDiag |
supports |
software | healthy | frontend/src/utils/diagnostics.ts:supports |
DonutChart |
software | healthy | frontend/src/components/DonutChart.tsx:DonutChart |
StudentFilter |
software | healthy | frontend/src/components/StudentFilter.tsx:StudentFilter |
Spinner |
software | healthy | frontend/src/components/Spinner.tsx:Spinner |
Dropzone |
software | healthy | frontend/src/components/Dropzone.tsx:Dropzone |
pick |
software | healthy | frontend/src/components/Dropzone.tsx:pick |
StatusBadge |
software | healthy | frontend/src/components/StatusBadge.tsx:StatusBadge |
StageStepper |
software | healthy | frontend/src/components/StageStepper.tsx:StageStepper |
ExplanationCard |
software | healthy | frontend/src/components/ExplanationCard.tsx:ExplanationCard |
useToast |
software | healthy | frontend/src/components/Toast.tsx:useToast |
ToastProvider |
software | healthy | frontend/src/components/Toast.tsx:ToastProvider |
AppShell |
software | healthy | frontend/src/components/AppShell.tsx:AppShell |
QuestionDetail |
software | healthy | frontend/src/components/QuestionDetail.tsx:QuestionDetail |
patchQuestion |
software | healthy | frontend/src/components/QuestionDetail.tsx:patchQuestion |
Markdown |
software | healthy | frontend/src/components/Markdown.tsx:Markdown |
FeedbackDialog |
software | healthy | frontend/src/components/FeedbackDialog.tsx:FeedbackDialog |
onKey |
software | healthy | frontend/src/components/FeedbackDialog.tsx:onKey |
QuestionGrid |
software | healthy | frontend/src/components/QuestionGrid.tsx:QuestionGrid |
ChatPanel |
software | healthy | frontend/src/components/ChatPanel.tsx:ChatPanel |
submit |
software | healthy | frontend/src/components/ChatPanel.tsx:submit |
PaperViewer |
software | healthy | frontend/src/components/PaperViewer.tsx:PaperViewer |
onKey |
software | healthy | frontend/src/components/PaperViewer.tsx:onKey |
MistakesPage |
software | healthy | frontend/src/pages/MistakesPage.tsx:MistakesPage |
LoginPage |
software | healthy | frontend/src/pages/LoginPage.tsx:LoginPage |
submit |
software | healthy | frontend/src/pages/LoginPage.tsx:submit |
TrendChart |
software | healthy | frontend/src/pages/StatsPage.tsx:TrendChart |
xy |
software | healthy | frontend/src/pages/StatsPage.tsx:xy |
StatsPage |
software | healthy | frontend/src/pages/StatsPage.tsx:StatsPage |
graded |
software | healthy | frontend/src/pages/StatsPage.tsx:graded |
Card |
software | healthy | frontend/src/pages/SettingsPage.tsx:Card |
InviteManager |
software | healthy | frontend/src/pages/SettingsPage.tsx:InviteManager |
copy |
software | healthy | frontend/src/pages/SettingsPage.tsx:copy |
FeedbackItem |
software | healthy | frontend/src/pages/SettingsPage.tsx:FeedbackItem |
FeedbackManager |
software | healthy | frontend/src/pages/SettingsPage.tsx:FeedbackManager |
SettingsPage |
software | healthy | frontend/src/pages/SettingsPage.tsx:SettingsPage |
logout |
software | healthy | frontend/src/pages/SettingsPage.tsx:logout |
submitPw |
software | healthy | frontend/src/pages/SettingsPage.tsx:submitPw |
fmtSize |
software | healthy | frontend/src/pages/DownloadPage.tsx:fmtSize |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
run.sh |
software | healthy | run.sh |
.env.example |
software | healthy | .env.example |
requirements.txt |
software | healthy | requirements.txt |
vite.config.ts |
software | healthy | frontend/vite.config.ts |
package.json |
software | healthy | frontend/package.json |
index.html |
software | healthy | frontend/index.html |
package-lock.json |
software | healthy | frontend/package-lock.json |
tsconfig.json |
software | healthy | frontend/tsconfig.json |
index.css |
software | healthy | frontend/src/index.css |
api.ts |
software | healthy | frontend/src/api.ts |
store.ts |
software | healthy | frontend/src/store.ts |
main.tsx |
software | healthy | frontend/src/main.tsx |
App.tsx |
software | healthy | frontend/src/App.tsx |
types.ts |
software | healthy | frontend/src/types.ts |
compressImage.ts |
software | healthy | frontend/src/utils/compressImage.ts |
diagnostics.ts |
software | healthy | frontend/src/utils/diagnostics.ts |
DonutChart.tsx |
software | healthy | frontend/src/components/DonutChart.tsx |
StudentFilter.tsx |
software | healthy | frontend/src/components/StudentFilter.tsx |
Spinner.tsx |
software | healthy | frontend/src/components/Spinner.tsx |
Dropzone.tsx |
software | healthy | frontend/src/components/Dropzone.tsx |
StatusBadge.tsx |
software | healthy | frontend/src/components/StatusBadge.tsx |
StageStepper.tsx |
software | healthy | frontend/src/components/StageStepper.tsx |
ExplanationCard.tsx |
software | healthy | frontend/src/components/ExplanationCard.tsx |
Toast.tsx |
software | healthy | frontend/src/components/Toast.tsx |
AppShell.tsx |
software | healthy | frontend/src/components/AppShell.tsx |
QuestionDetail.tsx |
software | healthy | frontend/src/components/QuestionDetail.tsx |
Markdown.tsx |
software | healthy | frontend/src/components/Markdown.tsx |
FeedbackDialog.tsx |
software | healthy | frontend/src/components/FeedbackDialog.tsx |
QuestionGrid.tsx |
software | healthy | frontend/src/components/QuestionGrid.tsx |
ChatPanel.tsx |
software | healthy | frontend/src/components/ChatPanel.tsx |
PaperViewer.tsx |
software | healthy | frontend/src/components/PaperViewer.tsx |
MistakesPage.tsx |
software | healthy | frontend/src/pages/MistakesPage.tsx |
LoginPage.tsx |
software | healthy | frontend/src/pages/LoginPage.tsx |
StatsPage.tsx |
software | healthy | frontend/src/pages/StatsPage.tsx |
SettingsPage.tsx |
software | healthy | frontend/src/pages/SettingsPage.tsx |
DownloadPage.tsx |
software | healthy | frontend/src/pages/DownloadPage.tsx |
DashboardPage.tsx |
software | healthy | frontend/src/pages/DashboardPage.tsx |
StudentsPage.tsx |
software | healthy | frontend/src/pages/StudentsPage.tsx |
JobPage.tsx |
software | healthy | frontend/src/pages/JobPage.tsx |
PapersPage.tsx |
software | healthy | frontend/src/pages/PapersPage.tsx |
PaperPage.tsx |
software | healthy | frontend/src/pages/PaperPage.tsx |
useJobEvents.ts |
software | healthy | frontend/src/hooks/useJobEvents.ts |
migrate_to_papers.py |
software | healthy | backend/scripts/migrate_to_papers.py |
migrate_json_jobs.py |
software | healthy | backend/scripts/migrate_json_jobs.py |
__init__.py |
software | healthy | backend/app/__init__.py |
prompts.py |
software | healthy | backend/app/prompts.py |
db.py |
software | healthy | backend/app/db.py |
config.py |
software | healthy | backend/app/config.py |
auth.py |
software | healthy | backend/app/auth.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
GET /api/health |
api | healthy | backend/app/main.py |
GET /{path:path} |
api | healthy | backend/app/main.py |
POST / |
api | healthy | backend/app/routers/papers.py |
POST /manual |
api | healthy | backend/app/routers/papers.py |
POST /{paper_id}/files |
api | healthy | backend/app/routers/papers.py |
GET / |
api | healthy | backend/app/routers/papers.py |
GET /{paper_id} |
api | healthy | backend/app/routers/papers.py |
PATCH /{paper_id} |
api | healthy | backend/app/routers/papers.py |
DELETE /{paper_id} |
api | healthy | backend/app/routers/papers.py |
POST /{paper_id}/reprocess |
api | healthy | backend/app/routers/papers.py |
POST /{paper_id}/questions |
api | healthy | backend/app/routers/papers.py |
DELETE /{paper_id}/questions/{qid} |
api | healthy | backend/app/routers/papers.py |
PATCH /{paper_id}/questions/{qid} |
api | healthy | backend/app/routers/papers.py |
GET /{paper_id}/events |
api | healthy | backend/app/routers/papers.py |
GET /{paper_id}/page/{n} |
api | healthy | backend/app/routers/papers.py |
POST /feedback |
api | healthy | backend/app/routers/feedback.py |
GET /admin/feedback |
api | healthy | backend/app/routers/feedback.py |
DELETE /admin/feedback/{feedback_id} |
api | healthy | backend/app/routers/feedback.py |
POST /register |
api | healthy | backend/app/routers/auth.py |
POST /login |
api | healthy | backend/app/routers/auth.py |
POST /logout |
api | healthy | backend/app/routers/auth.py |
GET /me |
api | healthy | backend/app/routers/auth.py |
POST /password |
api | healthy | backend/app/routers/auth.py |
POST /invites |
api | healthy | backend/app/routers/auth.py |
GET /invites |
api | healthy | backend/app/routers/auth.py |
DELETE /invites/{code} |
api | healthy | backend/app/routers/auth.py |
POST /{qid}/override |
api | healthy | backend/app/routers/questions.py |
POST /{qid}/explain |
api | healthy | backend/app/routers/questions.py |
GET /{tag}/apk |
api | healthy | backend/app/routers/releases.py |
POST /submissions |
api | healthy | backend/app/routers/jobs.py |
POST /jobs/{job_id}/files |
api | healthy | backend/app/routers/jobs.py |
GET /jobs |
api | healthy | backend/app/routers/jobs.py |
GET /jobs/{job_id} |
api | healthy | backend/app/routers/jobs.py |
DELETE /jobs/{job_id} |
api | healthy | backend/app/routers/jobs.py |
GET /jobs/{job_id}/events |
api | healthy | backend/app/routers/jobs.py |
GET /jobs/{job_id}/page/{n} |
api | healthy | backend/app/routers/jobs.py |
GET /mistakes |
api | healthy | backend/app/routers/insights.py |
GET /stats/overview |
api | healthy | backend/app/routers/insights.py |
POST /ask |
api | healthy | backend/app/routers/chat.py |
GET /chat |
api | healthy | backend/app/routers/chat.py |
PATCH /{student_id} |
api | healthy | backend/app/routers/students.py |
DELETE /{student_id} |
api | healthy | backend/app/routers/students.py |
| Label | Layer | Status | Path |
|---|---|---|---|
/MistakesPage |
frontend | healthy | frontend/src/pages/MistakesPage.tsx |
/LoginPage |
frontend | healthy | frontend/src/pages/LoginPage.tsx |
/StatsPage |
frontend | healthy | frontend/src/pages/StatsPage.tsx |
/SettingsPage |
frontend | healthy | frontend/src/pages/SettingsPage.tsx |
/DownloadPage |
frontend | healthy | frontend/src/pages/DownloadPage.tsx |
/DashboardPage |
frontend | healthy | frontend/src/pages/DashboardPage.tsx |
/StudentsPage |
frontend | healthy | frontend/src/pages/StudentsPage.tsx |
/JobPage |
frontend | healthy | frontend/src/pages/JobPage.tsx |
/PapersPage |
frontend | healthy | frontend/src/pages/PapersPage.tsx |
/PaperPage |
frontend | healthy | frontend/src/pages/PaperPage.tsx |
/login |
frontend | healthy | frontend/src/App.tsx |
/download |
frontend | healthy | frontend/src/App.tsx |
/ |
frontend | healthy | frontend/src/App.tsx |
/jobs/:jobId |
frontend | healthy | frontend/src/App.tsx |
/papers |
frontend | healthy | frontend/src/App.tsx |
/papers/:paperId |
frontend | healthy | frontend/src/App.tsx |
/students |
frontend | healthy | frontend/src/App.tsx |
/mistakes |
frontend | healthy | frontend/src/App.tsx |
/stats |
frontend | healthy | frontend/src/App.tsx |
/settings |
frontend | healthy | frontend/src/App.tsx |
* |
frontend | healthy | frontend/src/App.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
ApiError |
software | healthy | frontend/src/api.ts:ApiError |
Settings |
software | healthy | backend/app/config.py:23 |
AskRequest |
software | healthy | backend/app/models.py:7 |
OverrideRequest |
software | healthy | backend/app/models.py:12 |
RegisterRequest |
software | healthy | backend/app/models.py:17 |
LoginRequest |
software | healthy | backend/app/models.py:23 |
ChangePasswordRequest |
software | healthy | backend/app/models.py:28 |
InviteCreateRequest |
software | healthy | backend/app/models.py:33 |
StudentRequest |
software | healthy | backend/app/models.py:38 |
PaperUpdateRequest |
software | healthy | backend/app/models.py:42 |
PaperAnswerRequest |
software | healthy | backend/app/models.py:46 |
FeedbackRequest |
software | healthy | backend/app/models.py:50 |
PaperQuestionCreateRequest |
software | healthy | backend/app/models.py:56 |
SecurityHeadersMiddleware |
software | healthy | backend/app/security.py:130 |
OriginCheckMiddleware |
software | healthy | backend/app/security.py:170 |
| Label | Layer | Status | Path |
|---|---|---|---|
frontend |
software | healthy | frontend |
src |
software | healthy | frontend/src |
utils |
software | healthy | frontend/src/utils |
components |
software | healthy | frontend/src/components |
pages |
software | healthy | frontend/src/pages |
hooks |
software | healthy | frontend/src/hooks |
backend |
software | healthy | backend |
scripts |
software | healthy | backend/scripts |
app |
software | healthy | backend/app |
routers |
software | healthy | backend/app/routers |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
users |
data | healthy | backend/app/db.py |
invite_codes |
data | healthy | backend/app/db.py |
jobs |
data | healthy | backend/app/db.py |
questions |
data | healthy | backend/app/db.py |
chat_messages |
data | healthy | backend/app/db.py |
students |
data | healthy | backend/app/db.py |
papers |
data | healthy | backend/app/db.py |
paper_files |
data | healthy | backend/app/db.py |
paper_questions |
data | healthy | backend/app/db.py |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::README.md |
security | healthy | README.md |
auth::backend/app/auth.py |
security | healthy | backend/app/auth.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-fkzg7yll |
software | healthy | /tmp/repobility-clone-fkzg7yll |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
caddy |
network | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
port:5173 |
network | healthy | frontend/vite.config.ts |
| Label | Layer | Status | Path |
|---|---|---|---|
App |
frontend | healthy | frontend/src/App.tsx |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::android-apk |
cicd | healthy | .github/workflows/android-apk.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
build |
cicd | healthy | .github/workflows/android-apk.yml |
This page is publicly accessible at:
https://repobility.com/scan/0918add0-8638-4040-9ce4-c54e6e22a8b0/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/0918add0-8638-4040-9ce4-c54e6e22a8b0/
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.