Ja. Jeg synes idéen er pissegod.

Den har tre ting, som mange communities mangler:

1. En ultra simpel daglig vane
    “Svar på dagens spørgsmål” er nemt at forstå. Ingen forklaring med 17 onboarding-skærme og en founders LinkedIn-video i modlys.
2. Et fælles samlingspunkt
    Alle svarer på det samme spørgsmål. Det gør det meget lettere at skabe samtale end et almindeligt feed, hvor alle råber hvert sit sted.
3. Et naturligt creator-format
    “Svar på dagens spørgsmål” er oplagt til TikTok, Shorts og Reels. Det kan blive en daglig prompt for creators.

Og brandet:

pnk

Ét spørgsmål om dagen. Mange svar.

Mindre i. Mere vi.

Det sidder.
“pnk — vi havde ikke råd til vokaler” kan være den kække kampagne-linje.
“Mindre i. Mere vi.” er den stærke brandlinje.

⸻

Her er en stor samlet byggeprompt, du kan bruge til at få bygget første version: website, API og adminpanel i PHP 8 + MySQL.

Du kan smide den direkte ind i en kode-agent eller bruge den som teknisk specifikation.

Du skal bygge en komplet dansk webplatform kaldet “pnk”.

PNK er et simpelt dansk community bygget omkring ét spørgsmål om dagen.

Brand:
- Navn: pnk
- Udtales: pink
- Motto: “Ét spørgsmål om dagen. Mange svar.”
- Sekundære brandlinjer:
  - “Mindre i. Mere vi.”
  - “pnk — vi havde ikke råd til vokaler.”
- Tone: minimalistisk, sjov, dansk, tryg, community-drevet, lidt kæk.
- Design: moderne, unikt, minimalistisk, mobil-first, store typografiske spørgsmål, emojis, bløde kort, fokus på dagens spørgsmål.

Primær idé:
Brugeren åbner pnk.dk og ser dagens spørgsmål med stort. Under spørgsmålet er der en stor tydelig svarknap. Under svarknappen vises nogle få offentlige svar, fx 5 svar. For at se alle svar, like, kommentere eller svare selv skal brugeren logge ind.

Platformen skal først bygges som:
1. Website
2. API til web, senere iOS og Android
3. Adminpanel
4. Moderationssystem
5. Reputation/rank-system
6. Spørgsmålsplanlægning
7. AI-hjælp til spørgsmål
8. Content creator-sektion

Teknologi:
- PHP 8.3
- MySQL 8+
- Vanilla PHP eller let MVC-struktur
- PDO med prepared statements
- REST API
- JSON responses
- Sessions/JWT til auth afhængigt af web/API-flow
- Passwordless/social login-struktur
- HTML, CSS, JavaScript
- Ingen tung frontend-framework i første version, medmindre det giver meget mening
- Skal være let at vedligeholde
- Skal være sikkert, struktureret og skalerbart

Projektstruktur:
Brug en moderne, ryddelig PHP-struktur:

/config
  app.php
  database.php
  auth.php
  moderation.php

/www
  index.php
  assets/
    css/
    js/
    img/

/app
  Core/
    Router.php
    Request.php
    Response.php
    Database.php
    Auth.php
    Validator.php
    View.php
  Controllers/
    HomeController.php
    AuthController.php
    QuestionController.php
    AnswerController.php
    CommentController.php
    ReactionController.php
    AdminController.php
    Api/
      QuestionApiController.php
      AnswerApiController.php
      AuthApiController.php
      UserApiController.php
  Models/
    User.php
    Question.php
    Answer.php
    Comment.php
    Reaction.php
    Report.php
    ModerationItem.php
    ReputationLog.php
    CreatorVideo.php
  Services/
    AuthService.php
    QuestionService.php
    AnswerService.php
    ModerationService.php
    ReputationService.php
    AiQuestionService.php
    NotificationService.php
    CreatorService.php
  Repositories/
    UserRepository.php
    QuestionRepository.php
    AnswerRepository.php
    CommentRepository.php
    ModerationRepository.php
    CreatorVideoRepository.php
  Middleware/
    AuthMiddleware.php
    AdminMiddleware.php
    ModeratorMiddleware.php
    RateLimitMiddleware.php

