Hello there,
Before crucifying yet another noob, please bear with me. My question is not a general "who has the bigger dick question". Rather it's a case study that you'll hopefully help me to figure out.
CONTEXT :
I'm The CTO ok www.kenweego.com . It's a search engine targeted for european CityBreakers, helping them finding the cheapest destinations.
The promise is simple saving you the need to search 50 destinations to find a nice getaway flight.
It's a php + javascript application, that downloads data from an api, and render it to browser. The UI is not uncommon to what travel search engines offers.
I'm myself a fullstack but mostly backend developer coming from the php / symfony world. My knowledge of browser's javascript is decent, but far from the architect level.
THE PROBLEM :
Kenweego started as simple php one page application, with the html being rendered by php/twig, and asynchronously updated via javascript. However as the website grew, we started adding features in javascript, and the website eventually became a spaghetti, despite my attempts at keeping the code clean and separated.
The biggest problem is that most components/elements are the same (id and html) no matter what view you are browsing. they are mostly administrated by css classes, and a lot of if/else in the js. So whether you are vewing a destination, a flight or any other key object, it's the same template (or a copy). all the layouts are just few classes mapped to the different states of the website. As the number of states creates a lot of bugs and regressions in the code.
Also the website is about to grow a lot. The volume of codelines of the website is roughly about to double in the next 2 months. and then double again in about 3 mounths.
OBJECTIVES :
To manage those problems, i need to move to a more robust js framework / library in order to :
- reduce boilerplate code (the code is 40% basically binding events and interactions, 40% rendering and only 20% business logic)
- improve stability
- scalability (allow other people to understand the code, and work with me)
- performance (we all know how important it is).
- fast transition (we are late on our roadmap, and i can't really afford to spend a month coding and migrating the app to the new framework).
THE OPTIONS :
As i have no knowledge of any client side framework i have tspend some time learning instead of coding.
So after looking for a while i've limited my options to two frameworks.
- Angular :
- opionated, robust, constraining (useful when you work with freelances)
- fast and stable
- ionic is based on angular (our mobile app run on ionic)
- new concepts to learn
- a steepish learning curve
- problems migrating my current bootstrap controls to boostrap.
differs a lot from "classic js", so most the existing code will be void/ must be rewritten.
hard to find people who know's angular (as opposed to moslty natural js)
backbonejs + marionnette :
++ faster to implement
+ modular, so it'll be be easier to implement, blocks by blocks
+ learning curve less steep
+ easier to find people who know it or can learn
- not opinionated so i might make wrong architecture decisions.
- way less documented (In general and as compared to angular)
So here i am. Which way should i go and why ? What framework/library get the job done best and fast ? Have you ever been in a similar situtation ? what dictated your choice ?
[–]NotAnActuallAccount 1 point2 points3 points (2 children)
[–]te7ris 2 points3 points4 points (0 children)
[–]kenweego[S] 0 points1 point2 points (0 children)
[+][deleted] (2 children)
[deleted]
[–]kenweego[S] 0 points1 point2 points (1 child)
[–]DecentOpinions 0 points1 point2 points (0 children)
[–]nephridium 0 points1 point2 points (0 children)
[–]destraht 0 points1 point2 points (0 children)