Giter Club home page Giter Club logo

moodlenet's Introduction

Moodlenet

This is the primary repository for the MoodleNet project. It is an open source project with the aim of making quality Open Education Resources easy to find.

image

You can find our main instance here at moodle.net, but you can also run your own instance and help with development. In the future we will be supporting a federated search across all instances.

Current Status

MoodleNet 4.0 now features AI metadata generation for resources, gamification to vastly improve how quality is identified and surfaced to you as a user.

Documentation

Our main documentation with everything you need to know is here: MoodleNet Docs.

Quick install tip

The easiest way to install and update your own instance is via NPM:

npm create @moodlenet@latest path/to/installation/folder

moodlenet's People

Contributors

aleclofabbro avatar brumasribera avatar ettorebevilacqua avatar lucaboesch avatar moodler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moodlenet's Issues

Possible security breach

Good Morning,
Yesterday, while we installed moodlenet and tested it we noticed a possible security breach.
Is it possible to have email to contact the team and describe the issue encountered ?

Best regards.

Send files to OpenAi

In order to allow bigger files and more accurate autofilled details from files, it could be very useful to send uploaded files directly to OpenAI, instead of first converting them to text.

Privacy choices

Branch feature/privacy-choices

  • Opt-out from leaderboards
    • Frontend
    • Backend
  • Opt-out from showing my interests on my profile page
    • Frontend
    • Backend
  • Opt-out from showing who I follow on my profile page
    • Frontend
    • Backend

Level up alert

Branch feature/alert-level-up

Let users know when they leved up.

Show an alert icon on the header that brings them to the profile page.

  • Add a congratulation modal displaying the avatar and level with a simple animation
  • Create boolean that is true until the user visited the profile page after a level up

inhibit /admin path in webapp

admin apis are protected server side
yet, /admin path is accessible - although inusabe - in webapp
guard /admin path access in webapp

Central functions to manage points

Central functions to manage points

  • Add points to user total
  • Retrieve total points for a user
  • Show leaderboard of points overall
  • Show leaderboard of points per subject

Use AI to fill up old resources

  • Add button to “Use AI to check the metadata”
    • If used, use AI tools as above to update all the fields, which the user can choose to save

Branch: feature/new-resource-upload-autofill-flow
Commit: 3cb363e77e5646b84606316ec7ea84262cbe011d

Show snackbars anywhere

Allow snackbars to be shown even if the component that triggered it is gone. So that it can stay on the screen at any time and context.

Custom landing page for each user

When user has selected his interest display a custom landing page:

  • Choice of sections

    • New resources for me (based on user interests)
    • Featured resources (based on general likes and inclusion in collections)
    • Featured collections (based on likes and follows)
    • Most active users
    • Highest scoring users
  • Order of sections

Sign up flow broken

The sign up flow is slightly broken after last releases.

After clicking sign up the user sees a snackbar stating Signup success! Login to start.

But when he tries to login he gets an error Incorrect username or password.

That happens because a user can only log in after email verification.

So we need to bring back the old flow.

  • Remove the Signup success! Login to start snackbar
  • After clicking the sign up button, show a Verify your email message.

Approval section - Admin settings

Add a new section on the admin page that allows to:

  • See new approval requests
  • Click user row and navigate to their profile page
  • Approve or remove approval in one click
  • Search through the list using email of display name

Admin rights section can serve as inspiration and partially be reused

Branch enhancement/add-approval

Recommender system

  • Default resource recommendations based on subjects/likes only
  • Calculations are done in background on cron job and stored
  • Recommendations are displayed with controls to help tune the algorithm

Containerization and scalability

Finalize details to allow system containerization and scalability
ensure system pkg configs to (en|dis)able services

services

  • scalable
    • http server (scales)
  • singletons
    • webapp compile
    • points count schedule
    • ai autofill queue

Add 'See more *' buttons on Landing page

On the previous version, those buttons placed on each list allowed to explore on more relevant content available.

They will also be useful for the new user landing page, with the interests based content.

Image

Remove learning outcome autofilled verb

We don't want the verb of the learning outcome doubled as currently:

Image

The two options I see are:

  • Remove it from the backend and keep only the verb on the specific prop
  • Remove it on the frontend as a final step

Maybe we can just remove it from the backend, so it comes clean. In that case, we just need to remove the verb and the space that comes after.

Let me know what you think Ale 😊

Notify user when AI autofill fails

We need to change the autofillState of the resource state when the AI autofill process goes wrong, and assign it to an ai-error.

So that we can display a snackbar informing the user.

This should only show the first time the page is visited, or appear directly is the page remained open.

Image

Use AI to fill up new resources

  • Change flow to accept resource ONLY as first step, process resource with AI tools:

    • Extract default description from resource
    • Extract default subject from resource
    • Extract default teaching level from resource
    • Extract default language from resource
    • Extract default thumbnail from resource 
  • Show forms with data prefilled for editing if required

  • Last step, offer to clean up human

  • Show an alert bell (AlertButton) on the header when autofilled resources are ready to review

  • Show indicator on autofilled resources (VisualResourceAlert) that haven't been reviewed (show them first in the list)

Branch: feature/new-resource-upload-autofill-flow

Improve multiselect dropdown

Add an option to allow multiselect dropdowns to close after a selection is made, and not to remain opened.

