Skip to content

JacobChan182/HiReadyContinued

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

206 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HiReady.tech - Identity-Aware Learning Analytics Platform

Built for UofTHacks 13

An intelligent training and analytics platform that uses AI-powered video intelligence to detect learning friction and provide actionable insights for trainers and HR departments. Built with privacy-first design principles, HiReady.tech transforms workplace training and educational content delivery through advanced analytics and behavioral clustering.

🎯 Problem Statement

Traditional training platforms lack visibility into how employees actually consume and understand training materials. Instructors and HR teams struggle to identify:

  • Which concepts cause confusion
  • When learners struggle with specific content
  • Patterns in learning behavior across groups
  • Optimal intervention points for struggling learners

HiReady.tech solves this by providing real-time analytics powered by AI video intelligence while maintaining user privacy through pseudonymization.

✨ Key Features

For Employees/Trainees

  • Video Streaming: Seamless video playback with seeking and concept navigation
  • Concept Search: Jump to specific concepts within training videos
  • Progress Tracking: Monitor your learning journey and review completion
  • Personalized Insights: Get catch-up summaries and concept recommendations

For Trainers/HR

  • Aggregated Analytics: View class-wide analytics without exposing individual identities
  • Concept Difficulty Insights: Identify which concepts cause the most confusion
  • Behavioral Clustering: Discover learning patterns across employee groups
  • Student Management: Easily assign employees to training programs, manage course settings
  • Video Upload: Upload training videos with automatic AI indexing and segmentation

Privacy & Security

  • Pseudonymization: All user identities are replaced with pseudonyms
  • Aggregated Data Only: Trainers see insights, never individual identities
  • Secure Storage: Videos stored on Cloudflare R2 with presigned URLs

πŸ—οΈ Architecture

Frontend

  • React with TypeScript
  • Vite for fast development and builds
  • Shadcn UI components with Tailwind CSS
  • Framer Motion for animations
  • Recharts for data visualization

Backend

  • Node.js/Express (TypeScript) - Main API server
  • Flask (Python) - Video indexing and AI services
  • MongoDB Atlas - Database with Mongoose ODM
  • Cloudflare R2 - Video storage with streaming support

AI & External Services

  • Twelve Labs API - Video indexing and concept extraction
  • Backboard API - AI-powered chat assistant for training support
  • Cloudflare R2 - Object storage for video files

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and npm
  • Python 3.12+ with pip
  • MongoDB Atlas account (free tier works)
  • Cloudflare R2 account (for video storage)
  • Twelve Labs API key
  • Backboard API key (optional, for chat features)

Installation

  1. Clone the repository

    git clone https://github.com/JacobChan182/NoMoreTears.git
    cd NoMoreTears
  2. Install Node.js dependencies

    npm install
  3. Install Python dependencies

    cd backend
    python3 -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    pip install -r requirements.txt
    cd ..
  4. Configure environment variables

    Create server/.env:

    MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/no-more-tears?retryWrites=true&w=majority
    PORT=3001
    R2_ACCOUNT_ID=your_r2_account_id
    R2_ACCESS_KEY_ID=your_r2_access_key
    R2_SECRET_ACCESS_KEY=your_r2_secret_key
    R2_BUCKET_NAME=your_bucket_name
    R2_PUBLIC_URL=https://pub-xxxxx.r2.dev

    Create backend/.env:

    MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/no-more-tears?retryWrites=true&w=majority
    TWELVELABS_API_KEY=your_twelve_labs_api_key
    BACKBOARD_API_KEY=your_backboard_api_key
    FLASK_PORT=5001

    Create frontend/.env (optional):

    VITE_API_URL=http://localhost:3001/api
  5. Start the development servers

    # Start all services (frontend, Express server, Flask)
    npm run dev
    
    # Or start individually:
    npm run dev:frontend   # Frontend on http://localhost:5173
    npm run dev:server     # Express server on http://localhost:3001
    npm run dev:flask      # Flask server on http://localhost:5001
  6. Open your browser Navigate to http://localhost:5173

πŸ“ Project Structure

NoMoreTears/
β”œβ”€β”€ frontend/              # React frontend application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/    # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ pages/         # Main page components
β”‚   β”‚   β”œβ”€β”€ contexts/      # React contexts (Auth, Analytics)
β”‚   β”‚   β”œβ”€β”€ lib/           # API client and utilities
β”‚   β”‚   └── types/         # TypeScript type definitions
β”‚   └── vite.config.ts
β”œβ”€β”€ server/                # Node.js/Express backend
β”‚   β”œβ”€β”€ models/            # Mongoose models
β”‚   β”œβ”€β”€ routes/            # API route handlers
β”‚   └── utils/             # Utility functions (R2, pseudonym)
β”œβ”€β”€ backend/               # Flask Python backend
β”‚   β”œβ”€β”€ services/          # Video indexing services
β”‚   └── app.py             # Flask application
└── package.json

πŸ”‘ Key Technologies

Frontend Stack

  • React 18 - UI framework
  • TypeScript - Type safety
  • Vite - Build tool and dev server
  • Tailwind CSS - Utility-first styling
  • Shadcn UI - Component library
  • Framer Motion - Animation library
  • Recharts - Data visualization

Backend Stack

  • Express.js - REST API server
  • Mongoose - MongoDB ODM
  • Flask - Python microframework for AI services
  • AWS SDK (S3-compatible) - Cloudflare R2 integration
  • PyMongo - Python MongoDB driver

AI & Cloud Services

  • Twelve Labs API - Video indexing and concept extraction
  • Backboard SDK - AI chat assistant
  • Cloudflare R2 - Object storage and CDN
  • MongoDB Atlas - Managed database

🎨 Features in Detail

Video Streaming

  • Videos stored on Cloudflare R2 with presigned URLs
  • HTTP range request support for seamless seeking
  • Automatic video duration detection
  • Progressive loading for optimal performance

Analytics Dashboard

  • Concept Insights: Track replay counts, drop-off points, and struggle scores
  • Behavioral Clusters: Group learners by behavior patterns (high-replay, fast-watcher, note-taker, etc.)
  • Timeline Visualization: View retention and engagement over time
  • Cluster-Concept Matrix: Identify which groups struggle with which concepts

Course Management

  • Create training programs with course codes and names
  • Assign employees by email during creation or via settings
  • Search and manage enrolled students
  • Update course information (name, code)
  • Track lecture counts and course statistics

Privacy Features

  • All users assigned pseudonymous IDs
  • Individual identities never exposed to trainers
  • Data aggregated at concept and cluster levels
  • Secure authentication with bcrypt password hashing

πŸ“š API Endpoints

Authentication

  • POST /api/auth/signup - Register new user
  • POST /api/auth/signin - User login

Courses/Training Programs

  • GET /api/courses/instructor/:instructorId - Get all courses for instructor
  • POST /api/courses - Create new course
  • PUT /api/courses/:courseId - Update course settings
  • GET /api/courses/:courseId/students - Get enrolled students
  • POST /api/courses/:courseId/students - Add students to course
  • DELETE /api/courses/:courseId/students/:userId - Remove student from course

Video Upload & Streaming

  • POST /api/upload/direct - Direct video upload to R2
  • POST /api/upload/complete - Complete upload and trigger indexing
  • GET /api/upload/stream/:videoKey - Get presigned streaming URL

Analytics

  • POST /api/analytics/rewind - Track video rewind events
  • Analytics data aggregated and served through dashboard

AI Services (Flask)

  • POST /api/index-video - Index video with Twelve Labs
  • POST /api/segment-video - Extract video segments
  • POST /api/backboard/chat - AI-powered chat assistant

πŸ” Environment Variables

See MONGODB_SETUP.md for detailed MongoDB setup instructions.

Required environment variables:

  • MONGODB_URI - MongoDB Atlas connection string
  • TWELVELABS_API_KEY - Twelve Labs API key for video indexing
  • R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME - Cloudflare R2 credentials
  • BACKBOARD_API_KEY - Backboard API key (optional, for chat features)

🀝 Contributing

This project was built for UofTHacks 13. Contributions, issues, and feature requests are welcome!

πŸ“„ License

This project is part of the UofTHacks 13 hackathon submission.

πŸ™ Acknowledgments

  • Twelve Labs for video intelligence API
  • Backboard for AI chat assistant capabilities
  • Cloudflare for R2 object storage
  • UofTHacks for the hackathon platform

πŸ“ž Contact

For questions or support, please open an issue on GitHub.


Built with ❀️ for UofTHacks 13

About

AI-powered training analytics: detect learning friction in videos and give trainers actionable insights while keeping learner identities private. React, Node, Flask, Twelve Labs, Backboard.io, R2.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors