8000 GitHub - zane-programs/lecture-hero: Automatically generate lecture notes for your course videos
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

zane-programs/lecture-hero

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LectureHero

About

Generate notes for your course videos automatically with LectureHero!

Comprised of a proof-of-concept Chrom{e, ium} extension (chrome-extension), web application (frontend: web, backend: app), and infrasturcture encoded as AWS CDK (cdk).

(CDK IaC written as final project for CS 40: Cloud Infrastructure and Scalable Application Deployment, taught by Aditya Saligrama and Cody Ho)

Chrome Extension (chrome-extension)

The Chrome extension injects a button into the navigation bar of a Panopto course video that allows a user to easily generate or view a summary for a given lecture video. When clicked, the button grabs a transcript of the lecture from Panopto and provides it to the API to generate a summary.

For purposes of the proof of concept, the browser extension stores username and password and authenticates each request to the LectureHero API with a Basic auth-like authorization scheme (I called it LazyAuth, haha!).

Web Application

Frontend (web)

I built a simple but clean frontend with TypeScript and React that renders notes from their original Markdown format. Users are able to share and download notes as Markdown or HTML. Additionally, the user can swap between light and dark modes for readibility.

Backend (app)

The backend is written in TypeScript, using Express to handle user requests and Prisma as an ORM used to safely and efficiently query Postgres (see Infrastructure for more on DB).

The code is organized in a roughly MVC pattern, such that application logic in src/controllers exists separately from routing in src/routes.

For easy containerization, the app directory contains a Dockerfile for Node.js 18 on Alpine Linux that migrates the database schema from Prisma and starts the application server.

Infrastructure (cdk)

  • Data: The application stores user information (credentials, notes, etc.) in a Aurora Serverless PostgreSQL for improved elasticity and scalability along with the robustness of Postgres. Relevant application secrets are stored by and accessed via Secrets Manager.
  • Compute: Application logic runs on Elastic Container Service instances, scaled automatically by Fargate to handle elastic user demand. Additionally, an Application Load Balancer routes user requests to different containers to optimize for efficiency.
  • Network: This deployment contains a VPC available across two availability zones (us-west-2a and us-west-2b), such that the Aurora DB instances are in the private subnets, the ECS clusters are in the private subnets with egress, and the ALBs exist in the public subnets for user access. TLS certificates for backend and frontend are generated with Certificate Manager, and Route 53 is used to manage DNS.

Demo

I've posted a demo/tutorial video for my initial deployment on YouTube!

About

Automatically generate lecture notes for your course videos

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0