Skip to content

Premshaw23/Learnova

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4,003 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸŽ“ Learnova

AI-Powered Smart Student Engagement & Attendance Platform

Transforming Education β€” One Institution at a Time

Live Demo Next.js React Firebase MongoDB Tailwind CSS


🌟 What is Learnova?

Learnova is a modern, AI-powered educational platform built to eliminate the inefficiencies of traditional school management. It replaces manual attendance, siloed data, and disengaged learning with a seamless, integrated experience for every stakeholder in education.

  • πŸ§‘β€πŸ« Teachers regain ~1 hour/day β€” more time to teach, less time on admin
  • πŸŽ’ Students convert ~90+ hours/year of idle time into productive learning
  • 🏫 Institutions improve attendance metrics and engagement across departments
  • πŸ‘¨β€πŸ‘©β€πŸ‘§ Parents gain transparent, real-time insights into their child's progress

✨ Features

πŸ” Role-Based Authentication

  • Separate dashboards for Students, Teachers, Institutes, Parents, and Admins
  • Firebase-powered sign-up/login with email verification and password reset
  • Secure protected routes with role-based redirects

πŸ“Έ Face Recognition Attendance

  • AI-powered face recognition using Face API.js for contactless attendance
  • Attendance validation and conflict resolution built-in
  • Reduces manual roll-call time dramatically

πŸ“Š Role-Specific Dashboards

  • Student Dashboard β€” view attendance records and academic progress
  • Teacher Dashboard β€” manage classes, take attendance, monitor students
  • Institute Dashboard β€” oversee departments and institution-wide metrics
  • Parent Dashboard β€” monitor linked children's daily/weekly/monthly attendance trends, grades breakdown, low attendance alerts, and announcements
  • Admin Dashboard β€” full system administration and user management

πŸ“‹ Notice Board

  • Institution-wide announcements and notices for all roles
  • Real-time updates accessible across dashboards

πŸ“… Activity Centre

  • Track academic and co-curricular activities
  • Centralised log accessible to students and teachers

πŸ€– AI Chatbot

  • Built-in Learnova chatbot for platform assistance
  • Available globally across all pages

πŸ“± Progressive Web App (PWA)

  • Installable on any device β€” mobile or desktop
  • Works in low-network environments for maximum accessibility

πŸ“¬ Contact & Communication

  • Integrated contact form powered by EmailJS
  • Direct communication channel between users and the Learnova team

βš™οΈ Profile & Settings

  • Universal profile management for all roles
  • Customisable settings per user type

πŸ‘¨β€πŸ‘©β€πŸ‘§ Parent Portal Feature

Learnova features a comprehensive Parent Portal that allows parents to securely monitor their children's academic status, notifications, and attendance.

Key Capabilities

  1. Parent-Student Linking: Admins can securely link one or multiple student accounts to a single Parent account via the Admin Dashboard.
  2. Attendance Tracking: Dynamic attendance analytics displaying daily, weekly, and monthly trends using high-fidelity Recharts visualisations.
  3. Academic Performance: Subject-wise grade breakdown, scores, and GPAs with automatic grade notifications.
  4. Self-Healing Low Attendance Alerts: Automated background check triggers when student attendance drops below 75%, generating notifications for parents.
  5. Notice Board Integration: Parents can view notices and announcements posted by the student's institute.

Data Schemas

parent_student_links (Firestore & MongoDB)

Maps the relationship between a parent and their linked child/children:

  • _id / documentId: ${parentId}_${studentId}
  • parentId: Firebase UID of the parent user
  • studentId: Firebase UID of the student user
  • createdAt: ISO Timestamp

grades (Firestore & MongoDB)

Stores subject-wise student grades:

  • _id / documentId: Unique ID
  • studentId: Firebase UID of the student user
  • subject: Name of the subject (e.g. "Computer Science")
  • grade: Letter grade (e.g. "A+")
  • score: Numeric score (e.g. 98)
  • maxScore: Maximum possible score (e.g. 100)
  • term: Academic term (e.g. "Midterm")
  • date: Grading date (e.g. "2026-06-01")
  • createdAt: ISO Timestamp

πŸ› οΈ Tech Stack

