/cbd

Proyecto Node.js basado en una API REST consumida con AngularJS, conectado a MongoDB y desplegado en Heroku. Node.js project based on an API REST consumed with AngularJS, connected to MongoDB and deployed in Heroku.

Primary LanguageJavaScript

##Español La base de este proyecto fue tomada de https://github.com/braitsch/node-login .

Puedes probar la aplicación en: http://cbd.herokuapp.com .

También está disponible la documentación de este trabajo, donde se estudian estas tecnologías y se realizan una serie de comparaciones.

###Justificación Este proyecto surge como trabajo para la asignatura "Complementos de Bases de Datos" del Grado en Ingeniería Informática - Ingeniería del Software de la Universidad de Sevilla.

###Temática En este proyecto puedes loguearte como alumno de un colegio y ver las excursiones disponibles por realizar. Si te gusta alguna excursión podrás apuntarte, ver los alumnos que acudirán, borrarte o incluso comentar las excursiones una vez que hayan transcurrido.

###Tecnologías En este proyecto he usado las siguientes tecnologías:

  • MongoDB: como base de datos de la aplicación.
  • NodeJS: para la implementación del servidor.
  • AngularJS: para el cliente.
  • Jade: para la simplificación de las plantillas HTML.

###Casos de uso Como usuario podemos:

  • Registrarnos en la aplicación.
  • Loguearnos en la aplicación.
  • Reestablecer nuestra contraseña.
  • Listar todas las excursiones disponibles.
  • Buscar excursiones por palabras contenidas en el título o en la descripción.
  • Consultar la información asociada a una excursión.
  • Inscribirnos en una excursión que aún no se ha realizado.
  • Comentar una excursión que ya ha sido realizada.

###Estructura del proyecto El proyecto está estructurado de la siguiente forma:

  • app: carpeta con el código fuente de la aplicación.
    • public: archivos estáticos de la aplicación.
      • css: hojas de estilo.
        • bootstrap-theme.css
        • bootstrap.css
        • font-awesome.css
        • starter-template.css
        • style.css
        • style.styl
      • fonts: fuentes de font-awesome para el uso de los iconos.
        • fontawesome-webfont.eot
        • fontawesome-webfont.svg
        • fontawesome-webfont.ttf
        • fontawesome-webfont.woff
      • img: imágenes usadas en la aplicación.
      • js: código javascript de la aplicación.
        • angular: controladores de angular para las plantillas.
          • angularDiagrams.js
          • angularIndex.js
          • angularTrip.js
        • controllers: controladores de jQuery para las plantillas.
          • diagramsController.js
          • homeController.js (sustituido por indexController.js)
          • indexController.js
          • loginController.js
          • signupController.js
          • tripController.js
        • form-validators: funciones de validación en jQuery.
          • accountValidator.js
          • emailValidator.js
          • loginValidator.js
          • resetValidator.js
        • views: llamada a las funciones jQuery de las vistas.
          • diagrams.js
          • home.js
          • index.js
          • login.js
          • reset.js
          • singup.js
          • trip.js
        • angular.js: librería AngularJS.
      • vendor: css y javascript inicial. Sobreescrito por las versiones de la carpeta "css".
        • bootstrap-modal.js
        • bootstrap-transition.js
        • bootstrap.min.css
        • jquery.form.js
        • jquery.min.js
    • server: archivos del servidor.
      • modules: módulos definidos para funcionalidades concretas.
        • account-manager.js
        • country-list.js (no se usa en esta aplicación)
        • data-base-manager.js (gestor de conexiones con la base de datos. Aquí se definen las consultas)
        • email-dispatcher.js: gestor de emails de la aplicación.
        • email-settings.js: archivo de configuración con las credenciales del email de la aplicación.
      • views: vistas de la aplicación.
        • modals: modales de la aplicación.
          • alert.jade
          • confirm.jade
          • form-errors.jade
          • lost-password.jade
          • reset-password.jade
        • 404.jade
        • account.jade
        • contact.jade
        • diagrams.jade
        • home.jade (no usado actualmente)
        • index.jade
        • layout.jade
        • login.jade
        • print.jade
        • reset.jade
        • signup.jade
        • trip.jade
      • router.js: rutas de la aplicación y de la API REST
  • Procfile: archivo necesario para el despliegue en Heroku.
  • README.md: este fichero.
  • app.js: archivo para la creación del servidor.
  • package.json: dependencias de nuestro proyecto Node.js.

