Pramaan is a revolutionary attendance management system that combines biometric authentication with Zero-Knowledge Proof (ZKP) cryptography to create a secure, privacy-preserving, and tamper-proof attendance tracking solution.
- 🔐 Zero-Knowledge Proof Authentication: Verify identity without storing biometric data
- 🏢 Multi-Organization Support: Multiple organizations can use the same app
- 📍 Location-Based Attendance: Geofencing ensures physical presence
- 🎯 Tamper-Proof Records: Cryptographic proofs that cannot be faked
- 📱 Mobile First: React Native app for Android (iOS coming soon)
- 🔍 Real-time Analytics: Dashboard with attendance insights
- Backend: Node.js, Express.js, MongoDB
- Mobile: React Native (Expo)
- Authentication: JWT, Biometric APIs
- ZKP: Circom, SnarkJS (currently in simulation mode)
- Node.js 18+
- MongoDB 4.4+
- Expo CLI
- Android Studio (for Android development)
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create .envfile from example:
cp .env.example .env- 
Update MongoDB connection string in .env
- 
Start the server: 
npm run devThe backend will run on http://localhost:5000
- Navigate to mobile directory:
cd mobile/PramaanExpo- Install dependencies:
npm install- Update the API URL in src/config/constants.ts:
export const API_BASE_URL = 'http://YOUR_BACKEND_IP:5000/api';- Start the Expo development server:
npx expo start- Run on Android:
- Press ato open in Android emulator
- Or scan QR code with Expo Go app on physical device
 
- Press 
pramaan/
├── backend/
│   ├── src/
│   │   ├── config/       # Configuration files
│   │   ├── controllers/  # Route controllers
│   │   ├── middleware/   # Express middleware
│   │   ├── models/       # MongoDB models
│   │   ├── routes/       # API routes
│   │   ├── services/     # Business logic
│   │   └── utils/        # Utility functions
│   └── server.js         # Main server file
│
└── mobile/
    └── PramaanExpo/
        ├── src/
        │   ├── components/   # Reusable components
        │   ├── config/       # App configuration
        │   ├── contexts/     # React contexts
        │   ├── navigation/   # Navigation setup
        │   ├── screens/      # App screens
        │   └── services/     # API services
        └── App.js           # App entry point
- POST /api/auth/register-organization- Register new organization
- POST /api/auth/admin-login- Admin login
- POST /api/auth/scholar/login- Scholar login
- GET /api/admin/dashboard- Get dashboard data
- GET /api/admin/scholars- List all scholars
- POST /api/admin/scholars- Add new scholar
- GET /api/admin/reports- Get attendance reports
- GET /api/scholar/profile- Get scholar profile
- GET /api/scholar/stats- Get attendance stats
- GET /api/scholar/attendance/history- Get attendance history
- POST /api/attendance/mark- Mark attendance
- GET /api/attendance/verify/:proofId- Verify attendance proof
After registering an organization, use these test credentials:
- Admin Login:
- Email: Use the email you registered with
- Password: Your chosen password
 
✅ Working Features:
- Organization registration
- Admin login and dashboard
- Scholar management (backend ready)
- Basic attendance marking (backend ready)
- JWT authentication
- Database models and relationships
- Scholar biometric enrollment
- ZKP proof generation (currently simulated)
- Location-based attendance verification
- Scholar mobile app features
- Navigation Issue: After successful admin login, the app might get stuck. This is being fixed.
- ZKP Implementation: Currently using simulated proofs. Real ZKP circuits need to be implemented.
- Biometric Integration: Face/fingerprint capture needs to be integrated with device APIs.
- MongoDB Connection: Make sure MongoDB is running before starting the backend
- IP Address: Use your computer's local IP (not localhost) in mobile app for device testing
- Logs: Check backend/logs/directory for server logs
- Hot Reload: Both backend (with nodemon) and mobile (with Expo) support hot reloading
- Fork the repository
- Create your 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
This project is licensed under the MIT License.
For issues and questions:
- Create an issue in the GitHub repository
- Contact: [email protected]