Real-time, Anonymous Classroom Feedback System
EduPulse helps educators understand student confusion as it happensโwithout forcing students to speak up. A silent signal for better equity in education.
- About
- Features
- Tech Stack
- Getting Started
- Demo Credentials
- Project Structure
- Environment Setup
- Usage Guide
- SDG-4 Alignment
- Contributing
EduPulse addresses the "Silent Classroom" problem where 80% of confused students never ask questions due to:
- Fear of judgment
- Language barriers
- Fast-paced lectures
- Social anxiety
Our solution provides a one-click, anonymous feedback mechanism that gives educators real-time insights into classroom understanding.
- โ Anonymous Signaling - No login required, complete privacy
- ๐ Geofenced Access - Signals only work within campus boundaries
- โก One-Click Feedback - "I'm Confused" button with optional context
- ๐ Secure & Private - No tracking, no data collection on individuals
- ๐ Live Dashboard - Real-time confusion metrics and trends
- ๐ค AI Insights - Smart suggestions based on signal patterns
- ๐ Historical Trends - Visualize confusion over time (last hour)
- ๐ฏ Actionable Data - See location clusters and signal types
- ๐บ๏ธ Campus Geofencing - Configure campus boundaries (lat/lng/radius)
- ๐๏ธ Signal Management - Add/remove custom signal types
- ๐ System Overview - Monitor active sessions and usage stats
- ๐ Data Reset - Password-protected demo data management
- Frontend: Next.js 16.1.1 (App Router), React, TypeScript
- Styling: Tailwind CSS (Vanilla CSS approach)
- Backend: Supabase (PostgreSQL)
- Icons: Lucide React
- Fonts: Inter (Google Fonts)
- Geolocation: Browser Geolocation API + Haversine formula
- Node.js 18+ and npm
- Supabase account (free tier works)
- Modern browser with geolocation support
- Clone the repository
git clone https://github.com/yourusername/edu-pulse.git
cd edu-pulse- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
# Admin Password (hashed)
ADMIN_PASSWORD_HASH=your_bcrypt_hash- Set up Supabase database
Run the following SQL in your Supabase SQL editor:
-- Campus Settings Table
CREATE TABLE campus_settings (
id SERIAL PRIMARY KEY,
latitude DOUBLE PRECISION NOT NULL,
longitude DOUBLE PRECISION NOT NULL,
radius_meters INTEGER NOT NULL DEFAULT 500,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Insert default campus location (update with your coordinates)
INSERT INTO campus_settings (latitude, longitude, radius_meters)
VALUES (28.7041, 77.1025, 500); -- Example: Delhi coordinates
-- Signal Types Table
CREATE TABLE signal_types (
id SERIAL PRIMARY KEY,
label TEXT NOT NULL,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Insert default signal types
INSERT INTO signal_types (label) VALUES
('I''m Confused'),
('Too Fast'),
('Too Slow'),
('Need Clarification');
-- Signals Table
CREATE TABLE signals (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
type TEXT NOT NULL,
lat DOUBLE PRECISION,
lng DOUBLE PRECISION,
block_room TEXT,
additional_text TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Create index for faster queries
CREATE INDEX idx_signals_created_at ON signals(created_at DESC);- Run the development server
npm run dev- Open your browser
Navigate to http://localhost:3000
URL: http://localhost:3000/admin
Demo Admin Password: edupulse2026
Note: For production, change the admin password and use proper bcrypt hashing. The current setup is for demonstration purposes only.
To test geofencing, you'll need to:
- Update
campus_settingstable with your actual campus coordinates - Use browser developer tools to mock your location (if testing remotely)
- Or physically be within the configured radius
Mock Location in Chrome DevTools:
- Open DevTools (F12)
- Press
Ctrl+Shift+Pโ Type "Sensors" - Select "Sensors" tab
- Choose "Other" and enter your campus lat/lng
edu-pulse/
โโโ app/
โ โโโ actions/ # Server actions
โ โ โโโ admin.ts # Admin operations
โ โ โโโ signals.ts # Signal operations
โ โโโ admin/ # Admin dashboard
โ โ โโโ page.tsx
โ โโโ educator/ # Educator views
โ โ โโโ dashboard/
โ โ โโโ page.tsx
โ โโโ student/ # Student view
โ โ โโโ page.tsx
โ โโโ impact/ # SDG-4 impact page
โ โ โโโ page.tsx
โ โโโ layout.tsx # Root layout
โ โโโ page.tsx # Landing page
โ โโโ globals.css # Global styles
โโโ utils/
โ โโโ supabase/ # Supabase client setup
โ โโโ client.ts
โ โโโ server.ts
โโโ middleware.ts # Route protection
โโโ .env.local # Environment variables (create this)
โโโ README.md
- Navigate to
/student - Allow browser location access
- Verify you're within campus boundaries
- Click "I'm Confused" when lost
- Optionally add room number and brief context
- Signal sent anonymously to educator dashboard
- Navigate to
/educator/dashboard - View live confusion pulse chart
- Monitor current confusion percentage
- Read AI-generated insights
- Check recent activity feed
- Adjust teaching based on real-time feedback
- Navigate to
/admin - Enter admin password:
edupulse2026 - Configure campus geofence coordinates
- Add/remove custom signal types
- Monitor system-wide statistics
- Reset demo data when needed
Sustainable Development Goal 4: Quality Education
Equity ๐ค
- Removes barriers for shy, non-native speakers, or anxious students
- Ensures all voices are heard without fear of judgment
Inclusion ๐
- Anonymous system protects vulnerable students
- No login requirement reduces technical barriers
Quality ๐
- Real-time feedback enables immediate teaching adjustments
- Data-driven insights help educators identify systemic issues
Access ๐
- Browser-based, no app download required
- Works on any device with internet connection
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow TypeScript best practices
- Use Tailwind CSS for styling
- Write meaningful commit messages
- Test geofencing functionality before submitting
- Ensure mobile responsiveness
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for EDVentures 2026 Competition
- Inspired by the need for equitable classroom feedback
- Designed to support SDG-4: Quality Education
Project Maintainer: Kuldeep Mishra
For questions, feedback, or collaboration opportunities, please open an issue on GitHub.