This is already working in Storybook, as can be seen below.

So @aleclofabbro, we need to find out what might be happening on the other side.

Recording.2024-01-29.185835.mp4

projects-servicemix

revisión de cambios realizados

  • Se corrigió y mejoró el texto, además también de traducir al español.
  • Se revisó el texto en inglés y sugerimos algunas posibles mejoras.
  • Se realizó la traducción del texto corregido al español usando Microsoft Traductor.
  • Proporcionamos algunos recursos útiles para que puedas seguir aprendiendo y practicando.

Aquí está texto corregido en inglés:

MIT License

Copyright (c) 2017 Rocco Musolino

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Mejoras realizadas

Las mejoras que he hecho son las siguientes:

  • He eliminado la palabra to deal después de Software, ya que no es necesaria y puede causar confusión.
  • He cambiado shall por must en la frase this permission notice shall be included, ya que shall es una forma arcaica y poco usada de expresar obligación, mientras que must es más común y claro.

Aquí está tu texto traducido al español:

Licencia MIT

Derechos de autor (c) 2017 Rocco Musolino

Se concede el permiso, de forma gratuita, a cualquier persona que obtenga una copia
de este software y de los archivos de documentación asociados (el "Software"), para usar,
copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del
Software, y para permitir a las personas a las que se les proporcione el Software a hacer lo mismo,
sujeto a las siguientes condiciones:

El aviso de derechos de autor anterior y este aviso de permiso deben incluirse en todas las
copias o partes sustanciales del Software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O
IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD,
IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS
AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑO U OTRA
RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE,
FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL
SOFTWARE.

Recursos de aprendizaje

  • LanguageTool: Un corrector ortográfico, gramatical y de estilo en línea que funciona con varios idiomas, incluyendo el inglés y el español. Te ofrece sugerencias para mejorar tu texto y evitar errores comunes.
  • Reverso: Un corrector ortográfico y gramatical en línea que también te permite traducir textos entre diferentes idiomas. Además, tiene un diccionario, un conjugador de verbos y una herramienta para parafrasear textos y mejorar tu estilo.
  • Trinka: Un corrector gramatical gratuito y un asistente de redacción impulsado por inteligencia artificial, diseñado para la redacción académica y técnica. Te ayuda a mejorar tu vocabulario, estilo, sintaxis y más.
  • Parafrasist: Un corrector de ortografía en línea que también te ofrece la opción de parafrasear tus textos y generar sinónimos. Te ayuda a evitar el plagio y a expresarte mejor.

Referencias

Artículos de lectura relacionada

20231230-011212-350.png

index.js

const debug = require('debug')('termux')
const hasTermux = require('has-termux-api')
const autoloader = require('./lib/autoloader')

var api = Object.assign({
  hasTermux: hasTermux.sync()
}, autoloader())

debug('API loaded:', api)

module.exports = api

Add following page

Create the following page and add a link on the profile page, on a new followers' indicator in the overall bar.

Notebook-t

mx.ssf.sicom.smartg4s

--> mx.ssf.sicom.smartg4s <--

shYCq.png

Carpeta “Assets”

Los "assets" en Android son archivos que se colocan en la carpeta "assets" de tu proyecto Android. Esta carpeta se crea en la raíz de tu proyecto cuando lo creas. Puedes usarla para incluir archivos como fuentes personalizadas, datos y archivos de texto, archivos JSON, archivos de audio y video, etc.

OIP (2).jpeg

Para acceder a estos archivos en tu código, puedes usar la clase AssetManager. Aquí tienes un ejemplo de cómo se puede leer un archivo de texto de la carpeta "assets":

AssetManager assetManager = getAssets();
InputStream inputStream = assetManager.open("nombre_del_archivo.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String linea = bufferedReader.readLine();

Cabe mencionar que los archivos de "assets" son de solo lectura y no puedes escribir ni modificar estos archivos en tiempo de ejecución.

EXPLICACIÓN DEL CÓDIGO
Aquí te explico cada línea del código:

  • AssetManager assetManager = getAssets();

    • Esta línea crea un objeto AssetManager llamando al método getAssets() .

    • El AssetManager proporciona acceso a los archivos raw (crudos) y de assets (recursos) de la aplicación.

  • InputStream inputStream = assetManager.open("nombre_del_archivo.txt");

    • Aquí, el método open() del AssetManager se usa para abrir el archivo específico que se encuentra en la carpeta de assets

    • Este método devuelve un InputStream que se puede usar para leer el contenido del archivo.

  • BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

    • En esta línea, se crea un BufferedReader a partir del InputStream .

    • El BufferedReader proporciona una forma eficiente de leer texto de un flujo de caracteres.

    • El InputStreamReader es un puente de bytes a caracteres: lee bytes y los decodifica en caracteres utilizando un juego de caracteres especificado.

  • String linea = bufferedReader.readLine();

    • Finalmente, el método readLine() del BufferedReader se usa para leer una línea de texto.

    • Este método devuelve una cadena que contiene el contenido de la línea, o null si se ha alcanzado el final del flujo.
      blank.gif
      Este código permite leer el contenido de un archivo de texto que se encuentra en la carpeta de assets de tu aplicación Android. info.png

Add search filters

On the search page, add new filters when displaying only resources:

  • Language
  • Level
  • Type
  • License

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.