Code Monkey home page Code Monkey logo

uns-proyecto-final's Introduction

Proyecto final

This project is an event and announcement visualization web application.

You can try it right now at https://bmmg-proyecto-final-uns.glitch.me/ and https://bmmg-proyecto-final-uns.glitch.me/admin

CodeQL Node.js CI

Features

  • Visualization of real time events and announcements
  • Easy to access in a web app
  • Easy to use admin app to create, view, edit or delete announcements
  • Events and announcements stored in a small and portable database

Components

  • Main event and announcement visualization front-end, built with React.js
  • Admin front-end, built with React.js, to create, edit, view and delete announcements
  • SQLite database for storage
  • Back-end, running on Node.js, that hosts both front-ends and provides services for database access

Repo

The repo is organized as follows:

  • db: holds everything database-related
  • doc: pictures for this readme
  • src: source code for the application

Screenshots

event-visualization

announcement-admin

Building and running

Dependencies

To build and run the project, you need npm and node.

Building

To install all the dependencies and build the project, run:

npm install
npm run build

Running

To run the whole project, execute the following command:

npm start

We also provide the following useful commands, specially for development/debugging:

  • npm run admin: only run the admin front-end, on port 3000 (or next available port, if already used)
  • npm run backend: only run the backend
  • npm run visualization: only run the visualization front-end, on port 3000 (or next available port, if already used)

About the project

This is the final project or Bárbara Mattioli and Manuel Garat for their Computer Engineering degree in the Universidad Nacional del Sur, Bahía Blanca, Argentina.

uns-proyecto-final's People

Contributors

garatma avatar barbmatt avatar dependabot[bot] avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

barbmatt

uns-proyecto-final's Issues

Prueba para React

Realizar una prueba básica para React

Al realizar la prueba tener en cuenta estas características, requerimientos y/o restricciones:

  1. Qué tan popular/utilizado es,
  2. Facilidad de uso/complejidad/curva de aprendizaje,
  3. Nivel de features y
  4. Soporte para con back-end (HTTP)

Una vez terminada la prueba, comentar en este issue una conclusión sobre el framework.

Better event data

Is your feature request related to a problem? Please describe.
Better event data.

Describe the solution you'd like
Use real events.

Describe alternatives you've considered
None.

Additional context
None.

Prueba para Vue

Realizar una prueba básica para Vue

Al realizar la prueba tener en cuenta estas características, requerimientos y/o restricciones:

  1. Qué tan popular/utilizado es,
  2. Facilidad de uso/complejidad/curva de aprendizaje,
  3. Nivel de features y
  4. Soporte para con back-end (HTTP)

Una vez terminada la prueba, comentar en este issue una conclusión sobre el framework.

Better announcement data

Is your feature request related to a problem? Please describe.
Better announcement data.

Describe the solution you'd like
Pull up announcements from https://uns.edu.ar/ and put some in the announcements table.

Describe alternatives you've considered
None.

Additional context
None.

Diseñar y crear tablas para la base de datos

Mejorar las dos tablas que ya tenemos creadas en SQLite:

  • Announcements: la tabla que contiene los anuncios que los/as usuarios/as van a insertar desde el front-end admin
  • Room: la tabla que contiene una combinación de espacios, aulas, laboratorios, etc. y sus horarios. Estos datos son estáticos en el sentido de que los creamos una vez y los utilizamos para probar el front-end visualization

Visualization details

Add to this list all of the small details that the visualization FE could improve upon:

  • Only show attendance percentage in events that are currently on, not past or future events
  • Only show events that currently on in the two hours time window, not finished events
  • Show the table right away, instead of waiting for the first refresh
  • Because some events now take two "rows", the announcements are not always visible
  • Make a request to the event_room endpoint after a period of time to show the data up to date
  • Fix the size of the announcements

Add the rest of the functionality to admin

-Read -> create a table to show all the announcements in the frontend admin
-Delete -> use the table created to select which event has to be deleted
-Edit -> use the table to select an event and show the interface to create a new event but with the fields complete with info of the event.

Add logo and title to table header

Is your feature request related to a problem? Please describe.
The design calls for a logo and title to the table.

Describe the solution you'd like

  • Add a logo to the left of the header of the table.
  • Add a title to the middle of the header of the table.
  • Move the clock to the right of the header of the table
  • Change the favicon.ico, logo192.png and logo512.png in visualization/public to the new logos

Describe alternatives you've considered
None.

Additional context
None.

Design and write admin front-end

Is your feature request related to a problem? Please describe.
We need to design and write the admin front-end

Describe the solution you'd like
Put in the comments the final design picture and implement it in src/admin

Describe alternatives you've considered
None

Additional context
None

Add current date and time to visualization

Is your feature request related to a problem? Please describe.
None.

Describe the solution you'd like
Add current date and time to visualization.

Describe alternatives you've considered
None.

Additional context
None.

Setup de repo para Heroku

Para poder hostear el repo en Heroku, hay que modificar el repo de forma tal de poder servir los tres componentes (backend, visualization y admin) en tres rutas distintas para el mismo URL que Heroku nos provee. Esto lo podemos hacer con un mini web server hecho con express.js. Por otro lado, hay que agregar algunos archivos y scripts específicos para Heroku.

