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.
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.
- 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
- 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
- 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
- React with TypeScript
- Vite for fast development and builds
- Shadcn UI components with Tailwind CSS
- Framer Motion for animations
- Recharts for data visualization
- 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
- Twelve Labs API - Video indexing and concept extraction
- Backboard API - AI-powered chat assistant for training support
- Cloudflare R2 - Object storage for video files
- 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)
-
Clone the repository
git clone https://github.com/JacobChan182/NoMoreTears.git cd NoMoreTears -
Install Node.js dependencies
npm install
-
Install Python dependencies
cd backend python3 -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r requirements.txt cd ..
-
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
-
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
-
Open your browser Navigate to
http://localhost:5173
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
- 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
- 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
- Twelve Labs API - Video indexing and concept extraction
- Backboard SDK - AI chat assistant
- Cloudflare R2 - Object storage and CDN
- MongoDB Atlas - Managed database
- Videos stored on Cloudflare R2 with presigned URLs
- HTTP range request support for seamless seeking
- Automatic video duration detection
- Progressive loading for optimal performance
- 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
- 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
- All users assigned pseudonymous IDs
- Individual identities never exposed to trainers
- Data aggregated at concept and cluster levels
- Secure authentication with bcrypt password hashing
POST /api/auth/signup- Register new userPOST /api/auth/signin- User login
GET /api/courses/instructor/:instructorId- Get all courses for instructorPOST /api/courses- Create new coursePUT /api/courses/:courseId- Update course settingsGET /api/courses/:courseId/students- Get enrolled studentsPOST /api/courses/:courseId/students- Add students to courseDELETE /api/courses/:courseId/students/:userId- Remove student from course
POST /api/upload/direct- Direct video upload to R2POST /api/upload/complete- Complete upload and trigger indexingGET /api/upload/stream/:videoKey- Get presigned streaming URL
POST /api/analytics/rewind- Track video rewind events- Analytics data aggregated and served through dashboard
POST /api/index-video- Index video with Twelve LabsPOST /api/segment-video- Extract video segmentsPOST /api/backboard/chat- AI-powered chat assistant
See MONGODB_SETUP.md for detailed MongoDB setup instructions.
Required environment variables:
MONGODB_URI- MongoDB Atlas connection stringTWELVELABS_API_KEY- Twelve Labs API key for video indexingR2_ACCOUNT_ID,R2_ACCESS_KEY_ID,R2_SECRET_ACCESS_KEY,R2_BUCKET_NAME- Cloudflare R2 credentialsBACKBOARD_API_KEY- Backboard API key (optional, for chat features)
This project was built for UofTHacks 13. Contributions, issues, and feature requests are welcome!
This project is part of the UofTHacks 13 hackathon submission.
- Twelve Labs for video intelligence API
- Backboard for AI chat assistant capabilities
- Cloudflare for R2 object storage
- UofTHacks for the hackathon platform
For questions or support, please open an issue on GitHub.
Built with β€οΈ for UofTHacks 13