24f9a690225abb6eb2a41714a03aab40d62dbd7c
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>
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 applicationBackend/ASP.NET Core APIprototype/earlier visual prototype workdocker-compose.dev.ymloptional 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 Loginunlocks nomination and votingAdmin Loginunlocks 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
Description
Languages
Vue
38.8%
C#
36.5%
TypeScript
20.6%
CSS
3.9%
Shell
0.2%