/admin
  dashboard.php eller routes via controller

/api
  routes håndteres via www/index.php

/storage
  uploads/
    questions/
    avatars/
  logs/

/database
  migrations/
  seeds/

Første version skal være monolitisk, men med god separation mellem controllers, services og repositories.

Sprog:
- Hele brugerfladen er dansk.
- Alle labels, fejlbeskeder, onboarding og moderationstekster skal være på dansk.
- Koden må gerne bruge engelske klassenavne og metodenavne.

Kerneroller:
- guest
- user
- trusted_user
- content_creator
- moderator
- admin
- owner

Owner:
- Har fuld kontrol
- Kan gøre andre brugere til moderator, admin eller content creator
- Kan se alle data
- Kan ændre moderation settings
- Kan oprette, redigere, slette og planlægge spørgsmål
- Kan styre fy-ord/filterliste
- Kan se moderation queue
- Kan se reputation logs

Brugerfunktioner:
1. Forside
   - Viser dagens spørgsmål
   - Spørgsmålet kan indeholde:
     - Tekst
     - Emojis
     - Valgfrit billede
   - Stor CTA-knap: “Svar på dagens spørgsmål”
   - Viser fx 5 nyeste/populære/gode svar nedenunder
   - Hvis brugeren ikke er logget ind og klikker svar, vis login-modal
   - Hvis brugeren vil se alle svar, kræv login

2. Login
   Understøt login med:
   - Google
   - Apple
   - Facebook
   - Discord

   Byg auth-systemet modulært, så providers kan implementeres en ad gangen.
   Gem social provider, provider_user_id, email, display_name, avatar_url.

3. Besvar spørgsmål
   - Login kræves
   - Brugeren kan skrive ét primært svar per spørgsmål
   - Svar kan redigeres i en kort periode eller indtil det er godkendt
   - Svar sendes gennem moderation afhængigt af brugerens status
   - Hvis bruger har høj reputation eller aktivt “instant posting”-privilegium, kan svar publiceres direkte, medmindre fy-ord/filter rammes

4. Tidligere spørgsmål
   - Brugeren kan se et arkiv over tidligere spørgsmål
   - Brugeren kan åbne et tidligere spørgsmål
   - Brugeren kan svare på tidligere spørgsmål
   - Brugeren kan se svar og kommentarer til tidligere spørgsmål

5. Random
   - En side/knap: “Random spørgsmål”
   - Finder et tilfældigt spørgsmål, brugeren ikke har svaret på endnu
   - Brugeren kan svare direkte

6. Svar-feed
   For hvert spørgsmål:
   - Liste over svar
   - Sortering:
     - Nyeste
     - Mest likede
     - Mest kommenterede
     - Redaktørens valg/admin featured
   - Brugere kan like svar
   - Brugere kan kommentere på svar
   - Kommentarer kan have tråde/nested replies, gerne maks 2-3 niveauer i første version
   - Kommentarer modereres også

7. Reactions på spørgsmål
   Brugere kan reagere på selve spørgsmålet med emojis, fx:
   - 😂 sjovt
   - 🤔 tankevækkende
   - ❤️ godt
   - 😬 svært
   - 🔥 fedt
   - 💤 kedeligt

   Gem kun én reaction per bruger per spørgsmål, eller tillad flere afhængigt af config.

8. Indsend eget spørgsmål
   - Brugere kan foreslå nye spørgsmål
   - Forslag går altid til moderation/admin queue i starten
   - Admin/moderator kan godkende, afvise eller redigere spørgsmålet
   - Godkendte spørgsmål kan føjes til planlægningskalenderen
   - Brugere får reputation, hvis deres spørgsmål bliver brugt

