flosch / pongo2

Django-syntax like template-engine for Go
https://www.schlachter.tech/pongo2
MIT License
2.85k stars 269 forks source link

Who is using pongo2? #241

Open flosch opened 4 years ago

flosch commented 4 years ago

Hi everyone,

I'm aware that development on pongo2 slowed down over the last couple years as it has been declared as almost feature complete.

Recently I've been thinking about actively continuing development and add support for a bunch of new features other template engines (incl. Django's) came up with.

Before I continue invest more time into that I'd like to compile a list of projects/companies/individuals who actively use pongo2 in their applications. I not only want to take this list into account for my decision making of continuing development but also want to compile a show room/list of users and make that publicly available.

If you, your project or your company is using (or has been using) pongo2 feel free to add a comment with name & link. If you can provide an example of your use case, that'd be highly appreciated as well. (If I can use your company's/project's logo as well for the show room, please explicitly state so.) If you have any missing features or feedback I should consider, please add this to your comment.

Thanks everyone for your time and help!

gavbaa commented 4 years ago

JCA Solutions, using it for most of our server-side e-learning products, including https://trainingvault.net/ (used for the entire admin) and one of our LMS versions. Feel free to use our logo.

Personally I'd love to see more Jinja2 features in here, as the Python projects I've moved off of were mostly Jinja2-bound.

egorsmkv commented 4 years ago

Good to hear these good news!

I have been using the project for my personal projects and all was fine so I can't say what I did not have in pongo2's functionality.

sarim commented 4 years ago

Got your email, and I don't mind. Actually I haven't managed to use pongo2 in a real world product yet. We use symfony a lot. And its template engine, twig. Which is very similar. I searched for a similar template engine in golang world and found this way back when.

I don't have much feedback to add. Maybe you could check out jinja2 and twig and see If they same any extra features you could add in pongo2.

rsdoiel commented 4 years ago

Thanks for reaching out. I was interested in Pongo2 as a possible shared template language between Python and Go. We do some Python Flask web things from time to time at work. Since that time we're moving away from Go as we've found Python more flexible for most of our staff for content prep and rendering. If I do more Go development I'd be very interested in a template language that is well documented, known to the Python community and works with Go too. Teaching Go templates just didn't work for us. All the best, Robert

snaffi commented 4 years ago

Embedded application Bitconf for Bitrix24 ERP system uses pongo2

https://www.bitrix24.com/apps/?app=ipkozlovzoom.zoom

Florian thank you for your great project!

bu commented 4 years ago

Thanks for reaching, flosch.This is Buwei.

Before I ran into Golang world, I've been using Twig.php and twig.js in the real world projects. Indeed, when I switched to Golang, I searched your project pongo2, which inherit the same spirit of original Jinja2 template language. I usually use with integration with Gin and Fiber web framework, currently I'm looking for create custom adapter to generate email, and you made the API simple to work with. Big thanks.

FYI, I recently made a website for my company using pongo2's custom filter feature to calculate numbers based on input. e.g. ounce to grams, ..etc. (ref: https://risehill.tw)

pierrre commented 4 years ago

@flosch Hello! When I answered to your email, I didn't have any real feature request in mind. I just found one that would be really useful for me and my company (and maybe others). I'm using pongo2 with an HTML WYSIWYG editor. It would be nice to be able to highlight "pongo2 syntax error". It's currently reporting syntax error as "normal" error messages. It's not very easy nor safe to try to parse the error message, and extract the line/column. Is it possible to return a custom error type (that could be matched with errors.As()) containing more information about the syntax error ?

ghost commented 3 years ago

Proudly using pongo2 as Gosense blog template engine.

My blog is powered by gosense blog engine.

https://www.netroby.com

siredwin commented 3 years ago

I have always used Pongo2 for all my personal projects. I also found it useful as a lexer/parser. It saved me from writing my own.

mayowa commented 3 years ago

Hi I have used pongo2 for a number projects that made it into production (Two CRM solutions and an E-commerce site) and many side projects as well as internal tools. Unfortunately I can't share links or mention names, but unless a project must be built as SPA I use pongo2.

nodens commented 3 years ago

Hi, I know https://github.com/lxc/lxd/ uses it, e.g. for templating files in vm images.

jinjaghost commented 3 years ago

Jaguar Network, we use pongo2 to manage grafana dashboards based on jinja2 templates.

fermin-silva commented 3 years ago

I'm using it for my website: https://www.mininoticias.com.ar/

slieberth commented 3 years ago

I have a implemtation in python/Jinja2 which renders YAML and Latex and would like to migrate to golang, is I am interested in pongo2,

        latex_jinja_env = jinja2.Environment(\
            block_start_string = '\BLOCK{',
            block_end_string = '}',
            variable_start_string = '\VAR{',
            variable_end_string = '}',
            comment_start_string = '\#{',
            comment_end_string = '}',
            line_statement_prefix = '%-',
            line_comment_prefix = '%#',
            trim_blocks = True,
            autoescape = False,
            loader = jinja2.FileSystemLoader("/"))

and for yaml runbooks:

        macro_jinja_env = Environment(\
            block_start_string = '#-MACRO-BLOCK',
            block_end_string = '-#',
            variable_start_string = '#-MACRO-',
            variable_end_string = '-#',
            comment_start_string = '#%#',
            comment_end_string = '#%#',
            line_statement_prefix = '#*#',
            line_comment_prefix = '#!#',
            trim_blocks = True,
            autoescape = False,
            loader = FileSystemLoader("."))

I would support for tests and coding ...

denysvitali commented 3 years ago

Not sure if it's interesting, but I have just created a repo here: https://github.com/swisscom/pongo2-runner

It's a small CLI that uses pongo2 to render jinja2 like templates. Super useful IMHO as a substitute of envsubst.

For now it covers only our use case, which is to inject properly some environment variables, but in the future multiple sources can be added :)

joelkesler commented 3 years ago

At my company we are looking into using it for an email template renderer :)

edit: My company is @vendasta over in Canada

flosch commented 3 years ago

At my company we are looking into using it for an email template renderer :)

Thanks for letting me know! May I ask which company that is?

xc commented 3 years ago

Our content management framework(CMF) is using Pongo2. It has not been released yet(but it's close). I have written appreciation on the doc(will be in other places also when release) https://digimaker.org/doc/#thanks .

Really nice template engine. And nice to hear new features coming. :)

bcavns01 commented 3 years ago

We're using it for parts of our bare-metal provisioning process: https://github.com/ns1/waitron We've added a custom tag and filter as well, which wasn't too painful.

AlyssaDaemon commented 3 years ago

WarnerMedia uses it as part of their Platform Technology's VOD / Clips workflow. We use it to template out JSON documents / API calls. Unfortunately I can't link anything as its all internal access only, but the platform is used across all WM brands so any clips you see on say HBO Max, Cartoon Network, CNN, NBAtv, internal WM sites etc. all have used pongo2 on the digital video side.

themartorana commented 3 years ago

Flyclops uses it for our internal admin backends.

rsvancara commented 2 years ago

tryingadventure.com -- photography blog. Added a few custom tags.

preslavrachev commented 2 years ago

I am currently partnering up with a company in Germany and together we built Murmel - a full-blown Web application that uses Pongo2 everywhere. I can't say how happy we were to find out about the language. At the beginning, we started out with Go's default templating engine, but we quickly realized that some parts quickly became unmaintainable.

Our Go app is very much based on Django's principles. Plus, we've had previous experience building Django apps. So, it was only natural that we ended up using a templating syntax that felt near and dear to our hearts.

Great job!

stefanwuthrich commented 2 years ago

Using it for boardengine.io V2, running React JS Job Board Thank you very much for your great lib

idc77 commented 2 years ago

https://c64g.com/ A commodore64 games site.

shantanugadgil commented 2 years ago

What would be the correct way to detect that an expected variable is missing in the input.

Example, the following runs without error in the Golang playground:

package main

import (
    "fmt"

    "github.com/flosch/pongo2"
)

func main() {
    // Compile the template first (i. e. creating the AST)
    tpl, err := pongo2.FromString("Hello {{ name|capfirst }}!")
    if err != nil {
        panic(err)
    }
    // Now you can render the template with the given
    // pongo2.Context how often you want to.
    out, err := tpl.Execute(pongo2.Context{"name1": "fred"})
    if err != nil {
        panic(err)
    }
    fmt.Println(out) // Output: Hello Fred!
}
xyproto commented 2 years ago

The Algernon web server is using Pongo2: https://github.com/xyproto/algernon

iredmail commented 2 years ago

Spider Email Archiver uses Fiber as http server and pongo2 as html template engine. Clearly mentioned on the "Credits" page: https://spiderd.io/docs/credits.html

wnederhof commented 4 months ago

Basecode, the tool I created and use in multiple projects for creating full-stack Java/Kotlin + React apps, heavily relies on Pongo2 for templating. Coming from Pebble in the JVM ecosystem, I could pretty much use the same templates I used on the JVM, which was a huge win :-) https://github.com/wnederhof/basecode

gwillem commented 3 months ago

We are a happy Pongo2 user across all our code repositories. Thanks so much for all your work! Sansec - experts in eCommerce security - @sansecio