DEV Community

Cover image for Controlling the beast
Matan Lachmish for Sanga

Posted on

Controlling the beast

We have all seen these happen too many times:

Every big project starts as a small one.
and a small project does not need a lot of stuff, right?

  • It doesn't need TESTING 🙈
  • It doesn't need SECURITY 🙉
  • It doesn't need CI/CD 🙊

Alt text of image

Well, if you plan for this project to stay grounded and never make the leap to become a production product then you are probably right 🐒

This Byte is about another item that is usually left out until the project is too big and desperately needs it - CONTROLLING

Controlling

Every system needs a way to control its production product, for instance:

  • User's data
  • Content served by your app
  • Feature flags
  • Many more...

The greedy way

"For now, let's just create admin APIs"

Well, you do have a way to control but in the cost of:

  • Constant manual dev effort (the worst kind of dev effort 😉)
  • Inconsistent way of use, the risk of breaking something up is always high
  • Obscurity of implementation, APIs that are not consumed by any client can break/change without anyone knowing.
  • Centralized knowledge of how to control your system

The better way

Some call it "Admin Panel", others "Back office", I've heard "Dashboard" and "Console".

In Sanga we call it Control™

An easy-to-use app that provides a safe and consistent way of using those notorious "Admin APIs".

Controlling the beast at Sanga

As soon as we felt that those admin APIs are being used more than "just a couple of times" we've built our Control™ using Vue.js.

As straightforward as it may sound, our "definition of done" for a feature includes the ability to manage the feature through Control™.

That means that for every feature we:

  1. Think what are the possible ways to control this feature
  2. Design the relevant admin APIs
  3. Enhance Control™ with the ability to interact with these APIs

Fun fact

Once you have such a capability, new features are being designed with control in place. That leads to some super cool capabilities that otherwise would probably be developed as stiff client-side logic that would be re-written endlessly.

Thank you for reading, look for our next Byte

Made with ❤️ by Sanga

Top comments (0)