Thanks to visit codestin.com
Credit goes to github.com

Skip to content
View lautaromurua's full-sized avatar

Block or report lautaromurua

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
lautaromurua/README.md

Concursos GCBA

https://concursosgcaba.buenosaires.gob.ar

Concursos orientados a generar oportunidades para el ingreso a GCABA y el crecimiento de los empleados de planta permanente,.

Tecnologías

Backend Frontend
node +v9 react +v16
express +v4 react-dom +v16
knex +v0.15 webpack +v3.12
objection +v1.5 style-loader +v0.16
morgan +v1.9 postcss-loader +v2.1
helmet +v3 formik +v1.5
passport +v0.4.0
passport-local v1.0.0
pg +v7.0
redis +v2.8
snyk +v2.1

Instalación

Pre-requisitos

Requerido

  • Tener instalado Node.js v9.0 o superior.
  • Tener instalado Npm

Opcional

  • Instalar Postgres (opcional en caso de que se quiera correr la base de datos local).
  • instalar Redis (opcional, para manejar las sesiones localmente. Se puede correr el proyecto utilizando postgres localmente y no tener instalado redis, el portal se va a conectar con redis cuando le especifiquemos en la variable de entorno donde se tiene que conectar.)

Correr el proyecto en modo local

  • Clonar el repo.
  • Ir por consola a la raíz del proyecto.
  • Crear el fichero .env
    • Crear las variables de entorno y agregar los valores respectivos.
  • Correr el comando npm install
  • Correr el comando npm run dev
  • Abrir otra consola en la raíz del proyecto y correr el comando npm run devfe

Scripts disponibles

  • dev

    npm run dev corre el servidor en modo desarrollo. Toma como referencia el objeto de conexion a la base de datos postgres development.

  • devlocal

    npm run devlocal corre el servidor en modo desarrollo. Toma como referencia el objeto de conexion a la base de datos postgres local.

  • devfe

    npm run devfe llama a webpack en modo desarrollo para que empaquete los módulos escepecificados en su configuracion y quede en modo monitor escuchando.

  • start

    npm run start corre los binarios ya minificados, empaquetados y transpilados. Se utiliza para correr el portal en producción.

  • build

    npm run build corre dos scripts: primero corre buildbe y luego buildfe

  • buildbe

    npm run buildbe llama a webpack en modo producction para que minifique y empaquete los assests del portal.

  • buildfe

    npm run buildfe llama a babel para que transpile todo codigo y lo deje en el directorio /bin.

  • postinstall

    script que utiliza heroku despues de instalar las dependencias.

    Objeto de conexion a la DB.

    /src/db/database.js

          local: {  
            client: 'pg',  
            connection: {  
      	      host : '127.0.0.1', // host de conexion  
      	      database: "mibasededatos",  // nombre de la base de datoos 
      		  user: "postgres",  // nombre de usuario en postgres
      	      password: "mipass"  // contraseña de la base de datos 
            },  
            migrations: {  
      	      directory: path.join(__dirname, './migrations')  // diretorio de las migraciones
           }
        }
    

    *Ejemplo del objeto de conexión a la base de datos.

      Existen 4 objetos por default creados: local, development, staging, production.
    

RUTAS

https://concursosgcaba.buenosaires.gob.ar/

/auth

Ruta Metodo Middleware Detalles
/auth/login GET
  • isLogged
ver
/auth/login POST
  • isLogged
  • validateRecaptcha
ver
/auth/register GET
  • isLogged
  • validateRecaptcha
ver
/auth/register POST
  • isLogged
  • validateRecaptcha
ver
/auth/forgot GET
  • isLogged
  • validateRecaptcha
ver
/auth/forgot POST
  • isLogged
  • validateRecaptcha
ver
/auth/validatemail GET
ver
/auth/validatemail POST
  • isLogged
  • validateRecaptcha
ver
/auth/validatemail/:token GET
  • validateEmailValidator
ver
/auth/resetpassword/:token GET
  • alreadyLogged
  • validateGetResetPassword
ver
/auth/logout GET
  • loginRequired
ver

/cuenta

Ruta Método Middleware Detalles
/cuenta GET
  • loginRequired
ver
/cuenta POST
  • loginRequired
ver
/cuenta/curriculum GET
  • loginRequired
ver
/cuenta/change POST
  • loginRequired
ver
/cuenta/change POST
  • loginRequired
  • validateRecaptcha
  • validateChangePassword
ver
/cuenta/change/:token POST
  • loginRequired
  • validateConfirmChangePassword
ver

/concursos

