Webdevelopment is great. Webdevelopment is tiresome. Both statements are true. It is the best feeling to engage in so many different technologies, libraries, best practices, tools and the underlying toolchain. The knowledge to grasp and understand todays web technologies is awesome. Every major development has a vibrant, seething community behind them which have already answered most of the questions possible to arise, and if not, they sure enough have the answer within hours for you. On the other hand, developing for the web means a constant high stress level, staying up to date, replacing outdated libraries, build new toolchains bc the old api's broke and often times learn more core concepts (again). On top of this all is another "problem". There is not THE way of doing things or THE toolset to solve a problem, but a zillion. And every single one of them is better than every other, at least if you believe the communities on the backside. One could get a little bit nostalgic, thinking about times when jQuery was the only thing to know. The one and only true multitool and there were no (or not so many) questions about deployment, dependencies and task runner.
What about the server side?
On the backend, the clocks stopped not ticking as well. True, they do not run quite as fast as on the client side. The PHP frameworks are cannibalising one another and leave behind Laravell. DotNet Core is picking up some pace and somewhat outbreaks the unloved stepchild IIS, even in some Microsoft Environments. Altogether, the server exe file trend is alive and stronger than ever since nodeJS and competences are handed more to micro services than kept together in a single place.
Object relation mapper like the Microsoft Entity Framework, Javas Hibernate or Laravel's Eloquent (former Doctrine) more or less replaced the direct database connection, the noSQL trend is almost over and had not left behind major damage. API frameworks like Swagger are prone to get order into the grown chaos of many REST APIs and Tools like Postman enables everybody to test these APIs. So, the horizon is not darkest gray, but interspersed with some sunlight at least.
So, wich strategy to use?
But why do I carry you with me on these wandering thoughts my brain spits out at 11 AM, while breakfasting at McDonalds? Bear with me. There is a point to make.
Even when I worked a lot with AngularJS, Knockout and DotNet in my job. My latest bigger (private) web applications are done with the (php based) froot engine. Meanwhile, it has become outdated and is begging to be replaced. But what was the froot engine, you may ask? On start of my project SmartBooking for the professinal academy, I came to the decision to use ExtJS (nowadays Sencha) in combination with a selfmade PHP5 MVC variant and bundle it with some minor tools, write some reusable components and classes for it and called it altogether FrootEngine. This worked great and I was up and running with a new tool or prototype in a matter of minutes. The picking and packaging application of my former employer Microtronics/QGate is based on FrootEngine for exmaple. SmartBooking and CustomerProcessing are childs from it as well. Engine is maybe overselling. It is more like a best practice folder structure with utility classes and a working toolchain for deployment, obfuscating and testing.
yKeen, modular "best practice" toolchain
I dug myself deep in the various options we web developer have got for creating modern web applications the last couple months (and I do not talk about simple websites here). The amount of possibilities is quite frankly overwhelming. But like Seth Godin stated once: "In a world where we have too many choices and too little time, the obvious thing to do is just ignore stuff".
I'm going to create a modern, lean and performant collection of webdevelopment tools under the name yKeen. It will be an ideal environment for projects to come and will define (in the spirit of the Froot Engine) some best practices for me. Flexible, effective, versatile and modular.
Elements of the yKeen-Toolchain:
- Laravel MVC with Eloquent ORM (PHP MVC Framework)
- VueJS (JS MVVM Framework)
- Composer (PHP Dependency Management)
- NPM (JS Dependency Management)
- Webpack / Laravel-Mix (Task Runner)
- GIT (Software Versioning Tool)
- Bootstrap + Bootstrap Forms (Responsive CSS + JS Helper)
- Apache Cordova (Cross Platform Mobile Applications)
- Electron (Cross Platform Desktop Applications)
- Ionic (Mobile UI Components)
- Swagger (REST API Framework)
- Font Awesome 2 (Icons)
- Fancy Tree JS Component (UI Tree Component)
- OAuth 2.0 (Authentication Protocol)
- Reportico (Reporting Framework)
- JS Datatables (UI Table Component)
- ChartJS (UI Charting Engine)
Of course, this backbone is not set in stone. Depending on the app's requirements, elements can be switched or excluded.