9. Content creator-funktion
   - Admin/owner kan markere en bruger som content_creator
   - Content creators kan indsende videolinks til et spørgsmål
   - Understøt links fra:
     - YouTube Shorts
     - TikTok
     - Instagram Reels
   - Video submissions skal kunne modereres
   - Godkendte videoer vises på spørgsmålssiden i en særlig creator-sektion
   - Admin kan feature videoer
   - Tabellen skal gemme platform, original_url, embed_url, status, user_id, question_id

10. Push-notifikationer
   - Byg database og API klar til push tokens
   - Første version på web kan nøjes med email/web placeholders
   - Senere skal iOS og Android kunne modtage push med dagens spørgsmål
   - API endpoint til at registrere device token

Moderation:
Dette er meget vigtigt, fordi målgruppen også kan være yngre brugere.

Alle nye brugeres indhold skal modereres i starten.

Indholdstyper der kan modereres:
- answers
- comments
- question_suggestions
- creator_videos
- profile fields, hvis relevant

Moderation statuses:
- pending
- approved
- rejected
- flagged
- deleted

Moderation-regler:
- Nye brugeres første X svar skal godkendes manuelt
- Nye brugeres første X kommentarer skal godkendes manuelt
- Hvis brugerens reputation er høj nok, kan indhold publiceres automatisk
- Hvis indhold rammer fy-ord/filterliste, skal det altid sendes til moderation
- Hvis bruger bliver rapporteret ofte, skal brugerens trust falde
- Moderatorer kan godkende, afvise, redigere eller slette indhold
- Alle moderation actions logges

Fy-ord/filterliste:
- Admin kan oprette ord og fraser
- Felter:
  - word/phrase
  - severity
  - action: flag, auto_pending, auto_reject
  - active
- ModerationService skal tjekke alt nyt brugerindhold mod filterlisten
- Hvis et ord rammes, gem matched terms i moderation item

Reputation-system:
Brugere skal kunne optjene tillid.

Positive handlinger:
- Får svar godkendt
- Får kommentarer godkendt
- Får likes
- Får spørgsmål godkendt
- Får spørgsmål brugt som dagens spørgsmål
- Har mange dage uden moderation-problemer

Negative handlinger:
- Indhold afvist
- Indhold rapporteret og bekræftet
- Fy-ord/filter-hit
- Moderator advarsel
- Spam/rate limit

Reputation skal påvirke:
- Om bruger kan poste uden manuel moderation
- Om bruger kan kommentere direkte
- Om bruger kan indsende flere spørgsmål
- Om bruger kan blive content creator
- Om bruger kan få badges/rank

Ranks:
- Ny
- På vej
- Grøn
- Betroet
- PNK’er
- Super-PNK’er

Eksempel:
- Under 20 point: alt modereres
- 20-99 point: svar kan auto-godkendes, kommentarer modereres nogle gange
- 100+ point: svar og kommentarer publiceres direkte, medmindre filter rammes
- Negative point sender bruger tilbage i moderation

Instant posting / køb:
Der skal forberedes en feature hvor brugeren kan købe et privilegium, især relevant i iOS senere.

Vigtigt:
- Køb må ikke fuldstændig bypass’e sikkerhed
- Selv betalende brugere skal stadig ramme moderation ved fy-ord, reports, spam eller høj risiko
- Købet giver “priority trust” eller “instant posting unless flagged”
- Gem subscriptions/purchases i database
- API skal være klar til senere App Store / Google Play receipt validation

Adminpanel:
Byg et flot, hurtigt og meget brugervenligt adminpanel.

Admin skal kunne:
1. Dashboard
   - Dagens spørgsmål
   - Antal svar i dag
   - Antal pending moderation items
   - Nye brugere
   - Rapporter
   - Mest aktive spørgsmål
   - Hurtige actions

2. Spørgsmål
   - Opret spørgsmål
   - Rediger spørgsmål
   - Upload billede
   - Tilføj emojis
   - Planlæg spørgsmål på dato
   - Se kalender over kommende spørgsmål
   - Markér spørgsmål som aktivt
   - Arkiv
   - AI-forslag

3. AI Question Generator
   - Admin kan bede AI foreslå fx 10, 25 eller 100 spørgsmål
   - Spørgsmål skal være danske
   - Spørgsmål skal kunne kategoriseres:
     - sjovt
     - dybt
     - hverdagsvalg
     - ungdom
     - dilemma
     - nostalgi
     - familievenligt
     - kreativt
   - Admin kan godkende forslag til spørgsmålsbanken
   - AI skal ikke automatisk publicere uden admin-godkendelse

4. Moderation Queue
   - Filter efter type: svar, kommentar, spørgsmål, video
   - Se indhold, bruger, reputation, filter-hits
   - Godkend
   - Afvis
   - Rediger og godkend
   - Slet
   - Giv bruger advarsel
   - Ban bruger
   - Skriv intern note

5. Brugere
   - Søg brugere
   - Se profil
   - Se svar, kommentarer, reports, reputation log
   - Justér rank
   - Gør til moderator
   - Gør til content creator
   - Ban/unban
   - Slå auto-post til/fra
   - Se login providers

6. Reports
   - Brugere kan rapportere svar/kommentarer/videoer
   - Moderator kan behandle reports
   - Handlinger logges

7. Filterliste
   - CRUD på fy-ord og fraser
   - Severity
   - Action
   - Aktiv/inaktiv

8. Creator-videoer
   - Se indsendte videoer
   - Godkend/afvis
   - Feature video
   - Se platform og link

9. Settings
   - Antal svar vist offentligt for gæster
   - Hvor mange godkendte posts før auto-post
   - Reputation thresholds
   - Reactions
   - Rate limits
   - Om question suggestions er åbne/lukkede

Database:
Lav migrations til følgende tabeller som minimum:

users:
- id
- uuid
- display_name
- username
- email
- avatar_url
- role
- reputation_score
- rank
- auto_post_enabled
- is_content_creator
- is_banned
- created_at
- updated_at
- last_login_at

user_auth_providers:
- id
- user_id
- provider
- provider_user_id
- email
- access_token_encrypted nullable
- refresh_token_encrypted nullable
- created_at
- updated_at

questions:
- id
- uuid
- title
- body nullable
- image_path nullable
- status: draft, scheduled, published, archived
- scheduled_date
- published_at
- created_by_user_id
- suggested_by_user_id nullable
- category nullable
- is_ai_generated
- created_at
- updated_at

answers:
- id
- uuid
- question_id
- user_id
- body
- status: pending, approved, rejected, flagged, deleted
- moderation_reason nullable
- like_count
- comment_count
- created_at
- updated_at
- approved_at
- approved_by_user_id nullable

comments:
- id
- uuid
- answer_id
- parent_comment_id nullable
- user_id
- body
- status
- like_count
- created_at
- updated_at
- approved_at
- approved_by_user_id nullable

answer_likes:
- id
- answer_id
- user_id
- created_at
- unique answer_id + user_id

comment_likes:
- id
- comment_id
- user_id
- created_at

question_reactions:
- id
- question_id
- user_id
- emoji
- created_at
- unique question_id + user_id + emoji eller question_id + user_id afhængigt af config

question_suggestions:
- id
- uuid
- user_id
- title
- body nullable
- status
- moderation_reason nullable
- created_at
- updated_at

moderation_items:
- id
- uuid
- content_type
- content_id
- user_id
- status
- risk_score
- matched_terms_json
- reason
- assigned_to_user_id nullable
- reviewed_by_user_id nullable
- reviewed_at nullable
- created_at
- updated_at

moderation_actions:
- id
- moderation_item_id
- moderator_user_id
- action
- note
- created_at

blocked_terms:
- id
- term
- severity
- action
- active
- created_at
- updated_at

reputation_logs:
- id
- user_id
- points
- reason
- related_type nullable
- related_id nullable
- created_at

reports:
- id
- uuid
- reporter_user_id
- content_type
- content_id
- reason
- status
- reviewed_by_user_id nullable
- reviewed_at nullable
- created_at

