Nevernight Vk May 2026

-- Themes CREATE TABLE themes ( id BIGSERIAL PRIMARY KEY, name TEXT, banner_url TEXT, music_url TEXT, start_time TIMESTAMP, end_time TIMESTAMP ); | Method | Path | Auth | Description | |--------|------|------|-------------| | GET | /api/feed?limit=20&offset=0 | optional | Returns ordered list of posts for the live wall. | | POST | /api/posts | required | Payload: type, media, text, theme_id . Returns post ID. | | POST | /api/posts/:id/react | required | Payload: emoji . Returns updated counters. | | POST | /api/posts/:id/vote | required | No body. Returns success/failure. | | GET | /api/themes/current | none | Returns the active theme (banner, music). | | GET | /api/leaderboard?period=day | none | Top 10 users by night‑score. | | GET | /api/admin/pending | admin only | List of flagged posts for manual review. | | POST | /api/admin/themes | admin only | Create or update a night‑theme schedule. | | POST | /api/admin/pin/:postId | admin only | Pin a post as Night‑Master (24 h). |

<div class="posts"> <PostCard v-for="p in posts" :key="p.id" :post="p" @react="handleReact" @vote="handleVote"/> </div> nevernight vk

<script setup> import ref, onMounted from 'vue'; import io from 'socket.io-client'; import PostCard from '@/components/PostCard.vue'; import SubmitModal from '@/components/SubmitModal.vue'; import fetchCurrentTheme, fetchFeed from '@/api'; -- Themes CREATE TABLE themes ( id BIGSERIAL