A comprehensive virtual classroom application designed specifically for rural diploma colleges facing challenges like low bandwidth, unreliable internet connectivity, and limited infrastructure.
- Optimized for entry-level smartphones
- Responsive interface that works on any device
- Touch-friendly controls and navigation
- Adaptive audio streaming (16-128 kbps)
- Video compression with quality adaptation
- Offline-first architecture
- Progressive Web App (PWA) capabilities
- High-quality audio transmission with minimal data usage
- Noise reduction for rural environments
- Audio-only session mode for 2G networks
- Downloadable audio content
- Real-time polls and quizzes
- Discussion boards with offline sync
- Quiz results tracking
- Engagement analytics
- Download sessions for offline viewing
- Offline quiz completion with sync
- Cached content for poor connectivity
- Smart background sync
- Simple session creation and management
- Minimal training required interface
- Content upload with compression
- Student engagement tracking
- Connection quality adaptation
- Graceful degradation for poor networks
- Off-peak download recommendations
- Local data storage optimization
- Next.js 14 - React framework with App Router
- TypeScript - Type safety and better developer experience
- Tailwind CSS - Utility-first CSS framework
- Service Worker - Offline functionality and caching
- Next.js API Routes - Serverless backend functions
- SQLite - Lightweight database for rural deployment
- better-sqlite3 - High-performance SQLite driver
- Web Audio API - Audio processing and streaming
- IndexedDB - Client-side storage for offline content
- WebRTC - Real-time communication (future enhancement)
- Progressive Web App - Native app-like experience
- Node.js 18+
- npm or yarn
- Git
-
Clone the repository
git clone <repository-url> cd EASYkaksha
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Configure the following variables:
DATABASE_PATH=./data/rural_classroom.db NEXTAUTH_SECRET=your-secret-key NEXTAUTH_URL=http://localhost:3000
-
Initialize the database
npm run db:init
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
-
Android Chrome:
- Open the app in Chrome
- Tap the menu button (โฎ)
- Select "Add to Home Screen"
- Confirm installation
-
iOS Safari:
- Open the app in Safari
- Tap the Share button
- Select "Add to Home Screen"
- Name your app and tap "Add"
-
Desktop:
- Look for the install prompt in the address bar
- Click "Install" when prompted
-
Joining Sessions:
- Browse active sessions on the homepage
- Click "Join Live Session" for real-time classes
- Use "Audio Only" mode for low bandwidth
-
Offline Learning:
- Go to Downloads section
- Download content during off-peak hours (11 PM - 6 AM)
- Access downloaded content without internet
-
Interactive Features:
- Participate in live polls during sessions
- Complete quizzes (works offline)
- Ask questions in discussion boards
-
Creating Sessions:
- Access the Educator Dashboard
- Click "New Session"
- Choose audio-only for rural areas
- Schedule for optimal connectivity times
-
Content Management:
- Upload compressed audio files
- Create downloadable materials
- Set up interactive polls and quizzes
-
Monitoring Engagement:
- Track student participation
- View connection quality statistics
- Adjust content based on network conditions
export const AUDIO_PRESETS = {
ultraLow: { bitrate: 16, sampleRate: 22050 }, // 2G networks
low: { bitrate: 32, sampleRate: 44100 }, // Unstable 3G
medium: { bitrate: 64, sampleRate: 44100 }, // Stable 3G/4G
high: { bitrate: 128, sampleRate: 44100 } // Good connection
}// Latency-based quality detection
if (latency > 1000) quality = 'poor'
else if (latency > 500) quality = 'fair'
else quality = 'good'src/
โโโ app/ # Next.js App Router
โ โโโ api/ # API routes
โ โโโ educator/ # Educator dashboard
โ โโโ globals.css # Global styles
โโโ components/ # React components
โ โโโ ui/ # UI components
โ โโโ layout/ # Layout components
โ โโโ sessions/ # Session-related components
โ โโโ interactive/ # Polls, quizzes
โ โโโ media/ # Audio/video components
โ โโโ downloads/ # Download management
โโโ lib/ # Utility libraries
โโโ types/ # TypeScript type definitions
โโโ utils/ # Helper functions
โโโ hooks/ # Custom React hooks
- AudioPlayer: Adaptive audio streaming with offline support
- SessionList: Real-time session management with filtering
- QuizComponent: Interactive quizzes with offline sync
- DownloadManager: Offline content management
- ConnectionStatus: Real-time connectivity monitoring
The application uses SQLite with the following key tables:
users- User managementsessions- Session datasession_participants- Attendance trackingmessages- Chat and discussionsquizzes/quiz_results- Assessment systemdownloadable_content- Offline resourcesoffline_sync_queue- Rural network sync management
-
Build the application
npm run build
-
Environment setup
NODE_ENV=production DATABASE_PATH=/var/lib/rural-classroom/database.db
-
Deploy options:
- Vercel:
npm run deploy:vercel - Local Server:
npm start - Docker:
docker build -t rural-classroom .
- Vercel:
For rural colleges with limited infrastructure:
-
Local Server Setup:
# Install on local server/laptop git clone <repo> npm install --production npm run build # Start with PM2 for reliability npm install -g pm2 pm2 start npm --name "rural-classroom" -- start
-
Network Setup:
- Create local WiFi hotspot
- Share on college network
- Use local domain (e.g., http://classroom.local:3000)
-
Offline Package:
- Pre-download course materials
- Set up local content server
- Sync during internet availability windows
- Images served as WebP with fallbacks
- CSS and JS minification
- Gzip compression enabled
- Lazy loading for non-critical content
- Static assets cached for 1 year
- API responses cached for 5 minutes
- Offline-first service worker implementation
- Smart background sync for rural networks
- Code splitting for faster initial loads
- Optimized bundle sizes
- Touch gesture optimization
- Battery usage minimization
-
Audio not playing:
- Check browser audio permissions
- Verify Web Audio API support
- Try different audio format
-
Offline content not syncing:
- Check service worker registration
- Verify IndexedDB support
- Clear browser cache and retry
-
Poor video quality:
- Switch to audio-only mode
- Check connection quality indicator
- Try during off-peak hours
- Chrome 80+ (recommended)
- Firefox 75+
- Safari 13+
- Edge 80+
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly on mobile devices
- Submit a pull request
- Follow TypeScript best practices
- Ensure mobile responsiveness
- Test offline functionality
- Consider rural network conditions
- Add appropriate error handling
This project is licensed under the MIT License - see the LICENSE file for details.
- Designed for rural diploma colleges across India
- Built with accessibility and low-bandwidth scenarios in mind
- Inspired by the challenges of digital divide in education
- Thanks to the open-source community for the tools and libraries
For technical support or questions:
- Create an issue on GitHub
- Email: support@ruralclassroom.edu
- Documentation: docs.ruralclassroom.edu
EASYเคเคเฅเคทเคพ - Bridging the educational divide, one connection at a time. ๐ฑ