A modern, secure, and intuitive web application for managing student attendance at Jain University. Built with Next.js 15, TypeScript, Firebase, and Tailwind CSS.
- Google OAuth Integration: Secure sign-in restricted to
@jainuniversity.ac.indomain - Role-Based Access Control: Separate interfaces for students, teachers, and admins
- Domain Restriction: Only university email addresses can access the system
- Cyber Theme: Sleek white and yellow color scheme with professional styling
- Responsive Design: Optimized for both desktop and mobile devices
- Intuitive Navigation: Clean, modern interface with smooth animations
- Unconventional Elements: Semi-circle designs and modern UI patterns
- Multi-View Interface: Table, brick grid, and quick mark views for attendance
- Smart Session Configuration: Date picker with session time dropdowns
- Real-time Updates: Instant attendance marking with visual feedback
- Bulk Operations: Mark all present/absent with confirmation dialogs
- Comprehensive Reports: View attendance history and statistics
- Performance Metrics: Average attendance percentages and trends
- Session Management: Track all taken sessions with detailed analytics
- Admin Dashboard: Advanced analytics for administrators
- Access to all programs and sections
- Take attendance with multiple view options
- View personal attendance reports
- Quick access to recently used sections
- Friendly interface explaining system purpose
- Redirected to university portal for attendance viewing
- All teacher permissions
- Advanced reporting and analytics
- User management capabilities
- System-wide statistics
- Node.js 18+
- pnpm (recommended) or npm
- Firebase project with Firestore enabled
-
Clone the repository
git clone https://github.com/jeryjs/Jain-Attendance-Portal.git cd Jain-Attendance-Portal -
Install dependencies
pnpm install
-
Environment Setup Copy
.env.localand configure your Firebase credentials:cp .env.local .env.local.example
Update the following variables in
.env.local:# Firebase Configuration NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id # Admin Configuration NEXT_PUBLIC_OWNER_EMAILS=[email protected] NEXT_PUBLIC_OWNER_PASSWORD=your_admin_password
-
Firebase Setup
- Create a Firebase project at Firebase Console
- Enable Authentication with Google provider
- Configure domain restriction to
@jainuniversity.ac.in - Enable Firestore Database
- Add your web app and copy the configuration
-
Firestore Data Structure Create a collection called
studentswith documents in this format:{ "name": "John Doe", "usn": "22BCA001", "section": "CSE A" } -
Run the development server
pnpm dev
-
Open your browser Navigate to http://localhost:3000
βββ app/
β βββ attendance/
β β βββ page.tsx # Main attendance page
β β βββ [section]/
β β βββ page.tsx # Section-specific attendance
β βββ dashboard/
β β βββ page.tsx # Teacher dashboard
β βββ reports/
β β βββ page.tsx # Attendance reports
β βββ globals.css # Global styles with Tailwind
β βββ layout.tsx # Root layout with auth provider
β βββ page.tsx # Landing page with auth
βββ components/
β βββ ui/ # Shadcn UI components
βββ contexts/
β βββ AuthContext.tsx # Authentication context
βββ lib/
β βββ firebase.ts # Firebase configuration
β βββ types.ts # TypeScript type definitions
β βββ utils.ts # Utility functions
βββ public/
βββ programs.json # Program and section data
- Sign In: Use your
@jainuniversity.ac.inGoogle account - Select Program: Choose from available programs (CSE, ME, ECE, etc.)
- Pick Section: Select specific section (CSE A, CSE B, etc.)
- Configure Session: Set date and time slot
- Take Attendance: Use preferred view (table/bricks/quick mark)
- View Reports: Check attendance history and analytics
- Access Admin Panel: Available in attendance and dashboard pages
- View Advanced Reports: Department-wide analytics
- Manage Users: User administration (future feature)
- System Analytics: Comprehensive system statistics
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS 3.4.1
- UI Components: Shadcn/ui with Radix UI
- Authentication: Firebase Auth with Google OAuth
- Database: Cloud Firestore
- Icons: Lucide React
- Date Handling: date-fns
- Build Tool: pnpm
The system supports these predefined session slots:
- 8.45-9.45 AM
- 9.45-10.45 AM
- 8.45-10.45 AM
- 11 AM-12 PM
- 12-1 PM
- 11 AM-1 PM
- 2-2.50 PM
- 2.50-3.40 PM
- 2-3.40 PM
- Cannot select dates beyond current day
- Cannot select dates before August 28, 2025 (system start date)
- Connect Repository: Link your GitHub repo to Vercel
- Environment Variables: Add all Firebase and admin configurations
- Deploy: Automatic deployments on push to main branch
- Build the project:
pnpm build
- Start production server:
pnpm start
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the AGPL-3.0-only License - see the LICENSE.md file for details.
- Jain University for the opportunity to build this system
- Firebase for providing excellent backend services
- Vercel for the amazing deployment platform
- The open-source community for incredible tools and libraries
For support or questions:
- Create an issue in the GitHub repository
- Contact the development team
- Check the documentation for common solutions
Built with β€οΈ for Jain University