Skip to content

Latest commit

Β 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Viso Logo

Viso - Visa Navigator Portal

A modern, full-stack web application for streamlined visa browsing, application management, and progress tracking β€” designed to make every step of the visa journey simple, organized, and stress-free.

Live Demo GitHub Repo React JavaScript Vite Firebase React Router Tailwind CSS DaisyUI MongoDB


πŸ” Overview

Viso is a visa navigator portal that brings clarity and control to the visa application process. Users can browse all available visa types, view detailed requirements, submit applications, add new visa entries, and manage everything from a personalized dashboard β€” all backed by Firebase authentication and a RESTful backend API.

Where every visa journey begins with confidence.


✨ Key Features

🌍 Visa Management

FeatureDescription
Browse All VisasExplore a comprehensive catalog of available visa types with filtering and search capabilities
Detailed Visa ViewView complete visa information including requirements, processing time, fees, and eligibility criteria
Add VisaAuthenticated users can contribute new visa entries to the platform database
My VisasManage and track all visa entries you've added to the system from a personal dashboard
My ApplicationsView and manage all visa applications you've submitted in one organized place

πŸ” Authentication & Security

FeatureDescription
Email/Password AuthRegister and sign in with email credentials powered by Firebase Authentication
Google OAuthQuick one-click sign-in using Google account via Firebase
Protected RoutesVisa details, add visa, my visas, and applications pages are secured behind private routes
Profile DisplayLogged-in users see their profile photo and name with a sign-out dropdown

🎨 User Interface

FeatureDescription
Responsive DesignFully optimized for mobile, tablet, and desktop viewports using Tailwind CSS
Interactive CarouselsSwiper-powered sliders for dynamic banner and content presentation
Reveal AnimationsSmooth entrance animations powered by react-awesome-reveal
Typewriter EffectsEngaging text animations using react-simple-typewriter
Toast NotificationsUser-friendly feedback through react-toastify alerts
Sweet AlertsBeautiful confirmation dialogs via sweetalert2 for critical actions

πŸ› οΈ Tech Stack

TechnologyVersionPurpose
React^18.3.1Component-based UI development
JavaScriptES6+Application logic and interactivity
Vite^6.0.1Lightning-fast dev server and build tooling
Firebase^11.0.2Authentication and user management
React Router DOM^7.0.2Declarative client-side routing
Tailwind CSS^3.4.16Utility-first CSS framework
DaisyUI^4.12.14Tailwind-based UI component library
Swiper^11.1.15Touch-enabled slider and carousel
React Awesome Reveal^4.2.14Scroll-triggered reveal animations
React Simple Typewriter^5.0.1Typewriter text animation effects
React Toastify^10.0.6Toast notification system
SweetAlert2^11.14.5Beautiful alert and confirmation dialogs
React Icons^5.4.0Popular icon sets as React components

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Browser                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  React App (Vite)                                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Layout   β”‚  β”‚  React       β”‚  β”‚  Auth Provider       β”‚  β”‚
β”‚  β”‚  (Navbar+ │◄──  Router      β”‚  β”‚  (Firebase Context)  β”‚  β”‚
β”‚  β”‚   Footer) β”‚  β”‚  (Public +   β”‚  β”‚                      β”‚  β”‚
β”‚  β”‚           β”‚  β”‚   Private)   β”‚  β”‚  β€’ Login / Register  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β€’ Google OAuth      β”‚  β”‚
β”‚                        β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                           β”‚
β”‚               β”‚     Pages       β”‚                           β”‚
β”‚               β”‚  Home β”‚AllVisas β”‚                           β”‚
β”‚               β”‚  AddVisaβ”‚MyVisasβ”‚                           β”‚
β”‚               β”‚  MyApplications β”‚                           β”‚
β”‚               β”‚  VisaDetails    β”‚                           β”‚
β”‚               β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜                           β”‚
β”‚                        β”‚                                    β”‚
β”‚               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                           β”‚
β”‚               β”‚   Components    β”‚                           β”‚
β”‚               β”‚  Bannerβ”‚ Cards  β”‚                           β”‚
β”‚               β”‚  Sliderβ”‚ Forms  β”‚                           β”‚
β”‚               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Backend API: https://server-one-ashen-40.vercel.app        β”‚
β”‚  Database: MongoDB (via Vercel serverless functions)        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‚ Project Structure

