Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

149 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ“ EduPulse

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.

Next.js TypeScript Supabase


๐Ÿ“‹ Table of Contents


๐ŸŽฏ About

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.


โœจ Features

For Students

  • โœ… 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

For Educators

  • ๐Ÿ“Š 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

For Admins

  • ๐Ÿ—บ๏ธ 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

๐Ÿ› ๏ธ Tech Stack

  • 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

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+ and npm
  • Supabase account (free tier works)
  • Modern browser with geolocation support

Installation

  1. Clone the repository
git clone https://github.com/yourusername/edu-pulse.git
cd edu-pulse
  1. Install dependencies
npm install
  1. 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
  1. 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);
  1. Run the development server
npm run dev
  1. Open your browser

Navigate to http://localhost:3000


๐Ÿ”‘ Demo Credentials

Admin Dashboard Access

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.

Test Locations

To test geofencing, you'll need to:

  1. Update campus_settings table with your actual campus coordinates
  2. Use browser developer tools to mock your location (if testing remotely)
  3. Or physically be within the configured radius

Mock Location in Chrome DevTools:

  1. Open DevTools (F12)
  2. Press Ctrl+Shift+P โ†’ Type "Sensors"
  3. Select "Sensors" tab
  4. Choose "Other" and enter your campus lat/lng

๐Ÿ“ Project Structure

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

๐ŸŽฎ Usage Guide

Student Flow

  1. Navigate to /student
  2. Allow browser location access
  3. Verify you're within campus boundaries
  4. Click "I'm Confused" when lost
  5. Optionally add room number and brief context
  6. Signal sent anonymously to educator dashboard

Educator Flow

  1. Navigate to /educator/dashboard
  2. View live confusion pulse chart
  3. Monitor current confusion percentage
  4. Read AI-generated insights
  5. Check recent activity feed
  6. Adjust teaching based on real-time feedback

Admin Flow

  1. Navigate to /admin
  2. Enter admin password: edupulse2026
  3. Configure campus geofence coordinates
  4. Add/remove custom signal types
  5. Monitor system-wide statistics
  6. Reset demo data when needed

๐ŸŒ SDG-4 Alignment

Sustainable Development Goal 4: Quality Education

How EduPulse Contributes:

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

๐Ÿค Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use Tailwind CSS for styling
  • Write meaningful commit messages
  • Test geofencing functionality before submitting
  • Ensure mobile responsiveness

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • Built for EDVentures 2026 Competition
  • Inspired by the need for equitable classroom feedback
  • Designed to support SDG-4: Quality Education

๐Ÿ“ž Contact

Project Maintainer: Kuldeep Mishra

For questions, feedback, or collaboration opportunities, please open an issue on GitHub.


EduPulse โ€ข Making education more equitable, one signal at a time ๐ŸŽ“

Releases

Packages

Contributors

Languages