creator_videos:
- id
- uuid
- question_id
- user_id
- platform
- original_url
- embed_url
- title nullable
- status
- is_featured
- created_at
- updated_at
- approved_at
- approved_by_user_id nullable

devices:
- id
- user_id
- platform: ios, android, web
- push_token
- active
- created_at
- updated_at

purchases:
- id
- user_id
- platform
- product_id
- transaction_id
- status
- starts_at
- expires_at
- raw_receipt_json nullable
- created_at
- updated_at

admin_settings:
- id
- setting_key
- setting_value
- updated_at

API:
Byg REST endpoints med JSON.

Public:
GET /api/v1/today
- Returnerer dagens spørgsmål
- Returnerer 5 offentlige svar
- Returnerer reaction summary

GET /api/v1/questions/{uuid}
- Returnerer spørgsmål
- Hvis ikke login: kun begrænset antal svar
- Hvis login: alle/paginerede svar

GET /api/v1/questions/{uuid}/answers
- Pagination
- Sortering

Auth:
GET /auth/{provider}/redirect
GET /auth/{provider}/callback
POST /api/v1/logout
GET /api/v1/me

User:
POST /api/v1/questions/{uuid}/answers
PUT /api/v1/answers/{uuid}
POST /api/v1/answers/{uuid}/like
DELETE /api/v1/answers/{uuid}/like
POST /api/v1/answers/{uuid}/comments
POST /api/v1/comments/{uuid}/like
POST /api/v1/questions/{uuid}/reaction
POST /api/v1/question-suggestions
GET /api/v1/random-question
POST /api/v1/reports
POST /api/v1/devices

Creator:
POST /api/v1/questions/{uuid}/creator-videos
GET /api/v1/questions/{uuid}/creator-videos

Admin:
GET /api/v1/admin/dashboard
GET /api/v1/admin/questions
POST /api/v1/admin/questions
PUT /api/v1/admin/questions/{uuid}
DELETE /api/v1/admin/questions/{uuid}
POST /api/v1/admin/questions/{uuid}/schedule
GET /api/v1/admin/moderation
POST /api/v1/admin/moderation/{uuid}/approve
POST /api/v1/admin/moderation/{uuid}/reject
POST /api/v1/admin/moderation/{uuid}/edit-and-approve
GET /api/v1/admin/users
GET /api/v1/admin/users/{uuid}
PUT /api/v1/admin/users/{uuid}
POST /api/v1/admin/users/{uuid}/ban
POST /api/v1/admin/users/{uuid}/make-moderator
POST /api/v1/admin/users/{uuid}/make-content-creator
GET /api/v1/admin/blocked-terms
POST /api/v1/admin/blocked-terms
PUT /api/v1/admin/blocked-terms/{id}
DELETE /api/v1/admin/blocked-terms/{id}
POST /api/v1/admin/ai/question-suggestions
GET /api/v1/admin/reports
POST /api/v1/admin/reports/{uuid}/resolve

Sikkerhed:
- Brug prepared statements overalt
- CSRF protection på web forms
- Rate limiting på svar, kommentarer, login og reports
- XSS-beskyttelse ved output escaping
- Tillad kun sikre HTML-free tekstsvar i første version
- Uploadede billeder skal valideres på MIME type, størrelse og dimensioner
- Gem billeder uden originalt filnavn
- Admin routes kræver admin/owner
- Moderator routes kræver moderator/admin/owner
- Audit logs på kritiske admin actions
- Ban checks i middleware
- Brug pagination på alle lister
- Brug soft delete på community-indhold

Moderation flow:
Når en bruger poster svar/kommentar:
1. Tjek om bruger er banned
2. Valider længde og indhold
3. Tjek rate limit
4. Scan blocked_terms
5. Beregn moderation risk score
6. Hvis blocked term eller lav reputation: opret moderation_item og sæt status pending
7. Hvis trusted og ingen hits: publicér som approved
8. Opdater reputation log afhængigt af resultat