milestone-10-client/
β”‚
β”œβ”€β”€ index.html                     # HTML entry point
β”œβ”€β”€ package.json                   # Dependencies and scripts
β”œβ”€β”€ vite.config.js                 # Vite configuration
β”œβ”€β”€ tailwind.config.js             # Tailwind CSS configuration
β”œβ”€β”€ postcss.config.js              # PostCSS configuration
β”‚
β”œβ”€β”€ public/                        # Static assets
β”‚   └── assets/                   # Images, icons, banners, and media
β”‚
└── src/
    β”œβ”€β”€ main.jsx                   # React DOM entry point
    β”œβ”€β”€ App.jsx                    # Root application wrapper
    β”œβ”€β”€ index.css                  # Global styles and Tailwind directives
    β”‚
    β”œβ”€β”€ Layout/                    # Shared layout (Navbar + Footer)
    β”œβ”€β”€ Routes/                    # Route config and private route guard
    β”‚
    └── Components/
        β”œβ”€β”€ Auth/                  # Firebase authentication (Login, Register, OAuth, Context)
        β”œβ”€β”€ Home/                  # Landing page sections (Banner, Cards, About, Category, Process)
        β”œβ”€β”€ AllVisas/              # Browse visas, individual visa details
        β”œβ”€β”€ AddVisa/               # Add new visa form
        β”œβ”€β”€ MyVisas/               # User's added visas dashboard
        └── MyApplications/        # User's submitted applications

πŸš€ Getting Started

Prerequisites

RequirementDetails
Node.jsv18 or higher recommended
npmComes bundled with Node.js
Firebase ProjectRequired for authentication features
Modern BrowserChrome, Firefox, Safari, or Edge

Installation

# 1. Clone the repository
git clone https://github.com/zahid-official/milestone-10-visoClient.git

# 2. Navigate to the project directory
cd milestone-10-client

# 3. Install dependencies
npm install

# 4. Set up environment variables (see section below)

# 5. Start the development server
npm run dev

The application will be available at http://localhost:5173 by default.


πŸ”‘ Environment Variables

Create a .env.local file in the project root with the following Firebase credentials:

VITE_apiKey=your_firebase_api_key
VITE_authDomain=your_project.firebaseapp.com
VITE_projectId=your_project_id
VITE_storageBucket=your_project.appspot.com
VITE_messagingSenderId=your_sender_id
VITE_appId=your_app_id

Note: All environment variables must be prefixed with VITE_ for Vite to expose them to the client bundle. Never commit .env.local to version control.


πŸ“œ Available Scripts

CommandDescription
npm run devStart the Vite development server with HMR
npm run buildCreate an optimized production build
npm run previewPreview the production build locally
npm run lintRun ESLint to check for code quality issues

βš™οΈ How It Works

User lands on Home ──► Browses Visa Catalog ──► Selects a Visa
                                                      β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
                    Route requires auth?
                     β”Œβ”€β”€β”€β”€ Yes ────┐
                     β–Ό             β–Ό
                Not logged in   Logged in
                     β”‚             β”‚
                     β–Ό             β–Ό
                Redirect to    View Visa
                Login Page     Details
                     β”‚             β”‚
                     β–Ό             β–Ό
                Authenticate   Apply for Visa
                (Email/Google) (Submit Application)
                     β”‚             β”‚
                     β–Ό             β–Ό
                Return to ────► Manage Dashboard
                Visa Page       (My Visas & Applications)
  1. Landing β€” Users explore the platform overview, featured visas, categories, and the application process on the home page.
  2. Visa Browsing β€” All available visas are rendered dynamically from the backend API with filtering support.
  3. Authenticated Access β€” Selecting a visa to view details triggers a private route; unauthenticated users are redirected to sign in.
  4. Visa Details & Application β€” Users can view complete visa information and submit applications directly from the details page.
  5. Dashboard Management β€” Users can add new visas, manage their added entries, and track submitted applications from dedicated dashboard pages.

🌟 Author

Zahid Official

Zahid Official

Web Developer | Tech Enthusiast

GitHub LinkedIn Email

Creating impactful digital experiences with passion and purposeful design


🀝 Contributing

Contributions are welcome and appreciated! Here's how you can help improve Viso:

# 1. Fork the repository

# 2. Create a feature branch
git checkout -b feature/your-feature-name

# 3. Make your changes and commit
git commit -m "feat: add your feature description"

# 4. Push to your fork
git push origin feature/your-feature-name

# 5. Open a Pull Request against the main branch

Viso β€” Where every visa journey begins with confidence and clarity.

About

Viso is a user-friendly Visa Navigator Portal that simplifies checking visa requirements, applying online, and tracking applications, offering a seamless experience for managing visa information in one place.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages