New Features This Week: Object Storage Engine and Social Media Preview Images

Two new features are landing in Legendary today after a few weeks of work: Object Storage Engine and Social Media Preview Images.

Object Storage Engine

Object Storage engine is an S3-lite API built right into your application. It provides a persistent mechanism for retaining file uploads across reboots and upgrades. We integrate it out-of-the-box with Waffle and ExAws so that you can start writing persistent Waffle uploaders without needing to configure an S3 bucket or similar. Then later if you find that your scale or requirements require S3, you just need to swap couple of configuration values and migrate your files. This is part of our larger philosophy of making sure you can build production-ready Phoenix apps with the absolute minimum time investment into manual provisioning.

Social Media Preview Images

Social Media Preview Images are our first feature that leverages Object Storage Engine. Now, when you write a post using our Content Engine, we’ll automatically generate a preview image and save it to Object Storage. Then, when people share your post of social media, your post will get an engaging image plus text card, instead of the bland default card. We make use of Fabric.js to build these images right in your browser, eliminating the need for heavier dependencies like ImageMagick.

Here’s an example:

Announcing the Legendary Framework

What is Legendary?

Legendary is a template and framework for building PETAL-stack web applications without reinventing the wheel. To this end, it comes out-of-the-box with several things you probably want and need for your application:

  • Authentication & Authorization
  • Admin interface & dashboard
  • Lightweight content management / blogging
  • Background & scheduled jobs with Oban
  • Tailwind CSS
  • Alpine JS
  • Fluid HTML email templates
  • Full CI / DevOps scripts
  • Whether you are building a weekend project or a new business, you should be able to skip to the interesting part.

Legendary is free and open-source.

Who Are You?

My name is Robert Prehn. I’ve been developing Phoenix applications for over six years now (since before Phoenix was 1.0!). I’m a consultant who has worked with hundreds of clients in dozens of industries to build and improve web applications.

As I went from client to client in the Elixir ecosystem, I noticed something— we’re all solving the same basic problems again and again. And they aren’t even the interesting problems we set out to solve! So many teams are re-inventing user accounts, roles, permissions, content management, scheduled jobs, admin areas, dashboards, etc, etc. To me, these are not things every team needs a unique solution for.

That’s why I created Legendary— to give teams a baseline that they can use so that they can focus on their unique challenges.

What is it?

Legendary is part template and part framework. When you download the template, you are getting a fully-functional Elixir app. It comes with a selected set of packages installed and configured for you with reasonable defaults. We’ve integrated those packages so that they all work together (e.g. admin is protected by auth and lets you edit content). We’ve included a few modules unique to Legendary such as our simple content engine. The template gives you direct access to the code— you aren’t beholden to my decisions and you can custom to your heart’s content.

Why would I want to use it?

I’m sure it’s not for everyone. If you really want to hand pick every package and write every bit of your authentication code (and admin system and email templates and CI configuration) from scratch, you might not like it.

But imagine a weekend project. You set out with a goal and two days to deliver it. Starting from scratch basically gives you two options— build something that gets to the point but is really unpolished, or build something polished but never get to the point.

Or imagine a small engineering team at a new company. You only have so much time and so much budget. Chances are, that time and that budget has to go toward the thing that brings in users and revenue. The rest of the experience— especially the experience for developers, product managers, customer support, etc— gets de-prioritized. What if that small engineering team could focus on great features for users while not sacrificing their own tools?

Ok, I’m sold. What now?

Check out the getting started guide and tutorial in our documentation!

How can I help?

The framework is in its early days. There’s still so much more I want to include. If you feel like this is a valuable project to exist in the Elixir ecosystem, I have two requests:

  • Try it out and give me feedback. I’d love to hear what you like and don’t like about the current version. Tell me what you think should be included. You can send your feedback here or open an issue.
  • Please give the repo a star on GitLab. This helps people to find the project.