Ruta Método Middleware Detalles
/concursos GET
    ver
    /concursos/publicos/abiertos GET
    ver
    /concursos/cerrados/gcba GET
      ver
      /concurso/:id GET
        ver
        /concurso/:id/get GET
          ver
          /concurso/:id/postulacion GET
          • loginRequired
          ver
          /concurso/:id POST
          • loginRequired
          ver

          /postulacion

          Ruta Método Middleware Detalles
          /postulacion/:id GET
            ver

            API

            https://concursosgcaba.buenosaires.gob.ar/api

            /api/postulaciones

            Ruta Método Middleware Detalles
            /api/postulaciones/:id GET
            • loginRequired
            ver
            /api/postulaciones POST
            • loginRequired
            ver
            /api/postulaciones/:id/curriculum GET
            • loginRequired
            ver
            /api/postulaciones/:id/modify PATCH
              ver
              /api/postulaciones/:pid/estudios/:id DELETE
              • loginRequired
              ver
              /api/postulaciones/:pid/capacitaciones/:id DELETE
              • loginRequired
              ver
              /api/postulaciones/:pid/experiencias/:id DELETE
              • loginRequired
              ver

              /api/concursos

              Ruta Método Middleware Detalles
              /api/concursos GET
                ver
                /api/concursos/:id GET
                  ver

                  /api/curriculum

                  Ruta Método Middleware Detalles
                  /api/curriculum GET
                  • loginRequired
                  ver
                  /api/curriculum PATCH
                  • loginRequired
                  • validatePatchCurriculum
                  ver
                  /api/curriculum/estudio POST
                  • validateEstudioCurriculum
                  ver
                  /api/curriculum/estudio/:id PATCH
                  • loginRequired
                  • validateEstudioCurriculum
                  ver
                  /api/curriculum/estudio/:id DELETE
                  • loginRequired
                  • validateEstudioCurriculum
                  ver
                  /api/curriculum/capacitacion POST
                  • validateEstudioCurriculum
                  ver
                  /api/curriculum/capacitacion/:id PATCH
                  • loginRequired
                  • validateCapacitacionCurriculum
                  ver
                  /api/curriculum/capacitacion/:id DELETE
                  • loginRequired
                  ver
                  /api/curriculum/experiencia POST
                  • loginRequired
                  • validateExperienciaCurriculum
                  ver
                  /api/curriculum/experiencia/:id PATCH
                  • loginRequired
                  • validateExperienciaCurriculum
                  ver
                  /api/curriculum/experiencia/:id DELETE
                    ver

                    LSITA DE VARIABLES DE ENTORNO

                    env descripción
                    DOMAIN -
                    HEROKU_POSTGRESQL_ONYX_URL
                    MIBA_CLIENT_ID
                    MIBA_CLIENT_SECRET
                    MIBA_HOST
                    NODE_ENV
                    PAPERTRAIL_API_TOKEN
                    RECAPTCHA_PRIVATE
                    RECAPTCHA_PUBLIC
                    REDIS_URL
                    SECRET_KEY
                    SF_CLIENT_ID
                    SF_CLIENT_SECRET
                    SF_DOMAIN
                    SF_PASSWORD
                    SF_USERNAME
                    SMTP_PASSWORD
                    SMTP_PORT
                    SMTP_SERVER
                    SMTP_USER
                    SYNC
                    SYNC_INTERVAL
                    SYNC_ONLY_LAST_MODIFIED_RECORDS
                    SYNC_URL
                    SYNC_URL_GET_SF_TOKEN
                    SYNC_VERSION_API
                    TZ

                    Extras

                    Funcionalidad y comportamiento del portal

                    StackEdit extends the standard Markdown syntax by adding extra Markdown extensions, providing you with some nice features.

                    Conexión con postgres

                    La conexión casi/total del portal con postgres se realizó a partir del momento en que se estaba exediendo el límite de api calls con sf, para realizar operaciones CRUD básicas salientes desde portal. Si bien ocurre un flujo de datos en varias direcciones desde el portal, postgres alimenta principalmente al sitio.

                    Para conectarnos con postgres utilizamos un query builder llamado knex asociado a otro query builder/orm llamado objection (objection esta basado en knex) con el cual desarrollamos nuestros modelos, asociaones, migraciones y seeders.

                    Conexion con Salesforce

                    Principalmente el portal consumía datos desde Sf. Lo que ocurre aquí es que si queremos consumir datos de Sf desde una fuente externa, este tiene un límite de llamadas. En momentos que el portal tenia un flujo de datos arriba de lo normal, estas api calls que Sf nos proveeia se agotaban, por ende se debía pagar para obtener más.

                    Desde el portal se utiliza una librería jsforce la cual nos provee la conexión hacia Salesforce. A su vez nos entrega un objeto al estilo ORM con el cual podemos realizar consultas CRUD sql hacia nustreo entorno de Sf.

                    Renderizado de vistas

                    El portal inicialmente comenzo con un motor de renderizado de vistas handlebars . Con el correr del tiempo y las personas que fueron desarrollando en dicho proyecto, el renderizado de las vistas fue mutando en tecnologías. De a poco se ha ido desacoplando handlebars y mudando toda la UI a javascript react.js. Por motivos de performace, de la tecnologpia en si y diversos motivos más practicamente todo el renderizado de las vistas se tendría que pasar a react.

                    En el dia de hoy, la renderizacion de dichas vistas es compartida.

                    • Handlebars:

                      • inicio
                      • navbar
                      • footer
                      • login
                      • lista de postulaciones
                      • recuperar contraseña
                      • normativa
                      • guia del usuario
                    • React:

                      • lista de concursos abiertos
                      • lista de concursos cerrados
                      • detalle de un concurso
                      • prepostulacion
                      • pospostulacion
                      • curriculum

                    Popular repositories Loading

                    1. WebApp-Responde WebApp-Responde Public

                    2. lautaromurua lautaromurua Public

                      Config files for my GitHub profile.

                    3. nestjs-bull-nodejs nestjs-bull-nodejs Public

                      nestjs-bull-nodejs

                      TypeScript

                    4. bull bull Public

                      Forked from OptimalBits/bull

                      Premium Queue package for handling distributed jobs and messages in NodeJS.

                      JavaScript