How kerevizodunu2000/rosu-web works
Rosu-web is the marketing site and report-management backend for the Rosu desktop app. Its main workflow accepts reports from either the web form or desktop client, validates and rate-limits them, stores report records and optional screenshots, then archives pending reports and images to Drive. Admins authenticate to review submissions, retrieve protected images, and trigger archives. The archive job and several UI/API modules were not sampled, so those links follow documented capabilities and route names; implementation details beyond that are not inferred.
Main entry points: route.ts Report endpoint · archiveJob.ts Archive job · page.tsx Admin submissions · reportService.ts Report handling
Components 24
Public website
- Landing page
app/(site)/page.tsx - Report page
app/(site)/report/page.tsx - Privacy and terms
app/(site)/privacy/page.tsx - Report form
components/ReportForm.tsx
Report intake
- Report endpoint
app/api/report/route.ts - Report handling
lib/reportService.ts - Input validation
lib/validation.ts - Rate limiting
lib/ratelimit.ts
Archive processing
- Drive client
lib/drive.ts - Archive job
lib/archiveJob.ts - Archive assembly
lib/archiveService.ts - ZIP builder
lib/zip.ts
Admin operations
- Admin submissions
app/admin/page.tsx - Submissions table
components/AdminTable.tsx - Admin login
app/api/admin/login/route.ts - Manual archive
app/api/admin/archive/route.ts - Protected image proxy
app/api/admin/image/[id]/route.ts - Session handling
lib/session.ts
Other components
- Site visitor
- Rosu desktop app
- Turnstile
- Neon report store
- Google Drive
- Scheduled archive
Connections 29
- Site visitor → Landing page: views
- Site visitor → Report page: opens
- Report page → Report form: renders
- Site visitor → Report form: submits
- Report form → Report endpoint: POSTs report
- Rosu desktop app → Report endpoint: POSTs report
- Report endpoint → Report handling: handles report
- Report handling → Input validation: validates
- Report handling → Turnstile: verifies web token
- Report handling → Rate limiting: checks limits
- Report endpoint → Neon report store: stores report and limits
- Report endpoint → Drive client: uploads screenshot
- Drive client → Google Drive: stores image
- Scheduled archive → Archive job: triggers daily
- Report endpoint → Archive job: triggers threshold archive
- Manual archive → Archive job: triggers manual archive
- Archive job → Archive assembly: runs archive
- Archive assembly → ZIP builder: builds archive
- Archive job → Neon report store: reads and marks reports
- Archive job → Drive client: moves images and archive
- Admin submissions → Submissions table: shows submissions
- Admin submissions → Admin login: authenticates
- Admin login → Session handling: creates session
- Admin submissions → Manual archive: requests archive
- Manual archive → Session handling: verifies session
- Admin submissions → Protected image proxy: requests image
- Protected image proxy → Session handling: verifies session
- Protected image proxy → Neon report store: looks up image record
- Protected image proxy → Drive client: downloads image