Layer Technology
Framework Next.js 15 (App Router)
UI Library React 19
Styling Tailwind CSS v4
Animations Framer Motion, GSAP
Authentication Firebase Auth
Database MongoDB
File Storage Vercel Blob
Face Recognition Face API.js
Email EmailJS
Analytics Firebase Analytics
PWA @ducanh2912/next-pwa
Notifications React Hot Toast

πŸ“ Project Structure

learnova/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ page.js                   # Landing / About page
β”‚   β”œβ”€β”€ layout.js                 # Root layout with metadata & providers
β”‚   β”œβ”€β”€ auth/                     # Sign in / Sign up
β”‚   β”œβ”€β”€ verify/                   # Email verification
β”‚   β”œβ”€β”€ register/                 # New user registration
β”‚   β”œβ”€β”€ profile/                  # Profile setup
β”‚   β”œβ”€β”€ student/dashboard/        # Student dashboard
β”‚   β”œβ”€β”€ teacher/dashboard/        # Teacher dashboard
β”‚   β”œβ”€β”€ institute/dashboard/      # Institute dashboard
β”‚   β”œβ”€β”€ parent/dashboard/         # Parent dashboard
β”‚   β”œβ”€β”€ admin/dashboard/          # Admin dashboard
β”‚   β”œβ”€β”€ attendance/               # Attendance management
β”‚   β”œβ”€β”€ activity/                 # Activity centre
β”‚   β”œβ”€β”€ notices/                  # Notice board
β”‚   β”œβ”€β”€ settings/                 # User settings
β”‚   └── contact/                  # Contact page
β”‚
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ AuthForm.js               # Authentication form
β”‚   β”œβ”€β”€ RoleSelection.js          # Role selection UI
β”‚   β”œβ”€β”€ FaceRecognizer.js         # Face recognition component
β”‚   β”œβ”€β”€ AttendanceValidation.js   # Attendance validation logic
β”‚   β”œβ”€β”€ StudentDashboard.js       # Student dashboard component
β”‚   β”œβ”€β”€ TeacherDashboardComponent.js # Teacher dashboard component
β”‚   β”œβ”€β”€ InstituteDashboard.js     # Institute dashboard
β”‚   β”œβ”€β”€ ParentDashboard.js        # Parent dashboard component
β”‚   β”œβ”€β”€ AdminDashboard.js         # Admin dashboard
β”‚   β”œβ”€β”€ ChatBot.js                # AI chatbot
β”‚   β”œβ”€β”€ noticeBoard.js            # Notice board component
β”‚   β”œβ”€β”€ Navbar.js                 # Navigation
β”‚   β”œβ”€β”€ ProtectedRoute.js         # Route protection
β”‚   β”œβ”€β”€ InstallPWA.js             # PWA install prompt
β”‚   └── profile.js / settings.js  # Profile & settings
β”‚
β”œβ”€β”€ constants/
β”‚   └── userRoles.js              # Role definitions and config
β”‚
β”œβ”€β”€ contexts/
β”‚   └── AuthContext.js            # Global auth state
β”‚
β”œβ”€β”€ hooks/
β”‚   └── useAuth.js                # Authentication hook
β”‚
β”œβ”€β”€ services/
β”‚   └── authService.js            # Firebase auth service
β”‚
β”œβ”€β”€ utils/
β”‚   └── authUtils.js              # Auth utility functions
β”‚
└── lib/
    └── firebaseConfig.js         # Firebase configuration

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • A Firebase project (Auth + Analytics enabled)
  • A MongoDB instance (local or Atlas)
  • A Vercel Blob store (for file uploads)

1. Clone the repository

