FAQ
We're using our internal web framework, codenamed "Gondola" for now. We
hope to release it in the next few weeks. Among other things, we have:

- An inheritance based template system, with declarative assets syntax.
e.g. this is from the top of the base templates of one site I'm working on
right now:

{{/*
jquery|if=~ie-gte-9: 2.0.3
jquery|if=ie: 1.10.2
bootstrap|fontawesome=4.0.3: 3.0.2
scripts|top,if=ie-lt-9: //oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js,
\
//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js
google-fonts: Open Sans:300italic:400italic:700italic:400:300:700
scripts|bundle: js/site.js
styles|bundle: css/callouts.css, css/shields.less, css/style.less, css/{{
$Config.Variant }}.less

*/}}

- An asset pipeline with support for compilation and minification, bundling
several files together. The minifier works for both CSS and Javascript. The
pipeline allows any compiler to be plugged in and compiles the assets on
the fly, caching them while in production mode. We only have support for
compiling LESS ATM, but writing your own compiler plugin is incredibly easy
(basically write a function which takes a []byte and returns ([]byte,
error) and register it with a name).

- A fully relational ORM (supporting sqlite, mysql and postgres ATM, but
more could be added) which also supports storing non-relational data. e.g.
you can specify a field in a model to be encoded as JSON, Gob or your own
codec. It also supports on the fly compression and decompression. As it
happens with the asset pipeline, the codec and pipes in the ORM are
pluggable.

- A cache abstraction layer, with backends for memcache and redis. The
cache can also use the same codecs and pipes the ORM uses for storing
non-relational data.

- A complete i18n system, including string extraction and compilation.
Extracts strings from your code and templates, generates a fully gettext
compatible .pot file per package and then compiles the .po (which is the
.pot with the translations added) into Go again.

- A form library which lets you create a form from a struct type, including
input validation. As it happens with most of the parts of the frameworks,
the form library allows different renderers to be plugged in. We currently
have renderers for bootstrap and foundation.

We also have the more mundane stuff, like regexp based URL routing, URL
reversing from templates, a logging system with different levels and
pluggable outputs (e.g. get an email when the server panics in production,
including the stack trace and the request dump), support for signed and
encrypted cookies, configuration parsing from a struct, a development
server with auto-reloading, stack traces and compilation errors shown in
the browser and lots of utility functions. In total, the framework is
around 40K lines of go code.

We've been cleaning up and documenting stuff for a couple of weeks, but I
want to write a few tutorials and maybe record a few introductory videos
before we put the code online, so it might take a bit until it's finally
released.

Regards,
Alberto
On Friday, December 6, 2013 5:15:47 AM UTC+1, Alex Zorin wrote:

Lots of web frameworks out there but we seem to be lacking in the asset
compilation/minification/concatenation department.

Anybody working on a middleware that deals with this? I've played a little
with https://github.com/jim/monk, but I've yet to decipher whether it
works or how far it has to go.

Ideas/suggestions/desires very welcome.

Alex
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 7 of 8 | next ›
Discussion Overview
groupgolang-nuts @
categoriesgo
postedDec 6, '13 at 4:15a
activeDec 7, '13 at 3:10a
posts8
users7
websitegolang.org

People

Translate

site design / logo © 2022 Grokbase