Giter Site home page Giter Site logo

alejoss / academia_blockchain Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 10.0 26.14 MB

Proyecto de código abierto con el objetivo de descentralizar los certificados académicos.

License: GNU General Public License v3.0

Python 1.36% CSS 47.39% JavaScript 38.80% PHP 0.89% HTML 5.32% Dockerfile 0.01% TypeScript 6.23% Shell 0.01%

academia_blockchain's People

Contributors

alejoss avatar brodguez avatar davelsanto avatar diznicolasamor avatar montvlein avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

academia_blockchain's Issues

Página de explicación de costos Blockchain

Debe haber una página que expliqué por qué enviar el certificado a la blockchain tiene su costo. Viene del "leer mas" en el modal al dar click en "Enviar a la Blockchain".

BACK-0002: fix docker-compose env variables

Las variables de ambiente deben estar en un archivo .env oculto (no se publican en el repositorio) y luego sus valores se pasan a docker-compose.

Environment variables should be in a hidden .env file (you do not publish them in the repo) and then pass its values to docker-compose.

Mostrar certificado

Crear un pdf mostrando el certificado que adquiere el usuario. El texto en el PDF debe poder editarse por el creador del evento. El creador del evento debe poder ver el pdf. Debe quedar bien, similar a un certificado educativo universitario. El usuario que recibe el certificado debe poder verlo dando click en "Ver Cerficiado" en la página de bookmarks en su perfil o en la lista de certificados en su perfil. Se debe crear el certificado dinámicamente con python y mostrarlo al usuario sin guardarlo en la base de datos.

Armonizar tipos de letra

Por algún problema de CSS, los tipos de letra no coinciden y no son armónicos entre distintas páginas del perfil de usuario. Habría que asegurarse que respeten un orden. La páginas de dato de perfil y la página de visitar perfil de un tercero deben ser coherentes en diseño.

BACK-0006 - reescribir certificate_preview

La función certificate_preview dentro de courses/views.py tiene comentarios innecesarios la variable context está de más.


The certificate_preview function in courses/views.py has unnecessary comments and the "context" variable is not needed.

Sistema de Tags

Instalar sistema de tags. django-taggit probablemente. Se requiere conocimiento de python, cambia la base de datos y requiere varios cambios en el frontend.

Gamificacion Perfil - Certificados

El rol de los certificados es central en la plataforma, por ende deben tener más atención del usuario y deben mostrarse mejor en el perfil. El perfil directamente debe caer en los certificados, si no tiene, debe mostrar una cara triste.

Porcentaje de perfil completado.

Se debe medir qué tan completo está el perfil. Si falta algo, se puede pedir al usuario que complete su perfil. Es importante completar el perfil antes de crear un evento.

Entornos de instalación

Recrear la instalación en los diferentes SO.

  • Linux
  • MacOs
  • Windows

Verificar la ejecución correcta

Confirmar cuenta

Enviar email para confirmar cuenta. Se puede utilizar Sendgrid de Heroku para instalar el email port facil. Una vez confirmada la cuenta, debe guardarse ese status en la base de datos. Un usuario sin cuenta confirmada no debe poder crear eventos.

Select timezone del usuario

El formulario del timezone del usuario no funciona bien, no selecciona automáticamente el timezone ya guardado por el usuario. Esta planteado para seleccionar con jquery ids pero jquery no reconoce ids con "/" en el nombre, como "Europe/Spain".

FRONT-0006: update certificate data shape in client

The certificate data shape in frontend and in backend are different. It should be consistent.
Update the frontend data with the following shape:

{
        "id": string,
        "username": string
        "first_name": string
        "last_name": string
        "cert_date": string,
        "event_title": string,
        "event_description": string,
        "event_owner_username": string,
        "event_owner_first_name": string,
        "event_owner_last_name": string,
}

Loggear actividad

Toda la actividad en el backend debe crear logs, se puede utilizar la librería estándar de python logging. Se debe establecer un estándar de cómo loggear los datos.

Sensibilidad a Timezones

Mostrar tiempos en la hora del creador del evento y en la hora del visitante. Requiere planeación cuidadosa de cómo se va a guardar las time zones y cómo se va a obtener esa información.

Validar form registro en el frontend

Utilizar javascript para validar los inputs del form de registro de usuarios. Se necesita también un backend que notifique al frontend si el nombre de usuario ya está en uso.

Error al instalar dependencias

Al implementar las dependencias genera el siguiente error al instalar la siguiente dependencia psycopg2==2.8.5

`
Collecting psycopg2==2.8.5
Downloading psycopg2-2.8.5.tar.gz (380 kB)
|████████████████████████████████| 380 kB 4.8 MB/s
ERROR: Command errored out with exit status 1:
command: /Users/davidsantos/Dev/Env/academiabc/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/tmp/pip-install-i6loh0ad/psycopg2/setup.py'"'"'; file='"'"'/private/tmp/pip-install-i6loh0ad/psycopg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /private/tmp/pip-pip-egg-info-dlty_xc5
cwd: /private/tmp/pip-install-i6loh0ad/psycopg2/
Complete output (23 lines):
running egg_info
creating /private/tmp/pip-pip-egg-info-dlty_xc5/psycopg2.egg-info
writing /private/tmp/pip-pip-egg-info-dlty_xc5/psycopg2.egg-info/PKG-INFO
writing dependency_links to /private/tmp/pip-pip-egg-info-dlty_xc5/psycopg2.egg-info/dependency_links.txt
writing top-level names to /private/tmp/pip-pip-egg-info-dlty_xc5/psycopg2.egg-info/top_level.txt
writing manifest file '/private/tmp/pip-pip-egg-info-dlty_xc5/psycopg2.egg-info/SOURCES.txt'

Error: pg_config executable not found.

pg_config is required to build psycopg2 from source.  Please add the directory
containing pg_config to the $PATH or specify the full executable path with the
option:

    python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.

If you prefer to avoid building psycopg2 from source, please install the PyPI
'psycopg2-binary' package instead.

For further information please check the 'doc/src/install.rst' file (also at
<https://www.psycopg.org/docs/install.html>).

----------------------------------------

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
`

