Shortcut: create more web with Essix
$ go get -u github.com/wscherphof/essix
So when you have this prospect who’s planning to “build a web based tool” where users form communities to stand strong together in planning and selling their small produce to big fat client organisations… where do you start?
Yes, you could reach out for the nearest open source fool proof Content Management System, and fling in a Community Management plugin and a Deal Broker plugin with a proven track record, choose a theme, click it together, and run.
That’ll work brilliantly. If successful, users start building considerable parts of their business on it. That’s about the moment they call you to tell something is broken, and needs fixing. Urgently. Then you wonder where to click to fix it, and quickly call the local open source fool proof Content Management System super expert. Because that’s not you. They dive deep for an hour or two, then conclude you should call the regional proven track record Deal Broker plugin super expert. Because that’s not them.
Enfin, you get the picture: packaged things that do a lot, out of the box, without programming, just configuration, they tend to break down dramatically sooner or later, without telling you how to fix them.
So should you start from scratch then? Well… why not? The tremendous advantage would of course be that you end up with only precisely exactly what you need, while knowing every bit and byte of what it does and how it works. But yeah.
No, you can’t start from scratch for every project. Because… there’s so much that you need! So what is it? What do you really need for each and every project that makes it too much to start from scratch?
Let me speculate a bit here. What you always need is:
- A highly available database cluster
- A straightforward way to manage business object data life cycles
- Transparently secure user authentication & authorisation
- HTML templating
- User & system error handling
- A responsive static file server
- Clear definition of request routes with paths & methods & handlers
- All forms inescapably protected from Cross Site Request Forgery attacks
- Texts and labels in multiple languages
- Sending email
- HTTPS with certificate generation
- HTTP2 would be welcome
- A short-cycled build system
- An automated script to build computing environments
- A no-brains way to scale out by adding computing resources
- A declarative rate limiting capability, protecting from robots & Denial of Service attacks
Those kind of things. Am I far off? Anyway, it’s clear enough: that is too much to build from scratch – for any project. But then again, once you would have all this, what else would you need? Wouldn’t all projects then seem a bit like “well, what we basically need is some clearly defined business logic, a thought through user interface, and some consistent styling – then we hack it together in a jiffy”? Hm, so, yeah, why not build it from scratch once?