Project Info
About Braillience π§ What It Does Braillience is an accessible flashcard learning platform for blind and visually impaired college students. It enables fully voice-driven studying with AI-generated flashcards, speech navigation, and screen reader support. Users can upload PDFs, generate flashcards, and learn hands-free through spoken commands. π οΈ How We Built It The frontend is built with React and TypeScript, and the backend uses Node.js + Express. We integrated VAPI for seamless voice processing and Letta File + Agent to manage intelligent flashcard generation and conversational learning. Accessibility was designed in from the start β with ARIA markup, keyboard-only navigation, and high-contrast visual themes. π§ Challenges We Ran Into Integrating Letta agents with dynamic voice feedback loops. Handling speech-to-text accuracy in noisy environments. Achieving full screen reader and browser compatibility (NVDA, VoiceOver). π Accomplishments Built a voice-first learning experience end-to-end. Successfully linked Letta AI agents with VAPI voice pipelines. Created a fully accessible workflow from upload β generate β learn β test. π‘ What We Learned We explored the intersection of AI agents, voice UX, and accessibility engineering. We learned to design for inclusivity and discovered the complexity behind combining speech systems with real-time learning interfaces. π Whatβs Next Expand Gemini AI integration for deeper content understanding. Add multi-language voice support. Launch a mobile PWA for offline study. Partner with universities to pilot Braillience in accessibility programs.
π§ Braillience
π₯ Demo Video: https://youtu.be/1WcWxWYDlo8?si=g8aWwUHi0QJ5CZUg
π― Problem Statement
Blind and visually impaired college students face significant barriers when using traditional learning platforms β most study apps are not screen reader compatible, rely on visual cues, and donβt support voice-only control.
Existing accessibility tools are fragmented, forcing students to switch between multiple apps to study effectively.
The challenge:
How can we create a fully voice-driven, accessible learning experience that allows blind students to study hands-free, generate flashcards automatically, and navigate entirely through speech?
π‘ Our Solution
Braillience is an accessible learning platform designed specifically for blind and visually impaired learners.
It enables teachers to upload PDFs, automatically generate flashcards using AI, and study completely via voice commands β no mouse or screen required. Students start an in-browser voice session and converse with an AI tutor using their microphone and speakers.
Key Innovations:
- ποΈ Voice-First Learning Interface: Fully voice-controlled navigation for flashcards, tests, and progress tracking.
- π§ AI-Generated Flashcards: Letta Agents analyze uploaded PDFs to create structured study sets automatically.
- π£οΈ Seamless Voice Processing: The browser's built-in Web Speech API handles speech recognition and synthesis for real-time, natural voice interactions, at no per-minute cost.
Result: A hands-free, inclusive learning experience that empowers blind students to study independently.
π― Project Structure
Braillience/
βββ backend/ # Node.js API server
β βββ src/
β β βββ routes/ # API endpoints
β β β βββ auth.js # Authentication
β β β βββ upload.js # PDF upload & processing
β β β βββ flashcards.js # Flashcard management
β β β βββ voice-learning.js # Browser-based voice tutoring sessions
β β βββ services/ # Business logic
β β β βββ aiService.js # AI flashcard generation
β β β βββ voiceSessionService.js # Voice session logic & answer grading
β β βββ server.js # Express server
β βββ package.json
β βββ env.example
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # React components
β β β βββ Dashboard.js/css # Main dashboard
β β β βββ VoiceTutor.js/css # In-browser AI voice tutoring session
β β β βββ Login.js/css # Authentication
β β β βββ Header.js/css # Navigation header
β β β βββ Footer.js/css # Footer
β β βββ contexts/ # React contexts
β β β βββ AuthContext.js
β β βββ hooks/ # Custom hooks
β β β βββ useVoiceCommands.js # Web Speech API recognition hook
β β βββ App.js/css # Main app component
β β βββ index.js/css # App entry point
β βββ public/ # Static assets
β β βββ index.html
β β βββ manifest.json
β βββ package.json
βββ docs/ # Documentation
βββ tasks/ # Project requirements
β βββ prd-braillience-flashcard-app.md
βββ start-demo.sh # Demo startup script
βββ README.md
π οΈ Tech Stack
Frontend
- React 18 + TypeScript β Modern and accessible UI
- React Router β App navigation
- Framer Motion β Subtle motion for transitions
Backend
- Node.js + Express β API and logic layer
- Multer β PDF uploads
- JWT β Authentication
- Letta Agents β AI content generation
Voice & AI
- Web Speech API β In-browser speech recognition and synthesis, free
- Letta File + Agent β Stateful learning assistance
- Gemini AI β Enhanced semantic understanding
- Claude Sonnet 3.5 - AI automation and structured calling
π Getting Started
Prerequisites
- Node.js 18+
- npm or yarn
Installation & Running
-
Start Backend:
cd backend npm install npm start -
Start Frontend:
cd frontend npm install npm start -
Or use the demo script:
./start-demo.sh
Access Points
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
π€ Voice Features
Voice Commands
- Navigation: "Start Learning", "Take Test", "Go Back"
- Learning: "Show Answer", "Next Card", "Previous Card", "Repeat"
- Testing: "Select A", "Select B", "Select C", "Select D"
Voice Integration
- Speech-to-text for commands
- Text-to-speech for content
- Voice navigation throughout the app
- Screen reader compatibility
π± Features
Core Functionality
- PDF Upload: Upload documents to generate flashcards
- AI Generation: Automatic flashcard creation from content
- Learning Modes: Flashcards, multiple choice, typing
- Testing: Timed tests with scoring
- Progress Tracking: Learning analytics and statistics
User Experience
- Voice Navigation: Complete control via voice in call
- Responsive Design: Works on all phones
- Offline Support: Continue learning without internet
- Multi-language: Support for various languages
π― Demo Flow
- Login β Use demo credentials
- Dashboard β View progress and quick actions
- Learn β Practice with flashcards using voice commands
- Test β Take timed quizzes with voice selection
- Progress β Track learning statistics
π§ Development
Project Structure
- Clean separation between frontend and backend
- Modular components for easy maintenance
- Voice-first architecture throughout
- Accessibility-first design principles
Key Files
frontend/src/App.js- Main React applicationfrontend/src/components/Dashboard.js- Main dashboard with voicebackend/src/server.js- Express server setupbackend/src/services/aiService.js- AI integration
π Documentation
- PRD:
tasks/prd-braillience-flashcard-app.md - Accessibility:
docs/ACCESSIBILITY_GUIDELINES.md - Contributing:
CONTRIBUTING.md
π License
This project is licensed under the MIT License.
Built with β€οΈ by the Braillience Team at Cal Hacks 2025 for accessibility and inclusion
Analysis
View
Metric
- 4
- 3
- 1
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- HTMLIn code
- JavaScriptIn code
- OpenAIIn code
- ReactIn code
- Google GeminiClaimed
- Node.jsClaimed
- TypeScriptClaimed
6 of 9 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeCommits
- CursorConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
417 KB
Source files
97
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Pavanmahaveer7/Braillience
177 files Β· 3.7 MB Β· @ c25412a
Structure
Interface
18 files Β· 10%Screens, components and styles rendered to the user.
API & routing
6 files Β· 3%Request entry points: routes, handlers and controllers.
Application logic
109 files Β· 62%Domain rules, services and shared utilities.
Data & schema
3 files Β· 2%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here β open the file browser to check anything the diagram implies.
Languages
- JavaScript69%
- Markdown14%
- CSS11%
- YAML4%
- Shell2%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/package.json
npm Β· 21- @letta-ai/letta-client
- axios
- bcryptjs
- better-sqlite3
- compression
- cors
- dotenv
- express
- express-rate-limit
- helmet
- jsonwebtoken
- letta
- multer
- node-cron
- openai
- pdf-parse
- sqlite3
- +4 more
frontend/package.json
npm Β· 16- axios
- framer-motion
- react
- react-dom
- react-dropzone
- react-hot-toast
- react-icons
- react-router-dom
- react-scripts
- web-vitals
- +6 more
Declared in the repositoryβs manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This projectβs features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.