El error se genero usando el siguiente ambiente:

Package    Version
---------- ---------
appdirs    1.4.4
certifi    2020.6.20
distlib    0.3.1
filelock   3.0.12
pip        20.2.3
setuptools 49.2.1
six        1.15.0
virtualenv 20.0.33
wheel      0.35.1

Funcionalidad de búsqueda

No se incluye un cuadro de búsqueda de eventos en un inicio porque no hay suficientes eventos para justificarlo. Sin embargo se debe desarrollar una cuando ya existan objetos en la base de datos. Se puede utilizar los beneficios de búsqueda de Django ORM + Postgres.

FRONT-0007: npm start does not update bundle

Problem: Running npm start does not update the bundle file. It is related to the webpack config.

Expected behavior: Running npm start should watch the changes when developing and update the bundle file.

Solution: as quick fix, I will use webpack --watch in the start script.

Eliminar Eventos

El creador del evento debe poder marcarlo como "eliminado". Requiere cambio en el modelo para sumar este campo. La página del evento debe mostrar un tag de "Evento Eliminado!". Y la decisión debe ser aceptada en un modal de alerta. Usar ajax en el frontend, en el backend revisar si el usuario es creador del evento. Redirigir a profile_events.

Mostrar Certificados Otorgados

Mostrar Certificados Otorgados en la página de certificados en el perfil del profesor. Así el profesor puede mostrar los certificados de sus alumnos.

DOCKER-0001: mejorar el build y update de docker-compose

Problema 1: Al hacer docker-compose build , el servicio de backend no levanta los últimos cambios de client . Es como si se buildearan en paralelo.

Resultado esperado: el servicio client debería buildearse primero y una vez generado el archivo bundle.js , sólo entonces comenzar a buildear el backend.

Nota: al parecer el param de depends_on no influye en esto, sino que está relacionado con el orden en que los servicios son levantados.


Problema 2: al realizar algún cambio en el frontend, el servicio client se actualiza correctamente, ya que se vuelve a generar el archivo bundle.js , pero en el browser no se actualiza. Es como si el backend siguiera escuchando el bundle viejo.

Resultado esperado: debería haber hot reload de los cambios en el frontend en el proyecto.

FRONT-0011: actualizar el certificado con transaction hash

La API de certificate_detail tendrá un campo para el hash de la transacción. Si el certificado no se encuentra aún en la blockchain, ese campo vendrá vacío. El frontend debe manejar estos dos casos:

  • Si el certificado no tiene transaction hash, debe mostrarse el mensaje "Este certificado aún no se encuentra en la blockchain" o similar.
  • SI el certificado sí tiene un transaction hash, debe mostrarlo.

BACK-0001: creating user with fake email address

Problem: when creating a new user with fake email address, the app breaks.

Error message:

AttributeError at /profiles/register/
'Settings' object has no attribute 'MAILGUN_DOMAIN'

Reproduction steps:

  1. go to sign up page.
  2. create a new user with fake email address, such as [email protected]

Expected result: the app does not break. Instead, it shows an "invalid email address" message or something.

Funcionalidad de resetear contraseña

La funcionalidad de resetear contraseña debe instalarse utilizando las funciones estándar sugeridas por django. La documentación es clara al respecto. Se necesita instalar la funcionalidad de puerto de email para eso. Revisar issue #15 .

BACK-0003 PopularDB

Crear un json para mandar python manage.py loaddata cada vez que se suba el ecosistema de docker.

Remover csrf_exempt

Las views que utilizan el decorator csrf_exempt están de alguna manera abiertas a un ataque de cross site f. Son las que utilizan ajax en su mayoría. Se puede enviar correctamente el csrf_token en una cookie o en el json data. Hay bastante documentación en stackoverflow al respecto. Se debe remover el decorator csrf_exempt.

FRONT-0008 - traer certificate_data de la API

Actualizar fetchCertificateData y traer los datos de la API /courses/certificate_detail/<int:certificate_id>
Manejar errores y distintos responses status en su implementación, es decir, la línea 16 de src/certificate_preview/components/App/index.js

DOCS-0003: actualizar archivos SETUP_EN.md y SETUP_ES.md

ESPAÑOL

  • Actualizar archivos SETUP_EN.md y SETUP_ES.md. Estos archivos explican cómo configurar los ambientes.
  • Unificar información duplicada y ubicarla en carpeta "docs".
  • Borrar información de configuración vieja.

ENGLISH

  • Update SETUP_EN.md and SETUP_ES.md files. These files explain how to setup the environments.
  • Unificate duplicated information and place it in "docs" directory.
  • Remove old config information.

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.