Skip to content

VisaEase is a modern web application for visa applications, consultations, and immigration services.

Notifications You must be signed in to change notification settings

radheshpai87/visa-ease

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

66 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒ VisaEase - Comprehensive Visa Application & Management Platform

Deployed on Vercel React Node.js MongoDB

VisaEase is a modern, full-stack web application designed to streamline visa applications, consultations, and immigration services. Built with React 19, Express.js, and MongoDB, it provides a comprehensive platform for applicants, visa officers, and administrators to manage the entire visa application lifecycle.


๐Ÿ“‘ Table of Contents


โœจ Features

๐ŸŽฏ Core Functionality

For Visa Applicants

  • User Registration & Authentication with JWT tokens and secure password hashing
  • Multi-step Visa Application Form with real-time validation
  • Document Upload with Cloudinary integration (passport, photos, supporting docs)
  • Application Tracking with real-time status updates
  • Application History with detailed timeline view
  • Profile Management with editable personal information
  • Consultation Booking for immigration services
  • Visa Inquiry Form for pre-application questions

For Visa Officers

  • Dedicated Officer Dashboard with application queue
  • Application Review System with approve/reject/request info capabilities
  • Document Verification with inline viewing
  • Application Assignment - automatic or manual assignment
  • Review Comments and feedback system
  • CSV Export functionality for reporting
  • Application Filtering by status and visa type
  • Performance Analytics for processed applications

For Administrators

  • Comprehensive Admin Dashboard with 6 management tabs:
    • Overview & Analytics: Statistics, charts, and trends
    • User Management: Create, edit, delete users (applicants, officers, admins)
    • Application Management: View all applications, delete, track
    • Visa Type Configuration: Create/edit visa types, fees, requirements
    • Document Management: View all documents, verify, delete
    • Audit Logs: Track all system actions and user activities
  • Advanced Analytics with Recharts visualizations
  • System-wide Search and filtering capabilities
  • Bulk Operations for efficient management
  • Admin Secret Key registration for security

๐ŸŽจ Design & UX

  • Modern UI with Tailwind CSS and custom gradients
  • Role-based Theming: Red (Applicants), Blue (Officers), Purple (Admins)
  • Responsive Design - mobile, tablet, and desktop optimized
  • Animated Backgrounds with decorative elements
  • Loading States with custom spinners
  • Empty States with helpful guidance
  • Toast Notifications for user feedback
  • Password Strength Meter with zxcvbn
  • Form Validation with real-time feedback

๐Ÿ”’ Security Features

  • JWT Authentication with HTTP-only token storage
  • Role-based Authorization (RBAC) middleware
  • Password Encryption with bcryptjs
  • Admin Secret Key for admin registration
  • Protected Routes on frontend and backend
  • CORS Configuration for secure API access
  • Input Validation with Mongoose schemas
  • XSS Protection through sanitized inputs

๐Ÿ› ๏ธ Tech Stack

Frontend

Technology Version Purpose
React 19.0.0 UI framework with latest features
Vite 6.2.0 Build tool and dev server
React Router 7.5.1 Client-side routing
Tailwind CSS 4.1.5 Utility-first styling
Framer Motion 12.9.4 Animation library
GSAP 3.13.0 Advanced animations
Recharts 3.3.0 Data visualization charts
React Icons 5.5.0 Icon library
Axios 1.13.1 HTTP client
zxcvbn 4.4.2 Password strength estimation
PapaParse 5.5.3 CSV parsing/generation

Backend

Technology Version Purpose
Node.js - JavaScript runtime
Express 5.1.0 Web application framework
MongoDB - NoSQL database
Mongoose 8.14.2 ODM for MongoDB
JWT 9.0.2 Token-based authentication
bcryptjs 3.0.2 Password hashing
Cloudinary 1.41.3 Cloud image storage
Multer 2.0.2 File upload handling
CORS 2.8.5 Cross-origin resource sharing
dotenv 16.5.0 Environment variable management

DevOps & Tools

  • Vercel - Deployment platform
  • MongoDB Atlas - Cloud database hosting
  • ESLint - Code linting
  • Concurrently - Run multiple commands
  • Git - Version control

๐Ÿ“ Project Structure

visa-page-pallavi/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ฑ Frontend (React + Vite)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ” Authentication
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Login.jsx              # User login (2-column, blue)
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AdminAuth.jsx          # Admin login (purple/red)
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AdminRegister.jsx      # Admin registration
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AuthBackground.jsx     # Animated background
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ProtectedRoute.jsx     # Route protection
โ”‚   โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ‘ค Applicant Portal
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ApplicantDashboard.jsx # Dashboard (red theme)
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ VisaApplicationForm.jsx # Application form
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ DocumentUpload.jsx      # Document upload
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ApplicationHistory.jsx  # Past applications
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Profile.jsx             # Profile management
โ”‚   โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ‘ฎ Officer Portal
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ OfficerDashboard.jsx    # Dashboard (blue theme)
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ OfficerReviewForm.jsx   # Review form
โ”‚   โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ‘‘ Admin Portal
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AdminDashboard.jsx      # Dashboard (purple theme)
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   # 6 Tabs: Overview, Users, Applications,
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   #         Visa Types, Documents, Audit
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Analytics.jsx           # Analytics charts
โ”‚   โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ  Landing Pages
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ Home.jsx                # Landing page
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ Navbar.jsx              # Navigation
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ Footer.jsx              # Footer
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ About.jsx               # About page
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ Services.jsx            # Services page
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ Contact.jsx             # Contact page
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ Blog.jsx                # Blog page
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ context/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ AuthContext.jsx             # Auth state management
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.js                    # Axios config
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ App.jsx                         # Main app component
โ”‚   โ”‚   โ””โ”€โ”€ main.jsx                        # Entry point
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ public/
โ”‚   โ”‚   โ””โ”€โ”€ favicon.png
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ index.html
โ”‚   โ”œโ”€โ”€ vite.config.js
โ”‚   โ””โ”€โ”€ tailwind.config.js
โ”‚
โ”œโ”€โ”€ ๐Ÿ”ง Backend (Express + MongoDB)
โ”‚   โ””โ”€โ”€ server/
โ”‚       โ”œโ”€โ”€ server.js                       # Express server entry
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ config/
โ”‚       โ”‚   โ”œโ”€โ”€ db.js                       # MongoDB connection
โ”‚       โ”‚   โ””โ”€โ”€ cloudinary.js               # Cloudinary config
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ models/                         # Mongoose schemas
โ”‚       โ”‚   โ”œโ”€โ”€ User.js                     # User model
โ”‚       โ”‚   โ”œโ”€โ”€ Applicant.js                # Applicant profile
โ”‚       โ”‚   โ”œโ”€โ”€ Officer.js                  # Officer profile
โ”‚       โ”‚   โ”œโ”€โ”€ VisaApplication.js          # Application
โ”‚       โ”‚   โ”œโ”€โ”€ ApplicationStatus.js        # Status enum
โ”‚       โ”‚   โ”œโ”€โ”€ VisaType.js                 # Visa types
โ”‚       โ”‚   โ”œโ”€โ”€ Document.js                 # Documents
โ”‚       โ”‚   โ””โ”€โ”€ Review.js                   # Reviews
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ controllers/                    # Business logic
โ”‚       โ”‚   โ”œโ”€โ”€ authController.js           # Authentication
โ”‚       โ”‚   โ”œโ”€โ”€ applicationController.js    # Applications
โ”‚       โ”‚   โ”œโ”€โ”€ documentController.js       # Documents
โ”‚       โ”‚   โ”œโ”€โ”€ reviewController.js         # Reviews
โ”‚       โ”‚   โ””โ”€โ”€ adminController.js          # Admin operations
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ routes/                         # API routes
โ”‚       โ”‚   โ”œโ”€โ”€ auth.js                     # /api/auth/*
โ”‚       โ”‚   โ”œโ”€โ”€ applicationRoutes.js        # /api/applications/*
โ”‚       โ”‚   โ”œโ”€โ”€ documentRoutes.js           # /api/documents/*
โ”‚       โ”‚   โ”œโ”€โ”€ reviewRoutes.js             # /api/reviews/*
โ”‚       โ”‚   โ””โ”€โ”€ adminRoutes.js              # /api/admin/*
โ”‚       โ”‚
โ”‚       โ”œโ”€โ”€ middleware/
โ”‚       โ”‚   โ””โ”€โ”€ authMiddleware.js           # JWT + RBAC
โ”‚       โ”‚
โ”‚       โ””โ”€โ”€ utils/
โ”‚           โ”œโ”€โ”€ seeder.js                   # Database seeding
โ”‚           โ””โ”€โ”€ users.js                    # Seed user data
โ”‚
โ”œโ”€โ”€ ๐Ÿ“œ Configuration
โ”‚   โ”œโ”€โ”€ package.json                        # Dependencies
โ”‚   โ”œโ”€โ”€ .env                                # Environment variables
โ”‚   โ”œโ”€โ”€ .env.example                        # Environment template
โ”‚   โ”œโ”€โ”€ vercel.json                         # Vercel config
โ”‚   โ””โ”€โ”€ .gitignore
โ”‚
โ””โ”€โ”€ README.md                               # This file

๐Ÿš€ Installation & Setup

Prerequisites

  • Node.js v16+ (Download)
  • MongoDB Atlas account (Sign up)
  • Cloudinary account (Sign up)
  • Git for version control

Step-by-Step Installation

1. Clone the Repository

git clone https://github.com/radheshpai87/visa-page-pallavi.git
cd visa-page-pallavi

2. Install Dependencies

npm install

3. Environment Variables

Create a .env file in the root:

# MongoDB Connection
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/visaease?retryWrites=true&w=majority

# JWT Secret
JWT_SECRET=your_super_secret_jwt_key

# Admin Secret Key
ADMIN_SECRET_KEY=your_admin_secret_key

# Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret

# Server
PORT=5000
NODE_ENV=development

4. Seed Database (Optional)

npm run server:seed

Creates sample users:

  • Applicant: applicant@test.com / password123
  • Officer: officer@test.com / password123
  • Admin: admin@test.com / password123

5. Run the Application

Both frontend & backend:

npm run dev:all

Or separately:

# Terminal 1
npm run server

# Terminal 2
npm run dev

6. Access the App


๐Ÿ“ก API Documentation

Base URL

Production: https://visa-ease.vercel.app/api
Development: http://localhost:5000/api

Authentication

POST /api/auth/register

Register new user

Body:

{
  "username": "john_doe",
  "email": "john@example.com",
  "password": "SecurePass123!",
  "phone": "+1234567890",
  "role": "applicant"
}

POST /api/auth/login

Login user

Body:

{
  "email": "john@example.com",
  "password": "SecurePass123!"
}

POST /api/auth/admin-register

Register admin (requires secret key)

Body:

{
  "username": "admin",
  "email": "admin@example.com",
  "password": "AdminPass123!",
  "adminSecretKey": "your_secret_key"
}

GET /api/auth/me

Get current user

Headers: Authorization: Bearer <token>

Applications

POST /api/applications

Create application (Applicant)

GET /api/applications

Get applications

GET /api/applications/:id

Get single application

PATCH /api/applications/:id/status

Update status (Officer/Admin)

DELETE /api/applications/:id

Delete application (Admin)

Documents

POST /api/documents/upload

Upload documents

GET /api/documents/application/:id

Get application documents

DELETE /api/documents/:id

Delete document (Admin)

Admin

GET /api/admin/statistics

System statistics

GET /api/admin/users

Get all users

POST /api/admin/users

Create user

PATCH /api/admin/users/:id

Update user

DELETE /api/admin/users/:id

Delete user


๐Ÿ‘ฅ User Roles & Permissions

Role Hierarchy

