| Employee ID | Name | Role | Access Level | Country | Site Code | Department | Mobile | Actions |
|---|
Export complete gate pass data including visitor information, timing, and approval details.
Upload multiple users at once using a CSV file. Download the template first to see the required format.
Confidential: This document contains proprietary and confidential information of Starengts Technologies. Distribution is restricted to authorized personnel only.
The system uses MySQL/MariaDB (version 11.8.2) with a comprehensive relational database schema.
| Table Name | Purpose | Key Fields | Records (Approx.) |
|---|---|---|---|
users |
User authentication & authorization | id, username, email, password, role, org_id | Active: 50-100 |
visitors |
Visitor master data | id, firstName, lastName, email, mobileNumber, idType, idNumber | Active: 1000+ |
gatepasses |
Gate pass records (entry/exit) | id, visitor_id, entry_time, exit_time, status, qr_code | Monthly: 500-1000 |
organizations |
Multi-tenancy organization data | id, org_name, max_users, expiry_date, created_by | Active: 5-10 |
audit_log |
Complete audit trail (all actions) | id, user_id, action, table_name, old_values (JSON), new_values (JSON) | Growing: 10,000+ |
api_rate_limits |
Rate limiting & DDoS protection | identifier, endpoint, request_count, blocked, window_reset_at | Active: 100-500 |
failed_login_attempts |
Security: Track failed logins | username, ip_address, attempt_time, blocked_until | Active: 50-200 |
backup_history |
Database backup logs | backup_file, backup_type, status, file_size_mb, started_at | Weekly: 52/year |
appconfig |
System configuration key-value store | configKey, configValue, category, updatedAt | Static: 20-30 |
documents |
Digital document management | qr_code, name, file_path, uploaded_by, version | Active: 100-300 |
dockings |
Truck docking station management | gate_id, docking_station, status (available/occupied) | Static: 10-20 |
analyticssavedsearches |
User-saved analytics queries | userId, searchName, query, filters (JSON) | Active: 20-50 |
The system implements a comprehensive role-based access control (RBAC) model with 10 distinct user roles.
| Role | Access Level | Permissions | Typical Use Case |
|---|---|---|---|
| Owner | Super Admin | Full system access including organization management, app configuration, all modules | System administrators, IT team |
| Global_Admin | Full Admin | All modules except organization management | Regional administrators, country heads |
| Country_Admin | Full Admin | Same as Global_Admin (country-level administration) | Country-specific administrators |
| Site_Admin | Site Management | Visitor registration, gate pass, status, history, data visualization, digital docs | Site managers, reception supervisors |
| Site_Creator | Site Management | Same as Site_Admin (can create/edit visitors and passes) | Front desk staff, reception |
| Site_Manager | Site Management | Same as Site_Admin | Site operations managers |
| Site_Approver | Site Management | Approve/reject gate passes, view visitor data | Department heads, managers |
| Global_Auditor | Read-Only | View status, history, data visualization, digital docs (no create/edit/delete) | Compliance officers, internal auditors |
| Site_Security | Security Operations | Visitor registration, gate pass, QR scanner, truck registration, status, history | Security guards, gate operators |
| User | Minimal Access | View digital documents, limited access | General employees, contractors |
| Attendance_Master | Attendance Only | QR scanner for employee attendance, digital documents | HR staff, attendance coordinators |
| Service Type | Provider/Technology | Purpose | Status |
|---|---|---|---|
| Email Service | Nodemailer (SMTP) | Password reset OTP, gate pass notifications | Configurable (currently disabled) |
| Face Detection | TensorFlow.js + MediaPipe | Visitor facial verification during check-in | Active (client-side processing) |
| QR Code Generation | qrcode (Node.js library) | Generate unique QR codes for gate passes | Active |
| Image Processing | Sharp | Resize, optimize, and process uploaded photos | Active |
| Thermal Printing | ESC/POS Protocol | Print gate passes on thermal printers | Active (local network) |
| Database Backup | mysqldump | Automated weekly database backups | Active (configurable to daily) |
| Real-time Updates | WebSocket (ws) | Live status updates, notifications | Active |
| RFID Card Reader | PC/SC Lite (@pokusew/pcsclite) | Employee RFID card scanning for attendance | Active (hardware dependent) |
| Package | Version | Purpose | Security Patches |
|---|---|---|---|
| express | 4.18.2 | Web application framework | Up to date |
| mysql2 | 3.6.0 | MySQL database driver | Up to date |
| jsonwebtoken | 9.0.2 | JWT authentication | Up to date |
| bcrypt | 6.0.0 | Password hashing | Up to date |
| sharp | 0.34.3 | Image processing | Up to date |
| winston | 3.11.0 | Logging framework | Up to date |
| express-rate-limit | 7.1.5 | API rate limiting | Up to date |
| express-validator | 7.0.1 | Input validation & sanitization | Up to date |
| cors | 2.8.5 | Cross-origin resource sharing | Up to date |
| dotenv | 17.2.0 | Environment variable management | Up to date |
| multer | 2.0.2 | File upload handling | Up to date |
| nodemailer | 6.10.1 | Email sending | Up to date |
| node-cron | 3.0.3 | Scheduled task automation | Up to date |
| ws | 8.18.3 | WebSocket server | Up to date |
| Library | Version | Purpose |
|---|---|---|
| jQuery | 3.6.0 | DOM manipulation |
| Bootstrap | 4.5.2 | Responsive UI framework |
| Font Awesome | 6.4.0 | Icon library |
| Chart.js | Latest (CDN) | Data visualization & charts |
| TensorFlow.js | 4.22.0 | Machine learning (face detection) |
| MediaPipe Tasks Vision | 0.10.22 | Face detection models |
| Select2 | 4.1.0 | Enhanced select dropdowns |
| Toastify.js | Latest (CDN) | Toast notifications |
| Intl Tel Input | 17.0.13 | International phone number formatting |
The system is designed with extensibility in mind and supports various integration methods.
| Feature | JWT (Current) | Session Cookies | OAuth 2.0 |
|---|---|---|---|
| Scalability | Stateless, horizontally scalable | Requires session store | Scalable |
| Mobile App Support | Excellent | Difficult | Excellent |
| Implementation Complexity | Simple | Simple | Complex |
| Storage Location | Client-side (browser memory/localStorage) | Server-side (session store) | Client-side + Authorization server |
| Performance | Fast (no DB lookup) | Moderate (DB lookup) | Moderate |
| Security | Signed & encrypted, short expiry | Secure if HTTPS + httpOnly | Enterprise-grade |
| Cross-Domain Support | Excellent (CORS) | Difficult | Excellent |
| Best For | APIs, microservices, mobile apps | Traditional web apps | Third-party integrations, SSO |
| Expiry: | 1 hour |
| Purpose: | API authentication |
| Storage: | Browser memory (sessionStorage) |
| Algorithm: | HS256 (HMAC SHA-256) |
Why 1 hour? Balances security (short window for token theft) with usability (minimal re-authentication). Automatically refreshed via refresh token.
| Expiry: | 7 days |
| Purpose: | Obtain new access tokens |
| Storage: | Browser localStorage (HttpOnly preferred) |
| Algorithm: | HS256 (HMAC SHA-256) |
Why 7 days? Users remain logged in for a full work week without re-entering credentials. After 7 days, full re-authentication is required for security.
βββββββββββββββ βββββββββββββββ
β Client β β Server β
β (Browser) β β (Node.js) β
ββββββββ¬βββββββ ββββββββ¬βββββββ
β β
β 1. POST /api/v1/auth/jwt-login β
β { username, password } β
βββββββββββββββββββββββββββββββββββββββββββββββββββ>β
β β
β 2. Verify credentials β
β (bcrypt compare password) β
β β
β 3. Return tokens β
β { accessToken, refreshToken, user } β
β<βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 4. Store tokens in sessionStorage/localStorage β
β β
β 5. API requests with Bearer token β
β Authorization: Bearer β
βββββββββββββββββββββββββββββββββββββββββββββββββββ>β
β β
β 6. Verify JWT signature β
β Extract user info from tokenβ
β β
β 7. Return data β
β<βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 8. When access token expires (1 hour) β
β POST /api/v1/auth/refresh-token β
β { refreshToken } β
βββββββββββββββββββββββββββββββββββββββββββββββββββ>β
β β
β 9. Verify refresh token β
β Issue new access token β
β β
β 10. Return new access token β
β<βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 11. Continue API requests with new token β
β β
β 12. Logout: POST /api/v1/auth/jwt-logout β
β (Clear client-side tokens) β
βββββββββββββββββββββββββββββββββββββββββββββββββββ>β
β β
β 13. Success response β
β<βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
βββββββββ βββββββββ
| Storage Method | Pros | Cons | Used For |
|---|---|---|---|
| sessionStorage | Cleared on tab close, immune to XSS in other tabs | Lost on tab close (user must re-login) | Access Token (current) |
| localStorage | Persists across browser sessions, convenient | Vulnerable to XSS attacks if script injection occurs | Refresh Token (current) |
| httpOnly Cookie | Not accessible via JavaScript, immune to XSS | Vulnerable to CSRF if not properly configured | Future enhancement (recommended) |
| Memory Only | Most secure, never written to disk | Lost on page refresh (poor UX) | Not used (poor usability) |
Answer: The system implements multi-layered protection:
failed_login_attempts table with IP address and timestampAnswer: JWT tokens have built-in security mitigations:
Answer: Data protection follows industry best practices:
Answer: Comprehensive audit logging is implemented:
audit_log tableAnswer: Disaster recovery strategy includes:
backup_history table with file size and statusAnswer: Compliance measures implemented:
Answer: Defense-in-depth security approach:
Answer: RBAC implemented at multiple layers:
This checklist ensures all security measures are properly configured before go-live.
| Status | Security Item | Verification Method | Responsibility |
|---|---|---|---|
| β | SSL/TLS certificate installed and valid | Access https://[domain] - verify green padlock | DevOps/SysAdmin |
| β | JWT_SECRET changed from default | Verify .env file has 256-bit random key | Developer |
| β | Database password is strong (20+ chars) | Check .env DB_PASSWORD | DBA |
| β | Default admin password changed | Login as owner, verify password changed | Security Officer |
| β | Firewall configured (only ports 80, 443, 3306) | Run: sudo ufw status | SysAdmin |
| β | Database accessible only from app server | Verify firewall rule: allow 3306 from app IP only | DBA/SysAdmin |
| β | VPN required for admin access | Disconnect VPN, verify cannot access admin panel | Network Admin |
| β | IP whitelisting configured | Check nginx/firewall rules for IP restrictions | SysAdmin |
| β | Backup service running and tested | Check /backups directory for recent .sql files | DBA |
| β οΈ | Rate limiting enabled | Send 6 login requests rapidly - verify 429 error | Developer |
| β οΈ | Input validation on all endpoints | Run automated API security tests | QA/Security |
| β | Security headers configured | Run: curl -I https://[domain] | grep -i security | DevOps |
| β | Audit logging enabled | Create user, verify entry in audit_log table | Developer |
| β | Failed login tracking active | Login with wrong password 5x, verify lockout | Developer |
| β | CORS limited to production domains | Check server.js CORS config | Developer |
| β | Sensitive data not logged (passwords, tokens) | Review winston logger config + log files | Developer |
| β | Production environment variables set | Verify NODE_ENV=production in .env | DevOps |
| β | Unnecessary services disabled | Run: sudo systemctl list-units --type=service | SysAdmin |
| β | OS security patches up to date | Run: sudo apt update && apt list --upgradable | SysAdmin |
| β | Node.js and npm packages updated | Run: npm audit | Developer |
Legend:
| Data Type | Encryption Method | Key Management | Status |
|---|---|---|---|
| Data in Transit (API) | TLS 1.2+ (HTTPS) | SSL certificate managed by VPS provider | Active |
| Data in Transit (WebSocket) | WSS (WebSocket Secure) | Same SSL certificate as HTTPS | Active |
| Passwords | bcrypt hashing (irreversible) | Salt auto-generated per password | Active |
| JWT Tokens | HS256 signature (not encrypted) | Secret key in .env (JWT_SECRET) | Active |
| Database at Rest | File system encryption (OS level) | LUKS/dm-crypt or VPS provider | Optional |
| Backup Files | AES-256 encryption (optional) | Backup encryption key in .env | Configurable |
| Uploaded Files (photos) | File system permissions (644) | N/A (not encrypted) | Not encrypted |
| Backup Type: | Full database dump (mysqldump) |
| Frequency: | Weekly (configurable to daily) |
| Schedule: | Every Sunday at 2:00 AM (node-cron) |
| Storage Location: | Local: /backups/ directory on VPS |
| Retention: | 90 days (older backups manually archived) |
| Notification: | Email notification on backup success/failure (if email enabled) |
| Verification: | Backup size and timestamp logged in backup_history table |
sudo systemctl stop gatepassls -lh /backups/*.sqlmysql -u root -p starengts_gatepass < /backups/backup_2025-12-08.sqlsudo systemctl start gatepass
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Development βββββ>β Testing βββββ>β Staging βββββ>β Production β
β (Local) β β (QA Server) β β (Pre-Prod) β β (VPS Live) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β β
β β’ Feature dev β β’ Unit testing β β’ UAT β β’ Live traffic
β β’ Code changes β β’ API testing β β’ Performance test β β’ Monitoring
β β’ Git commits β β’ Security scan β β’ Load testing β β’ Backups
β β’ npm run dev β β’ Bug fixes β β’ Final approval β β’ npm start
| Repository: | Git (private repository) |
| Branching Strategy: | main (production), develop (staging), feature/* branches |
| Commit Convention: | Conventional Commits (feat:, fix:, docs:, refactor:) |
| Code Review: | Pull requests required for main branch merges |
| CI/CD: | Manual deployment (can be automated with GitHub Actions/Jenkins) |
npm audit to check for vulnerabilitiesnpm install --productionsudo systemctl restart gatepasstail -f /var/log/gatepass.log| Frequency | Task | Responsibility | Estimated Time |
|---|---|---|---|
| Daily | Monitor application logs for errors | DevOps/SysAdmin | 15 minutes |
| Daily | Verify backup completion (if daily backups enabled) | DBA | 5 minutes |
| Weekly | Review audit logs for unusual activity | Security Officer | 30 minutes |
| Weekly | Check disk space usage on VPS | SysAdmin | 10 minutes |
| Weekly | Review failed login attempts and blocked IPs | Security Officer | 15 minutes |
| Monthly | Update npm packages (security patches only) | Developer | 1-2 hours |
| Monthly | Test backup restoration on staging server | DBA | 2-3 hours |
| Monthly | Archive old audit logs (>90 days) | DBA | 30 minutes |
| Monthly | Review and optimize slow database queries | DBA/Developer | 1-2 hours |
| Quarterly | Major dependency updates (test thoroughly) | Developer | 4-8 hours |
| Quarterly | Security vulnerability assessment | Security Team | 4-8 hours |
| Quarterly | Performance tuning and optimization | Developer/DBA | 4-8 hours |
| Quarterly | User access review (remove inactive users) | HR/Security Officer | 2-3 hours |
| Annually | Full disaster recovery drill (test restoration) | IT Team | 8-12 hours |
| Annually | Third-party penetration testing | External Vendor | 40-80 hours |
| Annually | SSL certificate renewal | SysAdmin/DevOps | 1-2 hours |
| As Needed | Hot fixes for critical bugs | Developer | Varies |
| As Needed | User training and onboarding | Trainer/Admin | 2-4 hours per session |
| Document Type | Location | Audience | Update Frequency |
|---|---|---|---|
| System Documentation (This Document) | Admin Panel > System Documentation | IT Governance, Auditors | Quarterly |
| API Documentation | /api-docs (Swagger UI) | Developers, Integration Partners | Every release |
| User Manual | /public/user-manual.pdf (to be created) | End Users (Admin, Security, Reception) | Every major release |
| Installation Guide | /INSTALLATION.md (Git repository) | DevOps, SysAdmins | Every major release |
| Database Schema | /database/schema.sql (Git repository) | Developers, DBAs | Every schema change |
| Runbook (Operational Procedures) | /docs/runbook.md (to be created) | DevOps, Support Team | Quarterly |
| Change Log | /CHANGELOG.md (Git repository) | All stakeholders | Every release |
| Code Comments | Inline in source code | Developers | Continuous |
| Tier | Scope | Response Time | Resolution Time (Target) |
|---|---|---|---|
| Tier 1 (Helpdesk) | User questions, password resets, basic troubleshooting | 2 hours during business hours | Same day |
| Tier 2 (Technical Support) | Configuration changes, data issues, module errors | 4 hours during business hours | 1-2 business days |
| Tier 3 (Development Team) | Bugs, feature requests, code changes, integrations | 1 business day | 1-2 weeks (depends on complexity) |
| Critical Incident | System down, data loss, security breach | 30 minutes (24/7) | 4 hours (RTO) |
User Issue
β
βββ> Tier 1 (Helpdesk) ββ> Resolve or Escalate
β β
ββββββββββββββββββββββββββββββββ΄ββ> Tier 2 (Technical Support) ββ> Resolve or Escalate
β
βββ> Tier 3 (Development Team) ββ> Fix & Deploy
β
βββ> Critical? ββ> Emergency Hotfix
| Role | Training Topics | Duration | Format |
|---|---|---|---|
| Site Security (Gate) | Visitor registration, QR scanning, gate pass approval, truck entry | 2-3 hours | Hands-on + video |
| Reception Staff | Visitor registration, gate pass creation, photo capture, digital docs | 2-3 hours | Hands-on + video |
| Site Admin | User management, reports, analytics, data visualization | 4-5 hours | Workshop + documentation |
| Owner/Global Admin | Full system administration, organization management, app configuration, backups | 8-10 hours | Workshop + shadowing |
| IT/DevOps Team | Server setup, deployment, monitoring, troubleshooting, backup restoration | 16-20 hours | Technical training + runbook |
| Presentation Layer | HTML5, CSS3, JavaScript (Vanilla), Bootstrap 4.5.2, Font Awesome 6.4.0 |
| Client-Side Libraries | jQuery 3.6.0, Chart.js, TensorFlow.js 4.22.0, MediaPipe, Select2, Toastify.js |
| Application Layer | Node.js (LTS), Express.js 4.18.2 |
| API Layer | RESTful API (JSON), WebSocket (ws 8.18.3), Swagger API Docs |
| Security Layer | JWT (jsonwebtoken 9.0.2), bcrypt 6.0.0, express-rate-limit 7.1.5, express-validator 7.0.1 |
| Business Logic | Custom JavaScript modules (main.js 16,000+ lines) |
| Database Layer | MySQL 2 (mysql2 3.6.0 driver), MariaDB 11.8.2 |
| File Storage | Local File System (/public/uploads/), Sharp 0.34.3 (image processing) |
| Infrastructure | VPS/Dedicated Server, Linux (Ubuntu/Debian), Nginx/Apache (reverse proxy) |
| Networking | SSL/TLS (HTTPS), VPN Access, Firewall (ufw/iptables), IP Whitelisting |
| Monitoring & Logging | Winston 3.11.0, Custom audit logging, Error tracking |
| Automation | node-cron 3.0.3 (scheduled tasks), Automated backups (mysqldump 3.2.0) |
| DevOps | Git (version control), npm (package management), systemd (process management) |
| Technology | Why Chosen | Alternatives Considered |
|---|---|---|
| Node.js + Express | Fast development, JavaScript full-stack, excellent async I/O, large ecosystem | Python/Django, Java/Spring, PHP/Laravel |
| MySQL/MariaDB | Mature, reliable, ACID compliant, strong community support, familiar to team | PostgreSQL, MongoDB, Microsoft SQL Server |
| JWT Authentication | Stateless, scalable, mobile-friendly, industry standard for APIs | Session cookies, OAuth 2.0, SAML |
| Vanilla JavaScript (Frontend) | No framework bloat, full control, faster performance, easier to maintain | React, Vue.js, Angular |
| Bootstrap 4 | Responsive out-of-the-box, minimal custom CSS, well-documented | Tailwind CSS, Material-UI, Foundation |
| TensorFlow.js | Client-side face detection (no server load), privacy-friendly (data stays on device) | Server-side OpenCV, AWS Rekognition, Face++ |
| Hosting Type: | VPS/Dedicated Server |
| Server Location: | India (on-premise/data center) |
| IP Address: | 192.168.1.43 (internal) + public IP (whitelisted access) |
| Operating System: | Linux (Ubuntu 20.04 LTS or Debian 11) |
| CPU: | 4-8 vCPUs (recommended for 100+ concurrent users) |
| RAM: | 8-16 GB (recommended minimum: 8GB) |
| Storage: | 100-500 GB SSD (fast I/O for database + uploads) |
| Network: | 1 Gbps port, static IP, DDoS protection |
| Uptime SLA: | 99.9% (managed by hosting provider) |
INTERNET
β
βΌ
ββββββββββββββββββββ
β Firewall β
β (IP Whitelist) β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β VPN Gateway β
β (Required for β
β Admin Access) β
ββββββββββ¬ββββββββββ
β
βββββββββββββββββΌββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββ ββββββββββββββ ββββββββββββββ
β HTTPS β β WebSocket β β SSH (Port β
β (Port 443) β β (Port 443) β β 22) β
βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ
β β β
βββββββββββββββββ΄ββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Nginx/Apache β
β (Reverse Proxy) β
β + SSL Terminationβ
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Node.js Server β
β (Port 3001) β
β + Express.js β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β MySQL/MariaDB β
β (Port 3306) β
β - Localhost onlyβ
β - No external β
β access β
ββββββββββββββββββββ
| Zone | Components | Access Control | Security Level |
|---|---|---|---|
| DMZ (Public) | Web server (HTTPS), API endpoints | IP whitelisted + VPN for admin | Medium |
| Application Zone | Node.js application server | Accessed only via reverse proxy | High |
| Database Zone | MySQL/MariaDB database server | Localhost only (127.0.0.1) | Critical |
| Backup Zone | Backup storage directory | Root access only | Critical |
| Standard/Framework | Requirement | Compliance Status | Notes |
|---|---|---|---|
| ISO 27001 (Information Security) | Access control, encryption, audit logging | Compliant | RBAC, JWT, SSL/TLS, comprehensive audit logs |
| GDPR / DPDPA (Data Protection) | Consent, right to erasure, data minimization | Partially Compliant | Can delete visitor records; explicit consent checkbox recommended |
| NIST Cybersecurity Framework | Identify, Protect, Detect, Respond, Recover | Compliant | Risk assessment, security controls, incident response, backups |
| OWASP Top 10 | Protection against common web vulnerabilities | Compliant | SQL injection prevention, XSS protection, secure authentication |
| PCI DSS (if handling payments) | Secure cardholder data | Not Applicable | System does not handle payment card data |
| SOC 2 Type II | Security, availability, confidentiality controls | Not Certified | Controls in place; formal audit not conducted |
| Component | Current State | Future State | Timeline |
|---|---|---|---|
| Architecture | Monolithic (single server) | Microservices (containerized) | 12-18 months |
| Database | Single MySQL instance | Master-slave replication + read replicas | 6-9 months |
| File Storage | Local file system | Cloud object storage (S3/Azure Blob) | 6-9 months |
| Frontend | Vanilla JavaScript SPA | Modern framework (React/Vue) for mobile app API | 12-15 months |
| API | RESTful JSON API | GraphQL for flexible queries | 18-24 months |
| Deployment | Manual deployment | CI/CD pipeline (GitHub Actions/Jenkins) | 3-6 months |
| Monitoring | Winston logs + manual review | ELK Stack (Elasticsearch, Logstash, Kibana) + Grafana | 6-9 months |
| Backup | Weekly mysqldump (local storage) | Daily incremental backups + cloud replication | Immediate (configurable now) |
| Regulation | Applicability | Compliance Status | Action Items |
|---|---|---|---|
| DPDPA 2023 (India) | Handles personal data of visitors | Partially Compliant | Add explicit consent checkbox, implement data retention policy |
| GDPR (EU) | If EU visitors are processed | Partially Compliant | Same as DPDPA + data processing agreement |
| IT Act 2000 (India) | Electronic records and digital signatures | Compliant | N/A (audit logs maintained) |
| ISO 27001 | Information security management | Controls Implemented | Formal certification audit (optional) |
| Labour Laws (Attendance) | Employee attendance tracking | Compliant | N/A (records maintained as per law) |
| Risk | Likelihood | Impact | Mitigation Strategy |
|---|---|---|---|
| Data Breach (Unauthorized Access) | Medium | High | VPN + IP whitelisting, strong passwords, 2FA (planned), audit logging |
| Server Failure / Hardware Crash | Medium | High | Weekly backups (configurable to daily), disaster recovery plan, RTO: 4 hours |
| SQL Injection Attack | Low | High | Parameterized queries, input validation, no dynamic SQL |
| DDoS Attack | Medium | Medium | Rate limiting (100 req/15min), firewall, VPS DDoS protection |
| Insider Threat (Malicious Admin) | Low | High | Audit logging (all actions tracked), role-based permissions, background checks |
| Dependency Vulnerability | Medium | Medium | Monthly npm audit, automated security alerts, rapid patching |
| Accidental Data Deletion | Low | Medium | Backups, audit trail, soft delete (can be implemented), confirmation prompts |
| Metric | Current Value | Target (SLA) | Status |
|---|---|---|---|
| Average Page Load Time | 1.5-2.5 seconds | < 3 seconds | β Meeting |
| API Response Time (95th percentile) | 200-500 ms | < 1 second | β Meeting |
| Database Query Time (avg) | 50-100 ms | < 200 ms | β Meeting |
| Concurrent Users Supported | 100-150 users | 200+ users | β οΈ Near capacity |
| System Uptime (monthly) | 99.5% | 99.9% | β οΈ Below target |
| Database Size | 2-5 GB | < 100 GB | β Well within limits |
| File Storage Usage | 10-20 GB | < 500 GB | β Well within limits |