HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
CloudyKit
jet
Go2017–2018
CloudyKit / jet

jet

Jet template engine

2Distinct people
2Mentions
0Explicit recommenders
1.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Jet template engine

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week2 dated mentions

Observed mentions: 2017-12-05 18:24:07 UTC to 2018-07-14 09:06:20 UTC. Weeks start Monday, UTC.

012017-12-04 00:00:00 UTC to 2017-12-11 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsDec 42017-12-11 00:00:00 UTC to 2017-12-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-18 00:00:00 UTC to 2017-12-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-25 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2018-01-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-08 00:00:00 UTC to 2018-01-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-15 00:00:00 UTC to 2018-01-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-22 00:00:00 UTC to 2018-01-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-29 00:00:00 UTC to 2018-02-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-02-05 00:00:00 UTC to 2018-02-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-02-12 00:00:00 UTC to 2018-02-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-02-19 00:00:00 UTC to 2018-02-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-02-26 00:00:00 UTC to 2018-03-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-03-05 00:00:00 UTC to 2018-03-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-03-12 00:00:00 UTC to 2018-03-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-03-19 00:00:00 UTC to 2018-03-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsMar 192018-03-26 00:00:00 UTC to 2018-04-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-04-02 00:00:00 UTC to 2018-04-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-04-09 00:00:00 UTC to 2018-04-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-04-16 00:00:00 UTC to 2018-04-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-04-23 00:00:00 UTC to 2018-04-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-04-30 00:00:00 UTC to 2018-05-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-07 00:00:00 UTC to 2018-05-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-14 00:00:00 UTC to 2018-05-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-21 00:00:00 UTC to 2018-05-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-05-28 00:00:00 UTC to 2018-06-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-04 00:00:00 UTC to 2018-06-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-11 00:00:00 UTC to 2018-06-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-18 00:00:00 UTC to 2018-06-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-06-25 00:00:00 UTC to 2018-07-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-02 00:00:00 UTC to 2018-07-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-07-09 00:00:00 UTC to 2018-07-16 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 9

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Dec 42017-12-04 00:00:00 UTC2017-12-11 00:00:00 UTC101
Dec 112017-12-11 00:00:00 UTC2017-12-18 00:00:00 UTC000
Dec 182017-12-18 00:00:00 UTC2017-12-25 00:00:00 UTC000
Dec 252017-12-25 00:00:00 UTC2018-01-01 00:00:00 UTC000
Jan 12018-01-01 00:00:00 UTC2018-01-08 00:00:00 UTC000
Jan 82018-01-08 00:00:00 UTC2018-01-15 00:00:00 UTC000
Jan 152018-01-15 00:00:00 UTC2018-01-22 00:00:00 UTC000
Jan 222018-01-22 00:00:00 UTC2018-01-29 00:00:00 UTC000
Jan 292018-01-29 00:00:00 UTC2018-02-05 00:00:00 UTC000
Feb 52018-02-05 00:00:00 UTC2018-02-12 00:00:00 UTC000
Feb 122018-02-12 00:00:00 UTC2018-02-19 00:00:00 UTC000
Feb 192018-02-19 00:00:00 UTC2018-02-26 00:00:00 UTC000
Feb 262018-02-26 00:00:00 UTC2018-03-05 00:00:00 UTC000
Mar 52018-03-05 00:00:00 UTC2018-03-12 00:00:00 UTC000
Mar 122018-03-12 00:00:00 UTC2018-03-19 00:00:00 UTC000
Mar 192018-03-19 00:00:00 UTC2018-03-26 00:00:00 UTC000
Mar 262018-03-26 00:00:00 UTC2018-04-02 00:00:00 UTC000
Apr 22018-04-02 00:00:00 UTC2018-04-09 00:00:00 UTC000
Apr 92018-04-09 00:00:00 UTC2018-04-16 00:00:00 UTC000
Apr 162018-04-16 00:00:00 UTC2018-04-23 00:00:00 UTC000
Apr 232018-04-23 00:00:00 UTC2018-04-30 00:00:00 UTC000
Apr 302018-04-30 00:00:00 UTC2018-05-07 00:00:00 UTC000
May 72018-05-07 00:00:00 UTC2018-05-14 00:00:00 UTC000
May 142018-05-14 00:00:00 UTC2018-05-21 00:00:00 UTC000
May 212018-05-21 00:00:00 UTC2018-05-28 00:00:00 UTC000
May 282018-05-28 00:00:00 UTC2018-06-04 00:00:00 UTC000
Jun 42018-06-04 00:00:00 UTC2018-06-11 00:00:00 UTC000
Jun 112018-06-11 00:00:00 UTC2018-06-18 00:00:00 UTC000
Jun 182018-06-18 00:00:00 UTC2018-06-25 00:00:00 UTC000
Jun 252018-06-25 00:00:00 UTC2018-07-02 00:00:00 UTC000
Jul 22018-07-02 00:00:00 UTC2018-07-09 00:00:00 UTC000
Jul 92018-07-09 00:00:00 UTC2018-07-16 00:00:00 UTC101

