Skip to content
FrltziPublic
forked from alex46x/ivisa

About

vvvvvvvsllllttt

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

🚀 VISA AUTOMATOR

Free, Privacy-First, Human-In-The-Loop Chrome Extension
Native Manifest V3 browser automation assistant for the official Indian Visa Application Center (IVAC).


📌 Architecture Overview

  • ❌ No Standalone Website
  • ❌ No Localhost Server Required
  • ❌ No Cloned or Fake Pages
  • ✅ 100% Native Chrome Extension injecting a floating Shadow DOM panel directly into https://appointment.ivacbd.com/*.

🧩 Key Features

  • 🛡️ Human-In-The-Loop Safety: Never bypasses CAPTCHA, Turnstile, or OTP. Automatically halts and alerts the user to complete verification steps manually.
  • ⚡ Shadow DOM Isolation: Complete CSS and DOM isolation prevents any conflicts with the host website stylesheet.
  • 📅 Smart Slot Availability Checker: Scrapes open appointment dates and matches against user priority preferences with configurable jitter and 429 exponential backoff.
  • 📄 Document Upload Automation: Safely uploads primary and multiple additional applicant PDFs ($\le 500\text{KB}$) using HTML5 DataTransfer.
  • 🔐 Local Privacy: Zero external telemetry, zero tracking, zero remote analytics. All configurations are stored locally in chrome.storage.local.

📁 Repository Structure

Invisa/
├── manifest.json                  # Manifest V3 (targets https://appointment.ivacbd.com/*)
├── package.json                   # Dependencies and npm scripts
├── tsconfig.json                  # TypeScript compiler settings
├── vite.config.ts                 # Extension bundler (Rollup)
├── .gitignore                     # Git ignore rules
│
├── public/
│   └── icons/                     # Chrome Extension icons (16, 48, 128 px)
│
├── src/
│   ├── background/
│   │   └── serviceWorker.ts       # Service Worker lifecycle & tab messaging
│   │
│   ├── content/
│   │   ├── contentScript.ts       # Content script entry point (auto-runs on IVAC)
│   │   ├── injectPanel.ts         # Shadow DOM injector with pointer-events transparency
│   │   ├── pageDetector.ts        # Real IVAC page & route detector
│   │   └── domObserver.ts         # MutationObserver & URL change monitor
│   │
│   ├── automation/
│   │   ├── automationEngine.ts    # Main automation orchestrator
│   │   ├── stateMachine.ts        # 9-stage finite state machine
│   │   └── actions/               # DOM interaction modules
│   │       ├── actionValidator.ts # Defensive safety & visibility checks
│   │       ├── loginActions.ts    # Form field population
│   │       ├── uploadActions.ts   # DataTransfer PDF injector
│   │       ├── navigationActions.ts # Safe button clicks & popup dismisser
│   │       └── appointmentActions.ts # Slot scraper & calendar picker
│   │
│   ├── selectors/                 # Centralized IVAC DOM selector definitions
│   │   ├── loginSelectors.ts      # Sign-in field selectors
│   │   ├── otpSelectors.ts        # 6-box OTP field selectors
│   │   ├── uploadSelectors.ts     # Document upload & confirmation selectors
│   │   ├── appointmentSelectors.ts# Calendar & slot selectors
│   │   └── index.ts               # Selectors barrel export
│   │
│   ├── storage/                   # Local storage adapters (chrome.storage.local)
│   │   ├── settingsStorage.ts
│   │   ├── sessionStorage.ts
│   │   └── storageAdapter.ts
│   │
│   ├── utils/                     # Helper utilities
│   │   ├── logger.ts              # Masked logger (INFO, SUCCESS, WARNING, ERROR, ACTION)
│   │   ├── dateMatcher.ts         # Strict Priority vs Date Rotation
│   │   ├── backoff.ts             # Jitter (±5s) & 429 exponential backoff
│   │   ├── validation.ts          # PDF format and <=500KB size validation
│   │   └── domHelpers.ts          # DOM query fallbacks & visibility checks
│   │
│   └── ui/                        # React UI inside Shadow DOM
│       ├── App.tsx                # Floating panel container & drag logic
│       ├── styles.css             # Shadow DOM encapsulated dark theme styles
│       └── components/
│           ├── Header.tsx         # Drag handle (⠿ ◆ VISA AUTOMATOR drag me _ ✕)
│           ├── ProgressTracker.tsx# 9-stage visual stepper (1-2-3-4-5-6-7-8-9-✓)
│           ├── RunTab.tsx         # Credentials, 6 OTP boxes, START/STOP, Metrics, Turnstile
│           ├── ConfigTab.tsx      # Mission, Center, Load Session, PDF queue, Toggles, Pills
│           └── LogsTab.tsx        # Masked logs stream & JSON/TXT export
│
└── tests/                         # Vitest unit tests (21/21 passing)

🛠️ Build Instructions

Prerequisites

  • Node.js (v18 or higher)
  • npm (v9 or higher)

Installation & Compilation

# 1. Install dependencies
npm install

# 2. Run unit tests
npm test

# 3. Build Chrome Extension
npm run build

The compiled Chrome Extension will be generated inside the dist/ directory:

  • dist/manifest.json
  • dist/background.js
  • dist/content.js
  • dist/icons/

📦 Chrome Installation Instructions

  1. Open Google Chrome and navigate to:
    chrome://extensions/
    
  2. Enable Developer mode via the toggle in the top-right corner.
  3. Click the Load unpacked button in the top-left corner.
  4. Select the dist/ directory from this project:
    d:\Project _ For client\Invisa\dist
    
  5. Open the official portal: 👉 https://appointment.ivacbd.com/signin
  6. The VISA AUTOMATOR floating panel will automatically appear on the webpage.

🔒 Security & Privacy Policy

  • No Remote Servers: This extension does not communicate with any third-party backend.
  • Zero Credentials Leakage: Passwords are never saved unless the user explicitly enables local storage.
  • No Bypass Mechanisms: Complies with web security standards by leaving CAPTCHA and OTP solving to human operators.

About

vvvvvvvsllllttt

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages