# Dziesmu Virpulis Valmierā 2026 — vietnes komplekts

## Kas ir iekļauts
- `index.html` — publiskā vietne latviešu valodā, pasākuma informācija un pieteikuma forma.
- `admin.html` — administrācijas prototips pieteikumu apskatei, uzstāšanās secības/statusu rediģēšanai, žūrijas atklāšanas datumiem un demo galerijas attēlu pievienošanai.
- `site.css`, `admin.css`, `site.js`, `admin.js` — izskats un interaktivitāte.
- `assets/logo.png` — pievienotais konkursa logotips.
- `Konkurss-DZVV-2026-nolikums.docx` — konkursa nolikums.
- `supabase/schema.sql` — sākuma datubāzes struktūra un RLS politikas.
- `supabase/functions/submit-application/index.ts` — e-pasta piegādes funkcijas sākuma kods Resend pakalpojumam.
- `config.example.js` — konfigurācijas paraugs.

## Svarīgi pirms publiskas palaišanas
Šis komplekts ir **gatavs prototips, nevis jau izvietota pilna produkcijas sistēma**. Pieteikuma forma un admin panelis bez konfigurācijas darbojas tikai demo režīmā lokālajā pārlūkā. Šie ieraksti nav koplietoti starp ierīcēm un netiek nosūtīti organizatoriem. Neievadi reālus bērnu vai citu dalībnieku personas datus, kamēr nav pabeigta drošā izvietošana un testēšana.

Admin panelī nav vēl pieslēgta Supabase Auth lietotāju pieteikšanās. Neizvieto admin lapu kā drošu, līdz ir integrēta un pārbaudīta autentifikācija un autorizācija. Datubāzes RLS shēma ir sākumpunkts, nevis neatkarīgs drošības audits.

## 1. Izveido datubāzi
1. Izveido projektu [Supabase](https://supabase.com/).
2. Atver **SQL Editor**, ielīmē un palaid `supabase/schema.sql`.
3. Supabase Authentication izveido atsevišķus lietotāju kontus tev un mammai. Pēc tam katram admin lietotājam piešķir `app_metadata.role = "dv_admin"` ar drošu servera pusi / Supabase administrēšanas rīku — nekad no publiskā klienta koda.
4. Ieslēdz e-pasta apstiprināšanu, stipras paroles un MFA, ja pieejams.
5. Pirms īstu datu ievākšanas pārbaudi anonīmo lomu: tā drīkst tikai iesniegt pieteikumu un lasīt publisko saturu, nevis lasīt `applications`.

## 2. Ieslēdz konfigurāciju
1. Nokopē `config.example.js` kā `config.js`.
2. Ievieto projekta URL, anon/publishable atslēgu un Edge Function URL.
3. Pievieno `config.js` gan `index.html`, gan `admin.html` pirms pārējo skriptu ielādes, ja izmanto konfigurāciju pārlūkā.
4. **Nekad** neievieto `service_role` atslēgu, Resend atslēgu vai citus servera noslēpumus HTML/JS failos.

## 3. E-pasta piegāde
1. Izveido kontu [Resend](https://resend.com/) un verificē sūtītāja domēnu. Izmanto īstu verificētu `from` adresi; `onboarding@resend.dev` ir tikai pagaidu tests.
2. Uzstādi Supabase CLI, pieslēdzies projektam un izvieto funkciju:
   ```bash
   supabase login
   supabase link --project-ref YOUR_PROJECT_REF
   supabase secrets set RESEND_API_KEY=re_... ORGANIZER_EMAIL=dziesmu.virpulisvalmiera@gmail.com RESEND_FROM_EMAIL='Dziesmu Virpulis <pieteikumi@TAVSDOMENS.lv>'
   supabase functions deploy submit-application
   ```
3. Izveido testu, kas apstiprina gan datubāzes ierakstu, gan e-pasta pienākšanu. Šobrīd klienta koda integrācija ir tikai sākuma variants; pirms palaišanas e-pasta funkcijas kļūdas nedrīkst palikt nepamanītas.
4. Iesakāms iestatīt automātisku apstiprinājuma e-pastu pieteicējam un ierobežot pieprasījumus (rate limit / CAPTCHA), lai novērstu surogātpastu.

## 4. Admin panelis un publiskā programma
Pašlaik admin paneļa rediģēšana izmanto `localStorage` tikai demo vajadzībām. Lai tu un mamma redzētu vienus un tos pašus datus, admin kods ir jāpārveido, lai tas izmantotu Supabase Auth sesiju un datubāzes tabulas. Pieteikumu personas dati jāredz tikai administratoriem. Publiskajai programmai publicē tikai apstiprinātos `public_name` un `public_song` laukus, nevis visu pieteikumu JSON.

Galerijas augšupielādēm izveido Supabase Storage bucket ar atbilstošām politikām; demo attēli lokālajā atmiņā nav koplietoti. Žūrijas atklāšanas datumam jāizmanto `Europe/Riga` laika zona un servera datums.

## 5. Domēns un hostings
Vienkāršākais variants statiskajai vietnei: Netlify vai Vercel.
1. Augšupielādē vietnes failus repozitorijā (GitHub) vai hostinga panelī.
2. Publicē `index.html`, `admin.html`, CSS/JS un `assets/`.
3. Hostinga iestatījumos pievieno domēnu, piemēram, `virpulis.com`.
4. Hostings parādīs nepieciešamos DNS ierakstus (bieži A/ALIAS un/vai CNAME). Ievadi tieši tos domēna reģistrētāja DNS panelī; precīzie ieraksti atkarīgi no hostinga.
5. Saglabā esošos e-pasta MX/TXT ierakstus. Nepārraksti tos ar hostinga norādēm, ja vien apzināti nepārceļ e-pastu.
6. Pagaidi DNS izplatīšanos un pārbaudi HTTPS sertifikātu, mobilo skatu, formu, admin pieteikšanos, e-pastus un datu privātumu.

## 6. Pirms palaišanas pārbaudi
- [ ] Mājaslapā pareizs pasākuma datums, termiņi, dalības maksas un bankas dati.
- [ ] Vecāks/aizbildnis var iesniegt nepilngadīga dalībnieka pieteikumu.
- [ ] Visi lauki no solo un grupas pieteikuma ir iekļauti un atbilstoši validēti.
- [ ] Datubāzē nav publiskas lasīšanas tiesību pieteikumu tabulai.
- [ ] Pieteikuma e-pasts pienāk organizatoru pastkastē; kļūdas tiek parādītas un reģistrētas.
- [ ] Admin piekļuve aizsargāta ar autentifikāciju; mammai un tev ir atsevišķi konti.
- [ ] Programmas izmaiņas redzamas publiskajā vietnē no citas ierīces.
- [ ] Foto faili glabājas koplietojamā Storage, nevis tikai pārlūkā.
- [ ] Privātuma paziņojums un datu apstrādes termiņš saskaņots ar organizatoriem.
- [ ] Pārbaudīta rezerves kopija / CSV eksports un datu dzēšanas process.

## Pieteikuma laukiem
Forma saglabā no iepriekšējām solo/grupas anketām nepieciešamos laukus: dalībnieka vai grupas vārds, vecums/vecuma grupa, dalībnieku skaits, vokālais pedagogs, tālrunis, e-pasts, dziesmas nosaukums, mūzikas autors, vārdu autors, ilgums, pavadījuma veids, pavadošo dziedātāju skaits solo pieteikumā, nošu pults vajadzība un cita informācija. Pirms palaišanas organizatoriem jāapstiprina, ka tie atbilst aktuālajam nolikumam un datu apstrādes prasībām.
