Here are some images from the project:
A comprehensive digital outpass management system for educational institutions, enabling students and visitors to request permissions for leaving campus, with an admin approval workflow.
The Outpass Management System replaces traditional paper-based permission slips with a modern web application. Students and visitors can request outpasses digitally, while administrators can review and approve/reject requests in real-time. The system maintains a complete history of all requests with timestamped records
- 🔐 Secure Registration - OTP-based email verification
- 📝 Request Outpass - Submit requests with reason and time range
- ⏱️ Overlap Prevention - Client-side validation prevents double-booking
- 📊 Request History - View all past outpasses with status tracking
- 📄 PDF Generation - Download outpass details as PDF documents
- 🔔 Status Tracking - Monitor pending, approved, and rejected requests
- 🎫 Guest Registration - Separate workflow for non-students
- 📱 Contact Information - Maintain visitor records with phone numbers
- 🚪 Entry Pass Requests - Request temporary campus access
- 👥 Unified Dashboard - Manage both student and visitor requests
- ✅ Quick Approval - One-click approve/reject actions
- 🔍 Detailed View - See requester information with populated data
- 📈 Request Overview - View all pending requests at a glance
- React 18.3.1 - UI framework
- React Router 6.26 - Client-side routing
- Tailwind CSS 3.4 - Styling framework
- Axios 1.7 - HTTP client
- jsPDF - PDF generation
- React Modal - Modal dialogs
- Node.js - Runtime environment
- Express 4.19 - Web framework
- MongoDB - NoSQL database
- Mongoose 8.6 - ODM for MongoDB
- JWT - Authentication tokens
- Bcrypt - Password hashing
- Nodemailer - Email service for OTP
- Node.js (v14 or higher)
- MongoDB (local or Atlas)
- Gmail account (for OTP emails)
-
Clone the repository
git clone https://github.com/ayush121314/Outpass.git cd Outpass -
Backend Setup
cd backend npm installCreate
.envfile:PORT=5000 MONGO_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret_key EMAIL_USER=your_gmail@gmail.com EMAIL_PASS=your_gmail_app_password
Start backend:
npm start
-
Frontend Setup
cd frontend npm installCreate
.envfile:REACT_APP_API_URL=http://localhost:5000
Start frontend:
npm start
-
Access the application
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:5000
- Frontend:
Comprehensive documentation is available in the following files:
- PROJECT_OVERVIEW.md - High-level introduction in simple terms
- INTERVIEW_GUIDE.md - Technical interview preparation guide
- TECHNICAL_DEEP_DIVE.md - Exhaustive technical analysis
- END_TO_END_FLOWS.md - Line-by-line feature flow documentation
For admin login, use the following credentials (as configured in the backend):
- Email:
admin1@gmail.com - Password:
admin1password
Note: These are hardcoded credentials for demo purposes. Update in production.
Outpass/
├── backend/
│ ├── config/ # Database configuration
│ ├── controllers/ # Request handlers
│ ├── middlewares/ # Auth & validation
│ ├── models/ # MongoDB schemas
│ ├── routes/ # API endpoints
│ ├── utils/ # Helper functions
│ └── index.js # Entry point
├── frontend/
│ ├── public/ # Static files
│ └── src/
│ ├── Components/ # React components
│ ├── context/ # Global state
│ └── App.js # Main component
└── images/ # Screenshots
- Password Hashing - Bcrypt with 10 salt rounds
- JWT Authentication - Stateless token-based auth
- OTP Verification - Email-based 2FA for registration
- Input Validation - Both client and server-side
- CORS Protection - Configured allowed origins
- Email Enumeration Prevention - Generic error messages
- JWT tokens don't expire (requires implementation)
- No WebSocket for real-time updates (requires page refresh)
- Admin endpoint lacks authentication middleware
- No transaction support for concurrent updates
Contributions are welcome! Please feel free to submit a Pull Request.
Ayush Singh Chauhan
- GitHub: @ayush121314
- Built with the MERN stack
- UI inspired by modern design principles
- Email service powered by Nodemailer




