/polyhacks2022

PolyHacks 2022

Primary LanguageJavaScriptMIT LicenseMIT

ClassAI - PolyHacks 2022

Video (Click Image for Video)

Check here to view ClassAI Demo Video

DevPost Link

Click here to visit project on DevPost

English

Inspiration

As students, we struggle with online learning (especially online lectures) because they are often overwhelming and often filled with "fluff" (or technical issues). As a result, we want labels and/or timestamps that tell us the most important parts of a lecture. With AssemblyAI's API and the social challenge, we felt that it was a good opportunity to create something useful that we (and possibly other students) need.

What it does

ClassAI is a classroom platform where teachers can post video lectures. These video lectures are uploaded to Google's Firebase Cloud Storage, and then processed by both our backend and AssemblyAI's API to pinpoint and summarize the most important parts of the lecture. Once the video is processed, the teacher will be able to see the recommended timestamps and summaries. The teacher will then verify these timestamps/summaries and confirm the upload. The uploaded lecture, its timestamps, and summary can then be seen by students.

We also implemented a class discussion for students to discuss with each other. We also have an amazing UI/UX as well as dark mode (so we can study at 2AM the night before the exam 😆)

How we built it

We built the core feature (processing the video with AI) using the following workflow:

Upload video to our backend -> Upload the video from our backend to the cloud and get the public URL -> Pass the URL to AssemblyAI's API to process the video -> Get the resulting data from AssemblyAI's API -> Process/clean the data for the core information we need -> Upload the information and metadata to our Firebase database -> Show the information to the teacher for configuration -> Save teacher's configurations -> Video and timestamps/summaries can now be seen by students

The database design was inspired by tree structures (in CS) and modified so that it worked with "mini-hashtables"

The frontend was built using Vuex and Tailwind CSS to support dark mode. We used lifecycle hooks to ensure that each user had their preferred display mode

Challenges we ran into

  • Working with the AssemblyAI API (couldn't upload local files)
  • State management, Tailwind CSS in the frontend
  • Designing a tree-like database
  • Saving files locally, uploading files to the cloud and creating public file URLs

Accomplishments that we're proud of

  • A completed project with nice UI/UX
  • Designing the database and designing the video processing workflow
  • State management and dark mode
  • Working with the cloud

What we learned

  • Vuex, Firebase Cloud Storage, Tailwind CSS, Working with AssemblyAI's API (all first time using)
  • Got better at Vue, Express, Database designing

What's next for ClassAI

  • More features like chat rooms between students and teachers
  • More teacher customization on the video uploads
  • Allow the teacher to have more control/customization of their class (in general)

Français (en utilisant google traduction)

Inspiration

En tant qu'Ă©tudiants, nous avons du mal avec l'apprentissage en ligne (en particulier les cours en ligne) car ils sont souvent Ă©crasants et souvent remplis de « peluches » (ou de problĂšmes techniques). Par consĂ©quent, nous voulons des Ă©tiquettes et/ou des horodatages qui nous indiquent les parties les plus importantes d'une confĂ©rence. Avec l'API d'AssemblyAI et le dĂ©fi social, nous avons pensĂ© que c'Ă©tait une bonne occasion de crĂ©er quelque chose d'utile dont nous (et peut-ĂȘtre d'autres Ă©tudiants) avons besoin.

Ce qu'il fait

ClassAI est une plateforme de classe oĂč les enseignants peuvent publier des cours vidĂ©o. Ces confĂ©rences vidĂ©o sont tĂ©lĂ©chargĂ©es sur le stockage cloud Firebase de Google, puis traitĂ©es Ă  la fois par notre backend et l'API d'AssemblyAI pour identifier et rĂ©sumer les parties les plus importantes de la confĂ©rence. Une fois la vidĂ©o traitĂ©e, l'enseignant pourra voir les horodatages et les rĂ©sumĂ©s recommandĂ©s. L'enseignant vĂ©rifiera ensuite ces horodatages/rĂ©sumĂ©s et confirmera le tĂ©lĂ©chargement. La session tĂ©lĂ©chargĂ©e, ses horodatages et son rĂ©sumĂ© peuvent ensuite ĂȘtre vus par les Ă©tudiants.

Nous avons Ă©galement mis en place une discussion en classe pour que les Ă©tudiants puissent discuter entre eux. Nous avons Ă©galement une UI/UX incroyable ainsi qu'un mode sombre (nous pouvons donc Ă©tudier Ă  2h du matin la veille de l'examen 😆)

Comment nous l'avons construit

Nous avons construit la fonctionnalité principale (traitement de la vidéo avec l'IA) en utilisant le flux de travail suivant:

TĂ©lĂ©chargez la vidĂ©o sur notre backend -> TĂ©lĂ©chargez la vidĂ©o de notre backend vers le cloud et obtenez l'URL publique -> Transmettez l'URL Ă  l'API de AssemblyAI pour traiter la vidĂ©o -> Obtenez les donnĂ©es rĂ©sultantes de l'API de AssemblyAI -> Traiter/nettoyer les donnĂ©es pour les informations de base dont nous avons besoin -> TĂ©lĂ©charger les informations et les mĂ©tadonnĂ©es dans notre base de donnĂ©es Firebase -> Afficher les informations Ă  l'enseignant pour la configuration -> Enregistrer les configurations de l'enseignant -> La vidĂ©o et les horodatages/rĂ©sumĂ©s peuvent dĂ©sormais ĂȘtre vus par les Ă©tudiants

La conception de la base de données a été inspirée des structures arborescentes (dans CS) et modifiée pour fonctionner avec des "mini-hashtables"

L'interface a été construite à l'aide de CSS Vuex et Tailwind pour prendre en charge le mode sombre. Nous avons utilisé des crochets de cycle de vie pour nous assurer que chaque utilisateur avait son mode d'affichage préféré

Défis rencontrés

  • Travailler avec l'API AssemblyAI (impossible de tĂ©lĂ©charger des fichiers locaux)
  • Gestion des Ă©tats, Tailwind CSS dans le frontend
  • Conception d'une base de donnĂ©es arborescente
  • Enregistrement de fichiers localement, tĂ©lĂ©chargement de fichiers sur le cloud et crĂ©ation d'URL de fichiers publics

RĂ©alisations dont nous sommes fiers

  • Un projet terminĂ© avec une belle UI/UX
  • Conception de la base de donnĂ©es et conception du workflow de traitement vidĂ©o
  • Gestion d'Ă©tat et mode sombre
  • Travailler avec le cloud

Ce que nous avons appris

  • Vuex, Firebase Cloud Storage, Tailwind CSS, Utilisation de l'API AssemblyAI (toutes les premiĂšres utilisations)
  • AmĂ©liorĂ© Ă  Vue, Express, Conception de bases de donnĂ©es

Quelle est la prochaine Ă©tape pour ClassAI

  • Plus de fonctionnalitĂ©s comme les salons de discussion entre Ă©tudiants et enseignants
  • Plus de personnalisation des enseignants sur les tĂ©lĂ©chargements de vidĂ©os
  • Permettre Ă  l'enseignant d'avoir plus de contrĂŽle/personnalisation de sa classe (en gĂ©nĂ©ral)