What Hacker News says

2 sources
There is no real good framework and anybody can write a trie based router in 2 hours: https://vluxe.io/golang-router.html However, Go ecosystem is starting to look interesting library-wise, as long as your project doesn't involve enterprise integration with legacy XML services or SOAP, because Go sucks at mostly anything XML. For templating I use Jet because the standard templating library is too basic for professional use https://github.com/CloudyKit/jet . I don't use ORM, I use https://github.com/Masterminds/squirrel for query building and https://github.com/jmoiron/sqlx which helps deals with row<=>struct conversion. For database migrations, I use https://github.com/rubenv/sql-migrate , but if you need an ORM gorm https://github.com/jinzhu/gorm is OK if you do code first and sqlboiler https://github.com/volatiletech/sqlboiler is OK if
Read the rest
you do database first. For session handling I use scs github.com/alexedwards/scs , for converting form encoded data to go structs I use github.com/gorilla/schema, for logging I use zap https://github.com/uber-go/zap. For managing roles in an app I use either the voter pattern https://symfony.com/doc/current/security/voters.html in simple cases or casbin github.com/casbin/casbin . For background jobs I used https://github.com/gocraft/work and https://github.com/gocelery/gocelery , for caching i just use redis https://github.com/go-redis/redis , for data validation I used https://github.com/asaskevich/govalidator or https://github.com/go-ozzo/ozzo-validation . For sending mails to customers I used https://github.com/go-gomail/gomail If i need html forms, I first describe form elements as a struct then write form helpers in jet templating to display them like that: type LoginForm struct { Login, Password string Form } func (form *LoginForm) validate(r *http.Request) error { r.ParseForm() form.Decoder().Decode(form, r.Form) form.Errors = map[string][]string{} if err := (requiredValidator{}).validate(form.Login); err != nil { form.Errors["Login"] = append(form.Errors["Login"], err.Error()) } if err := (requiredValidator{}).validate(form.Password); err != nil { form.Errors["Password"] = append(form.Errors["Password"], err.Error()) } return form.getErrors() } func (form LoginForm) LoginFormView() LoginFormView { return LoginFormView{Fields: []Field{ {Name: "Login", Label: "Email", Type: "text", Value: form.Login, Required: true, Errors: form.Errors["Login"]}, {Name: "Password", Label: "Password", Type: "password", Value: form.Password, Required: true, Errors: form.Errors["Password"]}, {Type: "submit", Value: "Submit", Required: true}, {Type: "reset", Value: "Reset", Required: true}, }, Method: "POST", Name: "LoginForm"} } Then I can just write an helper in jet to display the the form view: {* tag attributes *} {{ block attributes() }} {{range .}} {{.Key}}="{{.Value}}" {{end}} {{ end }} {* form field *} {{block field()}} <label> {{.Label}} <br/> {{if .Type == "textarea" }} {* textarea *} <textarea name="{{.Name}}" {{ yield attributes() .Attributes }} >{{.Value}}</textarea> {{ else if .Type == "select" }} {* select *} <select name="{{.Name}}" {{yield attributes() .Attributes }}> {{ range .Options }} <option value="{{.Value}}" {{ if .Selected }} selected {{ end }}>{{.Label}}</option> {{ end }} </select> {{ else }} {* basic input *} <input type="{{.Type}}" name="{{.Name}}" {{ if isset(.Value) }} value="{{.Value}}" {{ end }} {{ yield attributes() .Attributes }} {{ if .Checked == true }} checked {{end}} /> {{ end }} </label> {{end}} {* form template *} {{block form()}} <form action="{{.Action}}" name="{{.Name}}" method="{{.Method}}"> <fieldset> {{ range .Fields }} {{yield field() .}} {{end}} </fieldset> </form> {{end}} This is the exact app structure I use to deal with dependencies and filters : https://medium.com/statuscode/how-i-write-go-http-services-a...
In Ask HN: What is the current state of web frameworks in Golang?
I've started using Echo[1] and it seems to provide most of what I'm looking for (routing, context, sessions, CSRF protection, form/json binding, etc). For templating, I'm using QuickTemplate[2] which creates statically generated templates, but Pongo2[3] and Jet[4] also look reasonable. sqlx[5], gorm[6], and sqlboiler[7] all seem reasonable for database access, depending on what your style is (sqlx being oriented toward manual statements, gorm being reflection-based orm-ish, and sqlboiler using go generate's code generation to make statically generated access for you). If you don't want to piece things together yourself (and want a more Rails-like experience), Buffalo[8] is probably your best bet. [1] https://echo.labstack.com/ [2] https://github.com/valyala/quicktemplate [3] https://github.com/flosch/pongo2 [4] https://github.com/Cloudy
Read the rest
In Ask HN: What is your Golang web-dev tech stack?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.