Book editor: TOC generator
Prueba de código 3 - Levelap, 28 de julio, 2014
La aplicación para crear y administrar publicaciones para una editorial está separada en 2 secciones: cliente y servidor. Cada una de ellas independizada completamente de la otra. La aplicación en servidor está desarrollada en NodeJS, mientras que la de cliente está diseñada como una 'single page application' sobre AngularJS.
Dependencias
Dependencias para correr la aplicación:
- NodeJS v0.10.29
- MySQL Server
Dependencias para ejecutar los tests (de cliente):
- PhantomJS(*)
Instalación
Debe ejectuarse la instalación tanto en cliente como en servidor. Cada bloque de comando debe ejecutarse desde la raíz del proeycto:
$ cd server/
$ sudo npm install
$ cd client/
$ sudo npm install`
Configuración
En la carpeta server/config/ debe configurarse en el archivo db_connection.js el host, user y password del servidor de MySQL. Esto es indispensable para un correcto funcionamiento de la aplicación.
Testing
Cada sección de la aplicación tiene su propia batería de tests, tanto client como server, y deben ejecutarse por separado. Para ejecutar los tests, es necesario navegar a la sección de la aplicación correcta: server o client. Una vez en el directorio, se corren ejecutando:
$ npm test
(*) PhantomJS es un 'headless browser', cómodo para realizar los tests. En caso de no tenerlo instalado, se puede correr el siguiente comando desde la carpeta client para ejectuar los tests desde Chrome:
$ ./node_modules/karma/bin/karma start --singleRun true --browsers Chrome
Inicializar la acplicación
Desde la carpeta server del proyecto, ejectuar:
$ npm start
Esto levanta un servidor en NodeJS en el puerto 3000
Utilizar la aplicación
Desde un navegador Chrome o Firefox (se recomienda que esté actualizado a la última versión), navegar a la dirección:
localhost:3000
Estructura
Cada sección de la aplicación tiene su carpeta individual
Dentro de la carpeta server :
- app.js incluye la configuración global de NodeJS y Express
- La carpeta modules incluye la funcionalidad principal de la aplicación:
- La carpeta books contiene las rutas y modelos.
- La carpeta utilities incluye la versión de servidor del toc_index_generator.
- Cada carpeta tiene su respectiva carpeta specs con los tests de jasmine.
- La carpeta config incluye scripts de conexión a la base de datos.
- La carpeta mocks incluye scripts que maquetan la aplicación y respuestas para efectos de testing.
Dentro de la carpeta client :
- index.html incluye la base HTML5 de la aplicación y la carga de scripts para el navegador.
- La carpeta scripts incluye la funcionalidad principal de la aplicación:
- La carpeta books contiene el grupo de List, Create, Edit y Show, así como servicios usados.
- La carpeta directives incluye las directivas de AngularJS para DOM Manipulation.
- La carpeta filters contiene los filtros de AngularJS para formato de datos.
- La carpeta underscore contiene el módulo no_conflict de la utilidad de objetos y arrelgos.
- Cada carpeta tiene su respectiva carpeta de specs con los tests.
- La carpeta styles contiene un pequeño CSS para extender Bootstrap 3.
- La carpeta components incluye los scripts JS de Jquery, Angular, Bootstrap, etc., que se usan en la aplicación.