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 🙊
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
Every system needs a way to control its production product, for instance:
- User's data
- Content served by your app
- Feature flags
- Many more...
"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
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".
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:
- Think what are the possible ways to control this feature
- Design the relevant admin APIs
- Enhance Control™ with the ability to interact with these APIs
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.
Made with ❤️ by Sanga