TypeScript, because its a fast compiler and has the best typechecker support and typings collection for existing front-end libraries, so there is almost no need to wrap anything.
React, because its conceptually simple, has wide community support and I get TypeScript's type checking inside the TSX templates too, unlike in Vue and most other frameworks.
MobX, because it needs less boilerplate than Redux, plays better with TypeScript than immutable.js, is really easy to make performant (lots of observer components + computed properties) and its intuitive to developers coming from Angular, knockout or Vue.
On the backend: TypeScript, Node, bluebird, node-sql and PostgreSQL
TypeScript, because it makes it easy to write end-to-end-typechecked programs if the backend language is the same as the frontend. The client and server can both claim to implement the same interface, and then its easy to see if any changes violate that contract. Additionally, server-side rendering with React is simpler.
Node, because its reasonably fast without thinking too much about it. The only pitfall are accidentally cpu-bound tasks, but in practice those are a problem rarely and I'm working on a tool to detect and report them: https://github.com/spion/long-task-detector
Another thing missing in node are better streams. A promise-friendly version of pull-stream would fix that.
Bluebird, because its fast and provides a great debugging experience with long stack traces
PostgreSQL, because it can go very far for many things before you need something else.
node-sql, because its an SQL query builder for node which can be made typesafe with TypeScript, and because query builders often beat ORM spaghetti in performance and maintainability in the long run.
TypeScript, because its a fast compiler and has the best typechecker support and typings collection for existing front-end libraries, so there is almost no need to wrap anything.
React, because its conceptually simple, has wide community support and I get TypeScript's type checking inside the TSX templates too, unlike in Vue and most other frameworks.
MobX, because it needs less boilerplate than Redux, plays better with TypeScript than immutable.js, is really easy to make performant (lots of observer components + computed properties) and its intuitive to developers coming from Angular, knockout or Vue.
On the backend: TypeScript, Node, bluebird, node-sql and PostgreSQL
TypeScript, because it makes it easy to write end-to-end-typechecked programs if the backend language is the same as the frontend. The client and server can both claim to implement the same interface, and then its easy to see if any changes violate that contract. Additionally, server-side rendering with React is simpler.
Node, because its reasonably fast without thinking too much about it. The only pitfall are accidentally cpu-bound tasks, but in practice those are a problem rarely and I'm working on a tool to detect and report them: https://github.com/spion/long-task-detector
Another thing missing in node are better streams. A promise-friendly version of pull-stream would fix that.
Bluebird, because its fast and provides a great debugging experience with long stack traces
PostgreSQL, because it can go very far for many things before you need something else.
node-sql, because its an SQL query builder for node which can be made typesafe with TypeScript, and because query builders often beat ORM spaghetti in performance and maintainability in the long run.