Como esta es una pregunta basada casi exclusivamente en una opinión, daré mi respuesta de opinión sobre las herramientas que prefiero usar en el front-end:
- React (http://facebook.github.io/react): biblioteca de interfaz de usuario basada en componentes para crear interfaces de usuario. Casi elimina por completo la necesidad de la manipulación directa del DOM con bibliotecas como jQuery.
- Reflujo (https://github.com/reflux/refluxjs): maneja la gestión de datos en sus aplicaciones React (u otras) a través de una arquitectura similar a FLUX. Le ofrece tiendas (dónde viven sus datos y qué escuchan sus componentes) y acciones (eventos que sus componentes activan para actualizar las tiendas).
- [ ACTUALIZACIÓN ] Redux (https://github.com/reactjs/redux): ahora uso y recomiendo Redux en lugar de Reflujo para la gestión del estado de React. Es una biblioteca muy mínima, tiene una gran adopción y es muy comprobable.
- React Router (https://github.com/rackt/react-r…): una excelente biblioteca de enrutadores para reaccionar.
- WebPack (https://webpack.github.io): una herramienta de compilación extremadamente poderosa que le permite utilizar las importaciones de estilo de nodo / CommonJS en su código JS, eliminando la necesidad de cosas como RequireJS / Browserify. El beneficio adicional es que también obtiene acceso a gran parte del enorme ecosistema de nodos en el navegador. WebPack también puede manejar cosas como la compresión de imágenes, comprimir / minimizar CSS, HTML y JS, y muchas MUCHAS otras cosas. WebPack es una alternativa a herramientas como Grunt y Gulp.
- Babel (https://babeljs.io): un transpilador de código que convierte JavaScript moderno de ES6 / 7 a ES5 que es compatible con la mayoría de los navegadores. Esto le da acceso a características increíbles como cadenas de plantillas, búsqueda, funciones de flecha, promesas, asíncrono / espera y mucho más.
- Eslint (http://eslint.org): potente listado de código JavaScript para asegurarse de que su código sea coherente y que no cometa errores tontos.
- Flow (http://flowtype.org): un verificador de tipo estático para JavaScript. Captura muchos errores tontos y lo alienta a pensar en su programa como personas que codifican en lenguajes mecanografiados / compilados.
- Lodash (https://lodash.com): una biblioteca de utilidades (IMO) mejor que Underscore que le brinda muchas herramientas útiles para trabajar con cadenas, matrices, objetos y más.
- Como otros han mencionado, Bootstrap y FontAwesome son excelentes puntos de partida para diseñar tu aplicación.
- Sass / LESS son bastante equivalentes a mis ojos, por lo que ambos son geniales como alternativas al CSS simple. ¡Simplemente no anides demasiado!
- El enorme ecosistema de módulos de nodo proporciona excelentes bibliotecas para resolver varios problemas, solo busque lo que necesita y probablemente esté en un módulo de nodo en npm.