Designkrav:
Lav et minimalistisk, mobil-first design.

Forside:
- Stor pnk-logo øverst
- Dagens spørgsmål i meget stor typografi
- Emoji/reaction-elementer
- Evt. billede under/over spørgsmålet
- Stor pink CTA-knap
- “Svar på dagens spørgsmål”
- Under CTA: “5 svar fra fællesskabet”
- Svar vises som kort med avatar, navn, tekst, likes, kommentarer
- Login prompt: “Log ind for at se alle svar”
- Nederst: kort forklaring af pnk

Farver:
- Base: næsten sort, hvid/offwhite
- Accent: stærk pink
- Sekundært: blød lilla, varm gul eller pastel
- Design må gerne føles dansk, rent og legende

Typografi:
- Store overskrifter
- Spørgsmålet skal være visuelt hero-elementet
- Brug emojis som visuelle highlights
- Svar skal være lette at læse

Mikrotekster:
- “Dagens pnk”
- “Svar på dagens spørgsmål”
- “Se hvad andre tænker”
- “Log ind for at være med”
- “Mindre i. Mere vi.”
- “Du har allerede svaret på dagens spørgsmål”
- “Dit svar er sendt til moderation”
- “Tak! Dit spørgsmål er sendt ind”
- “Random spørgsmål”
- “Tidligere spørgsmål”

Onboarding:
Når bruger logger ind første gang:
- Forklar kort:
  - pnk er ét spørgsmål om dagen
  - Vær sød, sjov og respektfuld
  - Nye brugeres indhold modereres i starten
  - God opførsel giver mere frihed
  - Rapporter grimt eller utrygt indhold

Eksempeltekst:
“Velkommen til pnk. Her får alle det samme spørgsmål, men ingen svarer helt ens. Dine første svar og kommentarer kan blive tjekket af en moderator, så vi kan holde fællesskabet hyggeligt, trygt og sjovt.”

Admin UX:
Adminpanelet skal være lige så lækkert som selve sitet:
- Venstremenu
- Dashboard cards
- Moderation queue som hurtig arbejdsliste
- Keyboard-friendly godkend/afvis
- Farvekoder for risk score
- Brugerprofil med reputation timeline
- Spørgsmålskalender

AI-funktion:
Lav AiQuestionService som interface/placeholder:
- generateQuestionIdeas($count, $category, $tone)
- returnerer forslag
- Admin skal kunne gemme forslag
- AI må ikke publicere automatisk

Første MVP-prioritet:
Byg i denne rækkefølge:

Phase 1:
- Database migrations
- Core MVC/router/database
- Forside med dagens spørgsmål
- Auth foundation
- Spørgsmål, svar, likes
- Basic admin login
- Admin CRUD for spørgsmål
- Planlæg dagens spørgsmål

Phase 2:
- Moderation queue
- Blocked terms
- Reputation
- Kommentartråde
- Reports
- Random spørgsmål
- Tidligere spørgsmål

Phase 3:
- Social login providers
- AI question suggestions
- Content creator video links
- Push token API
- Purchase/subscription placeholders

Phase 4:
- Polish
- Analytics
- Performance
- iOS/Android API hardening

Leverancer:
1. Foreslå endelig filstruktur
2. Lav database migrations
3. Lav core PHP classes
4. Lav repositories/services/controllers
5. Lav frontend templates
6. Lav adminpanel
7. Lav REST API
8. Lav eksempeldata/seeds
9. Lav README med installation
10. Lav .env.example
11. Lav simple tests eller testscript for centrale flows

Vigtigt:
- Skriv ren, moderne PHP 8.3
- Brug type declarations
- Brug strict_types
- Brug PDO
- Undgå SQL injection
- Undgå XSS
- Hold koden enkel og læsbar
- Kommentér kun hvor det hjælper
- Byg ikke over-engineered enterprise-kaos
- Produktet skal føles simpelt for brugeren, selvom motoren bagved er stærk

Start med at bygge MVP’en som website + API + adminpanel.