๐ŸŸช Admin (Full Access)
  โ”œโ”€โ”€ Manage Users
  โ”œโ”€โ”€ Manage Applications
  โ”œโ”€โ”€ Configure Visa Types
  โ”œโ”€โ”€ View Analytics
  โ””โ”€โ”€ Audit Logs

๐ŸŸฆ Officer (Review Authority)
  โ”œโ”€โ”€ Review Applications
  โ”œโ”€โ”€ Update Status
  โ”œโ”€โ”€ Add Comments
  โ””โ”€โ”€ Export Data (CSV)

๐ŸŸฅ Applicant (End User)
  โ”œโ”€โ”€ Create Applications
  โ”œโ”€โ”€ Upload Documents
  โ”œโ”€โ”€ Track Status
  โ””โ”€โ”€ View History

Permission Matrix

Feature Applicant Officer Admin
Register/Login โœ… โœ… โœ… (secret)
Create Application โœ… โŒ โŒ
View Own Apps โœ… โŒ โŒ
Review Apps โŒ โœ… โœ…
Change Status โŒ โœ… โœ…
Upload Docs โœ… โŒ โŒ
Delete Docs โŒ โŒ โœ…
View All Apps โŒ โŒ โœ…
Manage Users โŒ โŒ โœ…
View Analytics โŒ Limited โœ…
Export CSV โŒ โœ… โœ…

๐Ÿ—„๏ธ Database Schema

Models

User - Authentication

  • username, email, password (hashed), role, phone

Applicant - Profile

  • user_id, first_name, last_name, passport_number, dob, nationality

Officer - Profile

  • user_id, badge_number, department, position

VisaApplication - Applications

  • applicant_id, type_id, status_id, officer_id, application_date

Document - Files

  • application_id, document_type, file_path (Cloudinary), verified

Review - Comments

  • application_id, officer_id, rating, comments, recommendation

VisaType - Configuration

  • name, fee, duration_days, required_docs_list

ApplicationStatus - Status Enum

  • name (Pending, In Review, Approved, Rejected), description, color

๐Ÿšข Deployment

Vercel Deployment

  1. Push to GitHub
git add .
git commit -m "Deploy to Vercel"
git push origin main
  1. Connect to Vercel

  2. Add Environment Variables

    • MONGO_URI
    • JWT_SECRET
    • ADMIN_SECRET_KEY
    • CLOUDINARY_CLOUD_NAME
    • CLOUDINARY_API_KEY
    • CLOUDINARY_API_SECRET
    • NODE_ENV=production
  3. Deploy

    • Click "Deploy"
    • Wait for build completion

Post-Deployment Checklist

  • Test authentication flows
  • Verify file uploads
  • Check API endpoints
  • Test role-based access
  • Verify database connection
  • Test on mobile devices
  • Enable Vercel Analytics

๐Ÿค Contributing

We welcome contributions!

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing
  3. Make changes
  4. Test thoroughly: npm run dev:all
  5. Commit: git commit -m "Add feature"
  6. Push: git push origin feature/amazing
  7. Open Pull Request

Code Style

  • Use ES6+ syntax
  • Follow React Hooks best practices
  • Use async/await
  • Add meaningful comments
  • Keep components focused
  • Use Tailwind CSS for styling

๐Ÿ“„ License

This project is proprietary software. All rights reserved.


๐Ÿ‘จโ€๐Ÿ’ป Author

Radhesh Pai


๐Ÿ™ Acknowledgments

  • React team for React 19
  • Vercel for hosting
  • MongoDB for database
  • Cloudinary for storage
  • Tailwind CSS for styling
  • All open-source contributors

๐Ÿ”ฎ Future Enhancements

  • Email notifications
  • SMS alerts (Twilio)
  • Payment gateway
  • Multi-language support (i18n)
  • Document OCR verification
  • Video consultations
  • Mobile app (React Native)
  • Real-time chat
  • 2FA authentication
  • Social login (OAuth)
  • Advanced analytics
  • Automated testing

Last Updated: November 2025

Happy Coding! ๐Ÿš€

About

VisaEase is a modern web application for visa applications, consultations, and immigration services.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages