A modern, full-stack portfolio showcase application built with React, TypeScript, and Firebase, featuring real-time visitor tracking and engagement metrics. This dynamic project gallery combines elegant UI design with live interaction capabilities, allowing visitors to engage with projects through likes and providing real-time analytics.
- Live visitor counting with Firebase Realtime Database
- Real-time like system with instant updates
- Project engagement tracking and statistics
- Analytics dashboard for visitor metrics
- Responsive grid layout with dynamic filtering
- Advanced image lightbox with zoom capabilities
- Smooth animations and transitions
- Category-based project filtering
- Real-time data synchronization
- Visitor tracking system
- Like/reaction management
- Scalable data structure
- Efficient state management
- Lazy loading for images
- Optimized database queries
- React 18
- TypeScript
- Vite (Build tool)
- Framer Motion (Animations)
- Tailwind CSS
- shadcn/ui components
- Realtime Database
- Live visitor tracking
- Real-time like system
- Project engagement metrics
- Firebase Hosting
- Firebase Authentication (for admin features)
- Firebase Analytics
- React Hooks
- Custom hooks for Firebase integration
- Real-time data synchronization
- Custom hooks for analytics and scrolling
- Type-safe data handling with TypeScript
src/
├── assets/
│ ├── images/
│ │ └── [Image assets]
│ └── projects/
│ └── [Project images]
├── components/
│ ├── header/
│ │ ├── LikeCounter.tsx
│ │ └── Logo.tsx
│ ├── layout/
│ │ ├── Footer.tsx
│ │ ├── Header.tsx
│ │ └── Layout.tsx
│ ├── loading/
│ │ ├── ProjectCardSkeleton.tsx
│ │ ├── ProjectDetailsSkeleton.tsx
│ │ └── ProjectSkeleton.tsx
│ ├── project-header/
│ │ ├── HeroSection.tsx
│ │ ├── ProjectHeader.tsx
│ │ └── VisitorCounter.tsx
│ ├── projects/
│ │ ├── ImageLightBox.tsx
│ │ ├── ImageThumbnailStrip.tsx
│ │ ├── ProjectCard.tsx
│ │ ├── ProjectGallary.tsx
│ │ ├── ProjectList.tsx
│ │ └── ProjectModal.tsx
│ └── stats/
│ ├── LikeCounter.tsx
│ └── StatsSection.tsx
├── config/
│ └── firebase.ts
├── constants/
│ └── technologies.ts
├── data/
│ ├── constants.ts
│ └── projects.ts
├── hooks/
│ ├── useScrollEffect.tsx
│ └── userVisitorCount.tsx
├── pages/
│ ├── api/
│ ├── Home.tsx
│ └── ProjectDetails.tsx
├── services/
│ ├── LikeService.ts
│ └── VisitorService.ts
├── styles/
│ └── index.css
├── types/
│ ├── images.d.ts
│ └── project.ts
└── utils/
└── utils.ts
- Clone the repository
git clone https://github.com/yourusername/project-gallery.git
cd project-gallery
- Install dependencies
npm install
- Set up environment variables
Create a.env
file in the root directory and add your Firebase configuration:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_DATABASE_URL=your_database_url
- Start the development server
npm run dev
- Build for production
npm run build
- Grid layout with project cards
- Smooth hover effects and transitions
- Project filtering by category
- Visitor counting system
- Like/reaction functionality
- Project engagement tracking
- Smooth image carousel
- Lightbox with zoom functionality
- Touch gesture support
- Dynamic scroll indicator
- Detailed project information display
- Technology stack badges
- Interactive image gallery
- Project links (GitHub, Demo)
ImageLightBox
: Advanced image viewer with zoom and navigationProjectGallary
: Main project display componentVisitorCounter
: Tracks and displays visitor statisticsLikeCounter
: Handles project likes and reactionsProjectHeader
: Displays project details and metadataLayout
: Main layout component with header and footer
- Mobile-first approach
- Adaptive layouts
- Touch-friendly interactions
The application is configured for deployment on:
- Firebase Hosting (primary hosting)
- GitHub Pages
- Netlify