AzuTear 24f9a69022 Align backend with frontend, make clips end-to-end, polish admin
Backend
- Add ClipSubmission entity + table (runtime bootstrapper) and
  POST /api/public/clips (server-derives platform from the link)
- Surface clip submissions in the admin season detail
- Add DELETE candidate/category/clip endpoints with audit entries

Frontend
- Clips admin: real moderation view (list, open link, delete) instead
  of placeholder; wired clipSubmissions through types/api/store
- Categories admin: add delete with confirm modal (matches Candidates)
- Voting ranking bar uses the unified purple gradient
- Fix ASCII transliterations to proper German umlauts across admin
- Remove orphan AdminView 2.vue

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 07:53:19 +02:00

VTuber Star Awards

Monorepo for the VTuber Star Awards MVP.

Stack

  • Frontend: Vue 3, Vite, Pinia, Tailwind CSS, PrimeVue, shadcn-style Vue UI primitives
  • Backend: ASP.NET Core 8, EF Core 8, PostgreSQL

Structure

  • frontend/ Vue application
  • Backend/ ASP.NET Core API
  • prototype/ earlier visual prototype work
  • docker-compose.dev.yml optional local PostgreSQL container

Frontend

cd frontend
npm install
cp .env.example .env
npm run dev

The frontend uses a lightweight local session flow for development:

  • Sign in from the header
  • Viewer Login unlocks nomination and voting
  • Admin Login unlocks the admin routes and management views
  • Voting and nominations can be resubmitted; the backend updates the existing user state instead of blindly duplicating submissions

Backend

Update Backend/appsettings.json or set VTSA_POSTGRES, then:

cd Backend
dotnet restore
dotnet build
dotnet run

Local Database

If Docker is available locally:

docker compose -f docker-compose.dev.yml up -d
cd Backend
dotnet ef database update

Default dev database:

Host=localhost;Port=5433;Database=vtuber_star_awards_dev;Username=postgres;Password=postgres

If dotnet ef database update is unavailable in the current environment, the repository also contains a bootstrap SQL script:

cd Backend
psql "Host=localhost Port=5433 Database=vtuber_star_awards_dev Username=postgres Password=postgres" -f Migrations/InitialCreate.manual.sql

Verify the runtime wiring:

curl http://localhost:5084/api/health
curl http://localhost:5084/api/health/database

Development auth/session endpoints:

curl -X POST http://localhost:5084/api/auth/dev-login \
  -H "Content-Type: application/json" \
  -d '{"twitchUserId":"jayuhime_demo","displayName":"Jayuhime","role":"admin"}'

Notes

  • Public endpoints live under /api/public/*
  • Admin summary endpoint lives under /api/admin/dashboard
  • Session endpoints live under /api/auth/*
  • Database connectivity and pending migrations are exposed at /api/health/database
  • Current frontend store falls back to static seed-like data if the API is unavailable
  • The admin dashboard now includes a lightweight risk center and audit log for suspicious submit patterns and reviewed admin actions
S
Description
No description provided
Readme 111 MiB
Languages
Vue 38.8%
C# 36.5%
TypeScript 20.6%
CSS 3.9%
Shell 0.2%