Admin details

Add to this list all of the small details that the admin FE could improve upon:

  • Delete rows button should be below the table
  • Try that the size of the table doesn't change too much when we click the different buttons that show the table for different purposes
  • When the rows of the admin table are in the unseen part of the screen by default (you have to scroll down to see them) the background color of that part of the screen is white.
  • Allow photo deletion on create and update screen
  • Add a frame for the photo in create and update screen
  • Remove the "Announcement deleted" alert if no announcements were checked.
  • Correctly place the delete photo button

Organize files/names

  • Rename App.js to admin.js and visualization.js. Change any references to the word "App" inside the .js to the corresponding front-end
  • Add icon and change html info of admin

Split room-event table

Is your feature request related to a problem? Please describe.
The room-event table currently has data about rooms and events, which is not ideal.

Describe the solution you'd like.
We should split this table into two and store a foreign key in event that points to the room it takes place in. We should provide a view that does the join between both tables.

This also means we have to modify the backend /room-event endpoint to read from that view, so that we don't break the front-end. Also, we have to remove the /room-event/?id endpoint because it is no longer useful.

Describe alternatives you've considered
The alternative would be a mapping table between event and room. However, this is not really necessary in this case.

Additional context
None.

Fix animation in Visualization Event Table

Animation is always activated at the beginning, even when there are few events. It has to be activated only when there are more events than the max count that can be displayed.

Change how announcements' priority works

Is your feature request related to a problem? Please describe.
Change the behavior of the priority. Instead of it meaning LOW, MID or HIGH, we only need two states: NORMAL and EMERGENCY.

Describe the solution you'd like
Admin changes:

  • Modify the dropdown menu to only include NORMAL and EMERGENCY

Backend:

  • Only allow one EMERGENCY given a time period

Visualization:

  • Change the announcement background color given the priority
  • Change the announcement icon color given the priority (maybe something like this for NORMAL and something like this for EMERGENCIES)
  • If there's an emergency, only show that emergency

Describe alternatives you've considered
NONE!

Additional context
NONE!

Add announcements

Is your feature request related to a problem? Please describe.
The design calls for announcements.

Describe the solution you'd like
Add an Announcements component to the React design.

Describe alternatives you've considered
None.

Additional context
None.

Describe alternatives you've considered
The announcements in the carousel could fade out to show the next one or could move to one side.
How much time should each announcement stay on the screen.

Pending:

  • Show announcements only between valid timestamps
  • Change GET frequency to 3 minutes

Refactor JSON to table code

Is your feature request related to a problem? Please describe.
Right now the created table is quite static and not flexible.

Describe the solution you'd like
Refactor de JSON to table code in react components.

Describe alternatives you've considered
None.

Additional context
None

Control how many events are displayed in visualization

Is your feature request related to a problem? Please describe.
The screen size is limited and the event count is not fixed. If there are too many events, there aren't going to be seen with clarity.

Describe the solution you'd like

  1. Determinate how many events can be displayed in visualization at the same time.
  2. Create a function that controls if the event count of database is superior to the maximum of events that can be display at the same time or if we have to consider the hour too.

Describe alternatives you've considered
If there are too many events in the same hour:

  1. We can add an animation to the table to show all the events of that hour.
  2. We can assume that this isn't going to happen.

Add "resources" column to visualization

Is your feature request related to a problem? Please describe.
We need a new column in visualization for the "resources" for all of the "has_*" columns in the "room" table.

Describe the solution you'd like
Instead of doing a react table column for each "has_*" column, we can do only one with several icons:

All of these pictures are royalty free.

Describe alternatives you've considered
We can either hide all of the icons whose corresponding "has_*" flag is false, or show them with a lighter color/shade of grey.

We can either design these icons or use the ones mentioned before.

Additional context
None.

Reorganizar la estructura del proyecto

Según lo sucedido en #15, se recomienda:

  • Crear el directorio src/backend con todo el código/módulo que está en /
  • Modificar las rutas de scripts de este, para que siempre apunten a ../ para los frontends
  • En /, crear un package.json con nombre igual al del repo y que tenga un start que apunte al start de src/backend

Procfile no debería ser necesario modificarlo, ya que llama al npm start del repo, que a su vez llama al npm start del backend, que inicia los front-ends.

Prueba para Flutter

Realizar una prueba básica para Flutter

Al realizar la prueba tener en cuenta estas características, requerimientos y/o restricciones:

  1. Qué tan popular/utilizado es,
  2. Facilidad de uso/complejidad/curva de aprendizaje,
  3. Nivel de features y
  4. Soporte para con back-end (HTTP)

Una vez terminada la prueba, comentar en este issue una conclusión sobre el framework.

Prueba para Angular

Realizar una prueba básica para Angular

Al realizar la prueba tener en cuenta estas características, requerimientos y/o restricciones:

  1. Qué tan popular/utilizado es,
  2. Facilidad de uso/complejidad/curva de aprendizaje,
  3. Nivel de features y
  4. Soporte para con back-end (HTTP)

Una vez terminada la prueba, comentar en este issue una conclusión sobre el framework.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.