alejoss / academia_blockchain Goto Github PK
View Code? Open in Web Editor NEWProyecto de código abierto con el objetivo de descentralizar los certificados académicos.
License: GNU General Public License v3.0
Proyecto de código abierto con el objetivo de descentralizar los certificados académicos.
License: GNU General Public License v3.0
Solo los usuarios con emails confirmados pueden crear un evento y debe activarse el bool is_teacher.
Los usuarios deben poder dejar comentarios y poder calificar eventos, la calificación se debe dar por 1-5 estrellas o algo similar.
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".
Cuando un usuario crea un curso sin imagen, se podría mostrar una imagen estándar atractiva que muestre el nombre Academia Blockchain. Lo mismo con la imagen de perfil default de un usuario recién creado.
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.
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.
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.
Los nombres de usuario largos se salen del cuadro. screenshot
Utilizar la librearia bleach para proteger los inputs de posibles códigos maliciosos. Todos los inputs deben pasar por bleach.clean()
.
TiniMCE - Pagar
Validar fechas de creacion y demás campos.
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.
Instalar sistema de tags. django-taggit probablemente. Se requiere conocimiento de python, cambia la base de datos y requiere varios cambios en el frontend.
Agregar documentación de frontend tanto en español como en inglés.
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.
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.
Dar click en el precio de un curso ( <div class="card-img-overlay">
) en event_detail.html debe abrir un modal que utilice el API de coinmarketcap.com para calcular el precio del evento en terminos de las criptomonedas preferidas del creador del evento. Usar los estilos del template.
Cambiar de logo a la versión horizontal. Cambiar el Parallax y cambiar la descripción.
Recrear la instalación en los diferentes SO.
Verificar la ejecución correcta
Solo los usuarios con emails confirmados pueden crear un evento y debe activarse el bool is_teacher.
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.
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".
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,
}
El Botón de Me Interesa - Guardar deberías ser AJAX.
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.
Add Visual Studio configuration files to gitignore.
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.
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.
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
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.
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.
Crear página 404 para certificate_preview cuando la transaction id es inválida , null o undefined.
Sólo la parte del frontend.
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 en la página de certificados en el perfil del profesor. Así el profesor puede mostrar los certificados de sus alumnos.
En la página del evento se muestran solicitudes de cursos sin que haya solicitudes no aceptadas. Revisar curso "destruye la procastinacion" de usuario Luke.
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.
Debe utilizar la Ropsten Network mientras estemos en Beta. codigo JS de web3js en send_cert_blockchain.html
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:
El código de las dos funciones se repite y podría ser más conciso. Utilizar una función común en utils.py o directamente un formulario de django.
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:
Expected result: the app does not break. Instead, it shows an "invalid email address" message or something.
La librería dom-to-image
genera la imagen del certificado con errores de estilos: a veces los textos se superponen y quedan tachados. También cambia otros estilos.
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 .
Create docs directory with some basic files: SETUP_EN.md SETUP_ES.md, COLLABORATION_EN.md and COLLABORATION_ES.md.
Crear un json para mandar python manage.py loaddata
cada vez que se suba el ecosistema de docker.
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.
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
ESPAÑOL
SETUP_EN.md
y SETUP_ES.md
. Estos archivos explican cómo configurar los ambientes.ENGLISH
SETUP_EN.md
and SETUP_ES.md
files. These files explain how to setup the environments.Update certificate_preview.html so it is in the template context. Follow the code conventions. That is
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.