β οΈ IMPORTANT NOTICE: This is a DEMONSTRATION PROJECT for educational and portfolio purposes only. NOT FOR PRODUCTION USE. This system does not perform actual KYC verification and should not be used for real identity verification, compliance, or any critical applications.
A full-stack KYC (Know Your Customer) validation system built with Node.js and Express that provides real-time verification for Aadhaar, PAN, and Bank Account details. Features a beautiful animated client interface powered by Three.js and GSAP.
This project is a PROTOTYPE and DEMO application intended for:
- Educational purposes and learning
- Portfolio demonstration
- Understanding KYC validation workflows
- Showcasing full-stack development skills
This project is NOT:
- β Production-ready
- β Compliant with actual KYC/AML regulations
- β Performing real identity verification
- β Suitable for handling sensitive personal data
- β Legally compliant for financial services
For production KYC systems, consult with legal experts and use certified KYC service providers.
- β Aadhaar Verification Demo - Validate 12-digit Aadhaar number format
- β PAN Verification Demo - Verify PAN card format
- β Bank Account Verification Demo - Validate account number and IFSC code format
- β Real-time Validation - Instant API responses with comprehensive error handling
- β Animated UI - Three.js particle background with GSAP animations
- β Rate Limiting - Protection against abuse (100 requests per 15 minutes)
- β Secure - Input validation and sanitization on both client and server
- β Dashboard - Live monitoring of validation requests and statistics
Frontend Client: [Deploy URL here]
API Base URL: your/url
Username: admin | Password: admin123
Username: user | Password: user123
Username: demo | Password: demo123
Note: These are demo credentials for testing purposes only. In a production environment, implement proper authentication with hashed passwords and secure session management.
- Demo Disclaimer
- Installation
- Configuration
- API Endpoints
- Usage Examples
- Project Structure
- Technologies Used
- Contributing
- License
- Node.js (v14 or higher)
- npm or yarn
- Tartan API credentials ([Get them here]) - Optional for demo
-
Clone the repository
git clone https://github.com/Xavious2604/kyc-validation-api.git cd kyc-validation-api -
Install dependencies
npm install
-
Set up environment variables
Create a
.envfile in the root directory:PORT=3000 ALLOWED_ORIGINS=http://localhost:3000,https://yourdomain.com
-
Start the server
npm start
-
Access the application
- Dashboard:
http://localhost:3000 - API Health Check:
http://localhost:3000/health
- Dashboard:
| Variable | Description | Required | Default |
|---|---|---|---|
| PORT | Server port | No | 3000 |
| ALLOWED_ORIGINS | CORS allowed origins (comma-separated) | No | * |
kyc-validation-api/
βββ client/ # Frontend files
β βββ client.html # Main HTML file
β βββ script.js # JavaScript logic
β βββ styles.css # Styling
βββ views/ # Server-rendered views
β βββ index.handlebars # Dashboard template
βββ public/ # Static assets
βββ server.js # Express server
βββ .env # Environment variables (not committed)
βββ .gitignore # Git ignore rules
βββ package.json # Dependencies
βββ LICENSE # MIT License
βββ README.md # This file
GET /health
Response:
{
"status": "OK",
"timestamp": "2026-01-03T06:45:00.000Z"
}POST /validate-aadhaar
Content-Type: application/json
Request Body:
{
"aadhaar_number": "123456789012",
"user_id": "user123"
}Response (Success):
{
"success": true,
"data": {
"valid": true,
"name": "John Doe",
"message": "Aadhaar verified successfully"
}
}Response (Error):
{
"success": false,
"error": "Invalid Aadhaar format (must be 12 digits)"
}POST /validate-pan
Content-Type: application/json
Request Body:
{
"pan_number": "ABCDE1234F",
"user_id": "user123"
}Response:
{
"success": true,
"data": {
"valid": true,
"name": "John Doe",
"pan_status": "Active"
}
}POST /validate-bank
Content-Type: application/json
Request Body:
{
"account_number": "12345678901234",
"ifsc_code": "SBIN0001234",
"user_id": "user123"
}Response:
{
"success": true,
"data": {
"valid": true,
"account_name": "John Doe",
"bank_name": "State Bank of India"
}
}# Validate Aadhaar
curl -X POST your/url \
-H "Content-Type: application/json" \
-d '{"aadhaar_number": "123456789012", "user_id": "user123"}'
# Validate PAN
curl -X POST your/url \
-H "Content-Type: application/json" \
-d '{"pan_number": "ABCDE1234F", "user_id": "user123"}'
# Validate Bank Account
curl -X POST your/url \
-H "Content-Type: application/json" \
-d '{"account_number": "12345678901234", "ifsc_code": "SBIN0001234", "user_id": "user123"}'async function validateAadhaar(aadhaarNumber, userId) {
const response = await fetch('your/url', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
aadhaar_number: aadhaarNumber,
user_id: userId
})
});
const result = await response.json();
console.log(result);
}
// Demo usage
validateAadhaar('123456789012', 'user123');import requests
url = "your/url"
payload = {
"aadhaar_number": "123456789012",
"user_id": "user123"
}
response = requests.post(url, json=payload)
print(response.json())- Node.js - Runtime environment
- Express.js - Web framework
- JWT - Token generation for Tartan API
- express-rate-limit - Rate limiting middleware
- node-fetch - HTTP requests
- express-handlebars - Template engine for dashboard
- dotenv - Environment variable management
- HTML5/CSS3 - Structure and styling
- Vanilla JavaScript - Core logic
- Three.js - 3D particle animations
- GSAP - Smooth UI animations
- Anime.js - Advanced animation effects
- Git - Version control
| Field | Format | Example |
|---|---|---|
| Aadhaar | 12 digits | 123456789012 |
| PAN | 5 letters + 4 digits + 1 letter | ABCDE1234F |
| Account Number | 9-18 digits | 12345678901234 |
| IFSC Code | 4 letters + 0 + 6 alphanumeric | SBIN0001234 |
Note: This demo validates FORMAT only, not authenticity. Real KYC systems require government database integration and regulatory compliance.
- Input validation and sanitization
- Rate limiting (100 requests per 15 minutes)
- CORS protection with configurable origins
- Sensitive data masking in logs
- Error handling without information leakage
- Environment-based configuration
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a 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
- Follow existing code style
- Add comments for complex logic
- Update documentation for new features
- Test thoroughly before submitting PR
- Remember this is a demo project - keep it educational
β οΈ Demo-level validation only - No actual identity verificationβ οΈ Client-side authentication is for demonstration purposes onlyβ οΈ No real database integration (in-memory storage only)β οΈ Not compliant with KYC/AML regulationsβ οΈ No encryption for data at restβ οΈ Dashboard statistics reset on server restartβ οΈ No audit trail or compliance logging
If you want to build a production KYC system, consider:
- Legal compliance (KYC/AML regulations)
- Database integration (MongoDB/PostgreSQL with encryption)
- Proper JWT-based authentication with secure sessions
- Government database integration via certified providers
- End-to-end encryption for sensitive data
- Comprehensive audit logging and compliance monitoring
- Regular security audits and penetration testing
- GDPR/data privacy compliance
- Multi-factor authentication
- Role-based access control (RBAC)
- Automated backup and disaster recovery
- API versioning and documentation
- Comprehensive unit and integration tests
- Performance monitoring and alerting
This project is licensed under the MIT License - see the LICENSE file for details.
Mohammed Irfan Shaikh (Xavier Antony)
- π GitHub: @Xavious2604
- πΌ LinkedIn: Mohammed Irfan Shaikh
- π§ Email: 223171@theemcoe.org
- Tartan HQ for providing KYC verification APIs
- Three.js for 3D graphics library
- GSAP for animation framework
- Railway for seamless deployment
- Open source community for inspiration
If you have any questions or need assistance, please:
- Open an issue on GitHub
- Contact via email: 223171@theemcoe.org
- Check the API documentation
For production KYC systems, consult certified KYC service providers and legal experts
Made with β€οΈ for learning and demonstration
β Star this repository if you find it helpful!