CheckMate is a fully modernized full-stack application designed to replace legacy paper-based visitor logs in corporate environments.
It handles end-to-end visitor processing: from initial registration and hardware-locked photo capture, to automated WhatsApp/Email background notifications, secure administrative dashboards, and pre-scheduled visitor entry logic.
The project follows a modular SaaS architecture for scalability:
CheckMate/
├── backend/
│ ├── config/ # DB & Env configurations
│ ├── controllers/ # Request logic (what happens)
│ ├── middlewares/ # Auth, security & error handling
│ ├── models/ # Database schemas (Mongoose)
│ ├── routes/ # API endpoints (URLs)
│ ├── services/ # Business logic (optional but pro)
│ ├── utils/ # Helper functions & scripts
│ └── app.js # Express application setup
├── frontend/ # View Layer (Static HTML/CSS/JS)
├── server.js # Application Entry Point
├── package.json # Root dependencies & scripts
└── .env # Environment Secrets
- Authenticated API Access: Protected by a server-side Auth Middleware requiring a secret token.
- Brute-Force Protection: Implements
express-rate-limiton the login gateway. - Production-Grade Headers: Powered by
Helmet.js. - Encrypted Env Handling: Managed exclusively through environment variables.
- Biometric Identity Capture: Custom JS webcam integration with Cloudinary upload.
- Dynamic Check-in Pass & QR Code: Automated QR generation for secure entry.
- Background Async Notifications: Email via
Nodemailer/Resendand WhatsApp viaTwilio. - Intelligence Dashboard: Live stats, search, filtering, and
.xlsxexporting. - Pre-Clearance Schedule Portal: Pre-approve future guest visits.
- Create a free cluster on MongoDB Atlas.
- Copy your connection string (
mongodb+srv://...).
- Sign in to Render and create a New Web Service.
- Connect this repository.
- Use the following commands:
- Build Command:
npm install - Start Command:
node server.js
- Build Command:
- Add the Environment Variables listed below.
# Core
PORT=3000
MONGODB_URI=your_mongodb_atlas_uri
BASE_URL=https://your-app.onrender.com
ADMIN_PASSWORD=your_secure_pin
ADMIN_SECRET_TOKEN=generate_a_random_long_string
# Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
# Messaging
TWILIO_ACCOUNT_SID=your_sid
TWILIO_AUTH_TOKEN=your_token
TWILIO_WHATSAPP_NUMBER=your_twilio_number
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password
HR_EMAIL=recipient@gmail.com- Ensure Docker is Installed
- Build and Run
docker-compose up -d --build
- Access:
http://localhost:3000
- Clone & Install
git clone https://github.com/aayush2724/CheckMate.git cd CheckMate npm install - Configure .env in the root folder.
- Run
npm run dev
Built with precision and care ✅