Open source

go-webthings

Piccoli pacchetti Go per siti HTML-first.

go-webthings è una famiglia di pacchetti mirati per applicazioni Go renderizzate sul server che vogliono comunque essere reattive. I pezzi restano piccoli: il routing è routing, ciò che serve a un template è documentato e il rendering parziale è esplicito.

Lavori con il normale net/http e normali file html/template, e ottieni aggiornamenti che funzionano bene con HTMX, senza fare del browser l'applicazione principale.

Tre pacchetti, una risposta HTML

go-router instrada la richiesta, go-clue descrive ciò che un template si aspetta, e go-partial rende una pagina intera o solo un frammento HTMX.

  1. request
  2. routego-router
  3. contractgo-clue
  4. rendergo-partial
  5. html
go-router

Routing per host sopra net/http: gruppi di rotte, middleware, rotte con nome, router montati e pagine not-found, con middleware per log, header di sicurezza, compressione e cache dell'output.

go-clue

Contratti tipizzati e metadati per l'editor per i file html/template. I template restano semplici, mentre l'editor può completare, navigare e segnalare errori di accesso al modello.

go-partial

Rende pagine intere o solo la parte necessaria dagli stessi template: aggiornamenti HTMX mirati, swap out-of-band, selezioni, azioni e regioni riutilizzabili, senza fare dell'HTML un dialetto a componenti.

Aggiungi ciò che ti serve

Moduli, traduzioni e preparazione degli asset seguono lo stesso approccio: tipi Go espliciti e HTML al primo posto. Ogni pacchetto si può usare anche da solo.

go-form

Moduli HTML tipizzati dai tag delle struct, con mappatura degli invii, convalida dei campi, temi configurabili, metadati della richiesta e protezione CSRF.

go-importmap

Prepara in fase di build versioni fissate di pacchetti JavaScript e CSS con un lock file, le incorpora, le serve con URL versionati e Subresource Integrity, e genera import map e tag per i fogli di stile.

go-translator

Cataloghi PO di gettext con la lingua per ogni richiesta, forme plurali, contesti di traduzione ed estrazione delle chiavi letterali dai template Go.

E go-webthings stesso

La libreria Go go-webthings fa funzionare il backend di un sito, costruito con questi pacchetti. Il tuo sito è un piccolo programma Go: tu porti i template e scegli i moduli. Il risultato è un unico binario, che gira su SQLite senza altri servizi, oppure su PostgreSQL o MySQL.

  • Il database e le sue tabelle, creati e aggiornati all'avvio
  • L'amministrazione, con accesso, accesso in due passaggi, recupero della password, account e gruppi
  • L'albero delle pagine, le rotte in ogni lingua e la pubblicazione programmata
  • La libreria dei media, con copie ridimensionate delle immagini
  • Impostazioni del sito, temi, sitemap.xml, robots.txt e la ricerca nel sito
  • E-mail per i moduli, tramite il mittente che configuri
app := webthings.New(webthings.Config{
    Name:      "My site",
    Locales:   locales.Config{
        Default: "en",
        Enabled: []string{"en", "nl"},
    },
    Templates: os.DirFS("templates"),
})

err := app.Use(
    publishing.Module("news", "News"),
    events.Module("agenda", "Agenda"),
)
if err != nil {
    log.Fatal(err)
}

err = app.ListenAndServe(ctx, ":8080")

Moduli

Aggiungi un modulo con una riga: arrivano con lui le sezioni di amministrazione, le pagine, le funzioni per i template e le tabelle del database. I moduli inclusi usano solo l'API pubblica, quindi un modulo tuo può fare tutto ciò che fanno loro.

  • Publishing
  • Events
  • Gallery
  • Forms
  • Newsletter
  • Comments
  • Polls
  • Documents
  • People
  • Directory
  • Lists
  • Banners
  • Testimonials
  • Registrations
  • Submissions
  • Redirects
  • Stats