# Implementeringsplan v1.1 — Favoritter Fire funksjoner som utvider Favoritter med notater og OG-metadata, PWA-installering med Android-delingsstøtte, bedre redigeringsflyt, og utvidede admin-verktøy. ## Oversikt | # | Funksjon | Omfang | Avhengigheter | |---|----------|--------|---------------| | 1 | OG-støtte + fritekstfelt (notes) | Migrasjon, modell, store, alle handlere, maler, eksport/import, feed | Ingen | | 2 | PWA + Android share intent | Service worker, manifest, nye handlere, base-mal, JS | Avhenger av 1 (deling pre-fyller notes) | | 3 | Redigeringsforbedringer (UX) | Maler, CSS, ny toggle-rute, ny partial | Avhenger av 1 (notes vises i kort) | | 4 | Admin-forbedringer | Store, handlere, maler, ruter | Ingen | --- ## Funksjon 1: OG-støtte + fritekstfelt (notes) ### Beskrivelse Legger til et valgfritt langtekstfelt «notes» på hver favoritt. Forbedrer Open Graph-metatagger på detaljsiden slik at `og:description` bruker notes når det er tilgjengelig. ### Berørte filer | Fil | Endring | |-----|---------| | `internal/database/migrations/002_add_fave_notes.sql` | Ny fil: ALTER TABLE faves ADD COLUMN notes | | `internal/model/fave.go` | Legg til `Notes string` i Fave-struct | | `internal/store/fave.go` | Oppdater alle SQL-spørringer, Create/Update-signaturer, scanFaves | | `internal/handler/fave.go` | Les notes fra skjema i create/edit/update | | `internal/handler/api/api.go` | Legg til notes i request/response-structs og faveJSON | | `internal/handler/import_export.go` | Legg til notes i ExportFave, CSV-kolonner, import | | `internal/handler/feed.go` | Bruk notes som feed item description | | `web/templates/pages/fave_form.html` | Legg til textarea for notes mellom URL og bilde | | `web/templates/pages/fave_detail.html` | Vis notes, forbedre og:description | ### Migrasjons-SQL ```sql -- 002_add_fave_notes.sql -- Legger til et valgfritt notatfelt på favoritter. ALTER TABLE faves ADD COLUMN notes TEXT NOT NULL DEFAULT ''; ``` ### Implementeringssteg 1. **Migrasjon**: Opprett `internal/database/migrations/002_add_fave_notes.sql` 2. **Modell**: Legg til `Notes string` etter `ImagePath` i `model.Fave` 3. **Store — Create**: Endre signatur til `Create(userID, description, url, imagePath, notes, privacy)`, oppdater INSERT 4. **Store — GetByID**: Legg til `f.notes` i SELECT og `&f.Notes` i Scan 5. **Store — Update**: Endre signatur, legg til `notes = ?` i UPDATE 6. **Store — Alle list-metoder**: Legg til `f.notes` i SELECT for `ListByUser`, `ListPublicByUser`, `ListPublic`, `ListByTag` 7. **Store — scanFaves**: Legg til `&f.Notes` i Scan 8. **Handler — fave.go**: Les `notes` fra form i `handleFaveCreate` og `handleFaveUpdate`. Pass `fave.Notes` i `handleFaveEdit` template data 9. **Handler — api/api.go**: Legg til `Notes` i request/response-structs, `faveJSON`, import 10. **Handler — import_export.go**: Legg til notes i `ExportFave`, CSV header/rader, import-parsing 11. **Handler — feed.go**: Sett `item.Description = f.Notes` når det ikke er tomt i `favesToFeedItems` 12. **Template — fave_form.html**: Legg til `