##English## This project was forked by https://github.com/braitsch/node-login .

You can try the app in: http://cbd.herokuapp.com .

You can also download the generated documentation about this project, where all of these technologies are studied and compared with other technologies.

###Justification This project was born as a deliverable for the "Complementos de Bases de Datos" subject in Grado en Ingeniería Informática - Ingeniería del Software offered by Universidad de Sevilla.

###Subject In this application you can log in as a school user and you can see the avaible school trips. If you like any trip you could sign up for the trip, see all the attendants or comment it.

###Technologies In this project I have used:

  • MongoDB: as the database to storage the application data.
  • NodeJS: for the server implementation.
  • AngularJS: for the client side.
  • Jade: for make the templates easier than HTML.

###User cases As user we can:

  • Create an account.
  • Log in the application.
  • Reset our password.
  • Retrieve all the avaible trips.
  • Search for any trip that contains the specified word in the title or description.
  • See all the related information about the selected trip.
  • Sign up in a no finished trip.
  • Comment a finished trip.

###Project structure The project is structure as follows:

  • app: application source code.
    • public: application static files.
      • css: stylesheets.
        • bootstrap-theme.css
        • bootstrap.css
        • font-awesome.css
        • starter-template.css
        • style.css
        • style.styl
      • fonts: font-awesome fonts for icons.
        • fontawesome-webfont.eot
        • fontawesome-webfont.svg
        • fontawesome-webfont.ttf
        • fontawesome-webfont.woff
      • img: application images.
      • js: javascript code.
        • angular: angular controllers for templates.
          • angularDiagrams.js
          • angularIndex.js
          • angularTrip.js
        • controllers: jQuery controllers for templates.
          • diagramController.js
          • homeController.js (replaced by indexController.js)
          • indexController.js
          • loginController.js
          • signupController.js
          • tripController.js
        • form-validators: jQuery validator functions.
          • accountValidator.js
          • emailValidator.js
          • loginValidator.js
          • resetValidator.js
        • views: calls to jQuery functions views.
          • diagrams.js
          • home.js
          • index.js
          • login.js
          • reset.js
          • singup.js
          • trip.js
        • angular.js: AngularJS library.
      • vendor: initial css and javascript. Replaced by the files contained in the "css" folder.
        • bootstrap-modal.js
        • bootstrap-transition.js
        • bootstrap.min.css
        • jquery.form.js
        • jquery.min.js
    • server: server files.
      • modules: defined modules for specific functionalities.
        • account-manager.js
        • country-list.js (not currently used)
        • data-base-manager.js (Queries are defined here)
        • email-dispatcher.js: application emails manager.
        • email-settings.js: file where our mail credentials are specified.
      • views: application views.
        • modals: bootstrap modals.
          • alert.jade
          • confirm.jade
          • form-errors.jade
          • lost-password.jade
          • reset-password.jade
        • 404.jade
        • account.jade
        • contact.jade
        • diagrams.jade
        • home.jade (not currently used)
        • index.jade
        • layout.jade
        • login.jade
        • print.jade
        • reset.jade
        • signup.jade
        • trip.jade
      • router.js: application and API REST routes.
  • Procfile: required file by Heroku for deployment.
  • README.md: the file you are reading.
  • app.js: file for the server creation.
  • package.json: our Node.js project dependencies.