git clone [https://github.com/Premshaw23/Learnova.git](https://github.com/Premshaw23/Learnova.git)
cd Learnova

2. Install dependencies

npm install

3. Configure environment variables

A .env.example file is included in the repo with all required keys. Copy it first:

cp .env.example .env.local

Then fill in your actual values:

# Firebase
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id

# MongoDB
MONGODB_URI=your_mongodb_connection_string

# Vercel Blob
BLOB_READ_WRITE_TOKEN=your_vercel_blob_token

# EmailJS
NEXT_PUBLIC_EMAILJS_SERVICE_ID=your_service_id
NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=your_template_id
NEXT_PUBLIC_EMAILJS_USER_ID=your_user_id
NEXT_PUBLIC_CONTACT_RECEIVER_EMAIL=your-actual-admin-email@example.com
NEXT_PUBLIC_CONTACT_RECEIVER_NAME=Learnova Administration

4. Run the development server

By default, Next.js starts the development server on port 3000. Run the server using:

npm run dev

Open http://localhost:3000 in your browser.


πŸ› οΈ Troubleshooting

npm install fails

  • Use Node.js 18+ (node -v).
  • Delete node_modules and package-lock.json, then run npm install again.
  • On Apple Silicon, if native modules fail, try npm install --legacy-peer-deps.

Missing or incorrect environment variables

  • Ensure .env.local exists in the project root (not committed to git).
  • Restart the dev server after changing env vars β€” Next.js only reads them at startup.
  • Verify Firebase keys match your Firebase console project settings.

Firebase auth / configuration errors

  • Confirm Email/Password sign-in is enabled in Firebase Authentication.
  • Check that NEXT_PUBLIC_FIREBASE_* values are complete and have no trailing spaces.
  • For local testing, add localhost to Firebase authorized domains if redirects fail.

Port already in use (EADDRINUSE)

  • Another process may be using port 3000. Stop it or run npm run dev -- -p 3001.
  • On macOS/Linux: lsof -i :3000 to find the blocking process.

Dev server or build failures

  • Clear the Next.js cache: rm -rf .next then npm run dev.
  • Run npm run build locally to surface TypeScript or lint errors before deploying.
  • Check the terminal for missing MONGODB_URI or Firebase errors on API routes.

MongoDB connection issues

  • Confirm MONGODB_URI includes the database name and valid credentials.
  • For Atlas, allow your current IP in Network Access and verify the cluster is running.

5. Build for production

npm run build
npm run start

🌐 Deployment

Learnova is deployed on Vercel. To deploy your own instance:

  1. Push your code to GitHub
  2. Import the repository on vercel.com
  3. Add all environment variables in the Vercel dashboard
  4. Deploy β€” Vercel handles the rest

Live at: https://learnova-web.vercel.app


πŸ‘₯ Meet the Team

Name Role
Prem Shaw Founder & Creator β€” Team Leader, Full-Stack Developer
Prashant Bhati Web Developer
Polawar Pranav Shirish Frontend Developer
Abir Ghosh Machine Learning Specialist
Anuj Ram Shrivastava ML & Backend Developer
Chandana S Testing & Documentation

πŸ’‘ Our Values

Value Description
⚑ Efficiency Streamline workflows and reduce redundancy so educators can focus on teaching
πŸ’œ Engagement Interactive and gamified experiences that motivate students
🌍 Accessibility Designed for all schools, even in low-network areas, with affordable solutions

πŸ“„ License

This project is licensed under the MIT License β€” see LICENSE file for details.

You are free to use, modify, and distribute this software commercially or personally, as long as you include the license and original copyright notice.


🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for:

  • How to report bugs
  • Feature request guidelines
  • Development setup instructions
  • Code style standards
  • Pull request process

⚠️ Contribution Limits

To maintain repository quality and ensure fair visibility for all contributors, please note:

Per-Contributor Limits:

  • Maximum 3 open Issues per contributor at a time
  • Maximum 3 open PRs per contributor at a time

Repository-Wide Limit:

  • Maximum 30 open PRs total in the repository at any time

Why these limits?

  • Encourages focused, high-quality work
  • Reduces spam and duplicate submissions
  • Ensures maintainers can review thoroughly
  • Gives all contributors fair visibility
  • Keeps repository manageable and organized

Before opening new Issues/PRs: βœ… Close or merge previous open work
βœ… Ensure proper testing and documentation
βœ… Focus on quality over quantity


πŸ“‹ Code of Conduct

Please read our Code of Conduct before participating.


πŸ”’ Security

Found a security vulnerability? Please report it responsibly to security@learnova.com instead of opening a public issue. See SECURITY.md for details.


πŸ‘₯ Contributors

Premshaw23
Prem Shaw
ionfwsrijan
@ionfwsrijan
mrdeyroy
@mrdeyroy
Prateek2007-cmd
@Prateek2007-cmd
pithva007
@pithva007
RUSHILPATEL33
@RUSHILPATEL33
Aditya8369
@Aditya8369
nivedha2025cse-gif
@nivedha2025cse-gif
Hrithik-ui753
@Hrithik-ui753
Siddh2024
@Siddh2024
Srushti-Kamble14
@Srushti-Kamble14
sanrishi
@sanrishi
HarshaNaidu11
@HarshaNaidu11
pranav-cholleti
@pranav-cholleti
atul-upadhyay-7
@atul-upadhyay-7
Pratyush-Panda-2006
@Pratyush-Panda-2006
sricharan-213
@sricharan-213
Vaishnav-Hub9
@Vaishnav-Hub9
Sandeep6135
@Sandeep6135
leno23
@leno23
DhruvalBhinsara1
@DhruvalBhinsara1
Chakshu-Bamotra
@Chakshu-Bamotra
KRUSHAL2956
@KRUSHAL2956
akashgoudsidduluri
@akashgoudsidduluri
codedbydollys10
@codedbydollys10
basantnema31
@basantnema31
pragya0129
@pragya0129
dynamo-pentester
@dynamo-pentester
nancy-verma780
@nancy-verma780
PRODHOSH
@PRODHOSH
omnipotentchaos
@omnipotentchaos
anshul23102
@anshul23102
AMAN194701
@AMAN194701
Divyanshu227
@Divyanshu227
paripnj
@paripnj
anshika1179
@anshika1179
harshbok69-bit
@harshbok69-bit
tamannaa-rath
@tamannaa-rath
SuhridXSingh
@SuhridXSingh
skypank-coder
@skypank-coder
thevaibhavtyagi
@thevaibhavtyagi
Pratikshya32
@Pratikshya32
advikdivekar
@advikdivekar
PanditG4303
@PanditG4303
prakshithamalla-art
@prakshithamalla-art
NiranjanDoijode23
@NiranjanDoijode23
KGFCH2
@KGFCH2
vaishnavijha12
@vaishnavijha12
yuvraj-k-singh
@yuvraj-k-singh
suhaniiz
@suhaniiz
Shanidhya01
@Shanidhya01
nimkarprachi17
@nimkarprachi17
thakurakanksha288
@thakurakanksha288
vedant7007
@vedant7007
SOHALIYAJAY
@SOHALIYAJAY
Nihal-Reddy-K
@Nihal-Reddy-K
leonagoel
@leonagoel
hitdepani
@hitdepani
AdityaNarayanPadhi
@AdityaNarayanPadhi
Dhyeya29
@Dhyeya29
varun29sharma
@varun29sharma
Vaghasiya-Jemit-kanaiyalal
@Vaghasiya-Jemit-kanaiyalal
Julliet-Mohanta
@Julliet-Mohanta
Meenbudha
@Meenbudha
kanishka-2007-tech
@kanishka-2007-tech
dhiraj-dev-19
@dhiraj-dev-19
4nshhh
@4nshhh
Ayushia5
@Ayushia5
pericharlabindhumadhavi-data
@pericharlabindhumadhavi-data
udaycodespace
@udaycodespace
Shrutiii01
@Shrutiii01
pracheyyy
@pracheyyy
knoxiboy
@knoxiboy
jainiksha
@jainiksha
zairahussain27
@zairahussain27
Vikrant0207
@Vikrant0207
tanishksinha
@tanishksinha
Shayan-Bhowmik
@Shayan-Bhowmik
NiravaM
@NiravaM
namrarafique93-del
@namrarafique93-del
riddhimagupta2
@riddhimagupta2
Animesh-86
@Animesh-86
anujsharma8d
@anujsharma8d
ishitaajain22-tech
@ishitaajain22-tech
khushi897920-lang
@khushi897920-lang
priyanshi-coder-2
@priyanshi-coder-2
Copilot
@Copilot
surya0904shankar
@surya0904shankar
shauryaparth1902-blip
@shauryaparth1902-blip
pari-dubey1
@pari-dubey1
Rajal-ui
@Rajal-ui
Hiral-Barot
@Hiral-Barot
tanishrajh
@tanishrajh
shruti-codes-design
@shruti-codes-design
Kritika200520
@Kritika200520
dchokshi28
@dchokshi28
ash1shkumar
@ash1shkumar
adityack477
@adityack477
AdityaSekharDas
@AdityaSekharDas
Arhanabdullah
@Arhanabdullah
Bhavex
@Bhavex
Asifmd45
@Asifmd45
Nazia012
@Nazia012
DebasmitaBose0
@DebasmitaBose0
vaishalig03
@vaishalig03
Tanish-Solanki
@Tanish-Solanki
Sweksha-Kakkar
@Sweksha-Kakkar
ssuyashhhh
@ssuyashhhh
Neel-Aiprog
@Neel-Aiprog
Prashantbhati7
@Prashantbhati7
shreyasingh260
@shreyasingh260
Sha-lini3
@Sha-lini3
vansh-09
@vansh-09
PradeepTech-hub
@PradeepTech-hub
Abhii-afk
@Abhii-afk
aaradhyasinghai-ux
@aaradhyasinghai-ux
sujal-rana58
@sujal-rana58
Ankitkr16
@Ankitkr16
mxskaaan
@mxskaaan
Yashrajsinh-Kanchva
@Yashrajsinh-Kanchva
Subham503
@Subham503
Smrithi-krishna
@Smrithi-krishna
KhushiYadav-26
@KhushiYadav-26
Ketandora
@Ketandora
dhruv-jani-0808
@dhruv-jani-0808
gowthamrdyy
@gowthamrdyy
Kokila-chandrakar
@Kokila-chandrakar
Lishhhh07
@Lishhhh07
Meera2906
@Meera2906
Shashank-8p
@Shashank-8p
saniya196
@saniya196
rajesh-puripanda
@rajesh-puripanda
ApekshaRao27
@ApekshaRao27
Owais-Siddique-11
@Owais-Siddique-11
Nirmai-06
@Nirmai-06
Nilamma19
@Nilamma19
kannatinaveena
@kannatinaveena
Tannie02
@Tannie02
siddharth277
@siddharth277
Thejaswini-VS
@Thejaswini-VS
UTKARSHH20
@UTKARSHH20
vikasverma101
@vikasverma101
VikashRaj110
@VikashRaj110
Vinuthnainti
@Vinuthnainti
AnxhDarji
@AnxhDarji
indreshgit10
@indreshgit10
karthick7204
@karthick7204
nisha-bugalia
@nisha-bugalia
nishitha011
@nishitha011
parakramgambhir2025
@parakramgambhir2025
pratikshasuryawanshi843-ui
@pratikshasuryawanshi843-ui
Sagun-Bajpai
@Sagun-Bajpai
sarthakshruti999-code
@sarthakshruti999-code
shambhavivartika06-cmyk
@shambhavivartika06-cmyk
suhanimaurya05
@suhanimaurya05
lover3123
@lover3123
workwithme67
@workwithme67
yashvi-3106
@yashvi-3106
pratyuxxhh
@pratyuxxhh
Achiever199
@Achiever199
adityayadav176
@adityayadav176
aishwary-vansh
@aishwary-vansh
Anshika-Gupta9
@Anshika-Gupta9
ARCHITVARMA15
@ARCHITVARMA15
Dippp10-ally
@Dippp10-ally
Hussain053
@Hussain053
krishsoni-hub
@krishsoni-hub
LalithMadhav-CODING
@LalithMadhav-CODING
Bhavikapatel06
@Bhavikapatel06
PojashriJM
@PojashriJM
Pragya005
@Pragya005
pritesh-4
@pritesh-4
priya434960
@priya434960
Chaudhary8587
@Chaudhary8587
SARTHAKJINDAL1
@SARTHAKJINDAL1
Sanjay452656
@Sanjay452656
SatyajeetSahoo08
@SatyajeetSahoo08
savniagrawal1701
@savniagrawal1701
Shrutii-Rai
@Shrutii-Rai
Shrutika-Dahale
@Shrutika-Dahale

/**

✨ README Improvement Notes

πŸ“Œ Formatting Enhancements Needed

  • Improve heading hierarchy for better readability
  • Ensure consistent spacing between sections
  • Use proper Markdown formatting for code blocks and lists
  • Align all installation and usage steps properly

πŸš€ Suggested Structure Upgrade

  • Introduction
  • Features
  • Tech Stack
  • Installation
  • Usage
  • Project Structure
  • Contribution Guidelines
  • License

πŸ› οΈ Documentation Improvements

  • Add badges (optional): build, license, contributors
  • Add screenshots for better UI understanding
  • Standardize code blocks for commands

🎯 Goal

Improve onboarding experience for new contributors and users by making README more structured, readable, and professional. */

GSSoC Attendance Passcode Masking Guidelines

  • Always mask attendance code states internally.

About

The most advanced platform for curriculum planning and attendance management, designed for smooth academic management.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages