Skip to content
tailscalePublic

About

A meme generator for your tailnet!

Topics

Resources

Code of conduct

Security policy

Stars

52 stars

Watchers

20 watching

Forks

Latest commit

 

History

161 Commits

Folders and files

Repository files navigation

tmemes: putting the meme in TS

This bit of fun was brought to you through the amazing power of Tailscale, and the collaborative efforts of

  • Maisem Ali: "I think we need memegen"
  • M. J. Fromberger: "why did I not think of that"
  • Jenny Zhang: "ok i’m finally in front of a computer, can I go write some css"
  • Salman Aljammaz: (quietly moves heaven and earth inside a <canvas>)
  • Shayne Sweeney: "Would I be stepping on toes if I built a Slack bot?"

together with a lovely and inspirational crew of supporters. There's lots more fun still to be had, so if you want to jump in, read on! There is also a wishlist of TODO items at the bottom.


Synopsis

tmemes is a web app built mainly in Go and running on tsnet. This is a very terse description of how it all works.

  • The server is tmemes, a standalone Go binary using tsnet. Run

    TS_AUTHKEY=$KEY go run ./cmd/tmemes
    

    to start the server. Make sure your tailnet ACL allows access to this node, and you should be able to visit http://tmemes in the browser.

  • The server "database" is a directory of files. Use --store to set the location; it defaults to /tmp/tmemes.

  • Terminology:

    • Template: A base image that can be decorated with text.
    • Macro: An image macro combining a template and a text overlay.
    • Text overlay: Lines of text with position and typographical info.

    Types are in types.go.

  • The data directory contains an index.db which is a SQLite database (schema in store/schema.sql), plus various other directories of image content:

    • templates are the template images.
    • macros are cached macros (re-generated on the fly as needed).
    • static are some static assets used by the macro generator (esp. fonts).

    The store package kinda provides a thin wrapper around these data.

  • UI elements are generated by Go HTML templates in server/ui. These are statically embedded into the importable server package and served by its handlers.

  • Static assets needed by the UI are stored in server/static. These are served via /static/ paths in the server mux.


Links

About

A meme generator for your tailnet!

Topics

Resources

Code of conduct

Security policy

Stars

52 stars

Watchers

20 watching

Forks

Releases

Used by

Contributors

Languages