A dynamic and interactive portfolio website for Team Avengers, featuring animated characters, interactive maps, and project showcases.
- Interactive World Map: Displays team members' locations with custom markers and hover effects
- Animated Hero Section: Features Marvel character animations (Iron Man, Captain America, and Wanda)
- Dark/Light Mode: Toggle between dark and light themes
- Responsive Design: Fully responsive layout with mobile-friendly navigation
- Typed Text Animation: Dynamic text animations in the hero section
- Project Showcase: Gallery of team projects with filtering options
- Team Member Profiles: Interactive profile cards with location information
- Frontend Framework: React.js with TypeScript
- Styling:
- Tailwind CSS
- Framer Motion for animations
- CSS3 for custom animations
- Mapping:
- Leaflet.js
- React-Leaflet
- Other Libraries:
- Lucide Icons
- React Router DOM
- TypedJS for text animations
- Initializes ThemeContext
- Sets up Router
- Renders Navbar (persistent)
- Manages Routes
-
Initial Render:
- Sets up hero section container
- Initializes TypedTitle component
- Positions GIF elements
-
Animation Flow:
Iron Man Animation: - Starts from left-bottom - Flies diagonally to right-top - Loops infinitely Captain America Animation: - Starts from left - Runs horizontally to right - Loops infinitely Wanda Animation: - Fixed position - Floats up and down - Loops infinitely
-
Initial Load:
- Creates MapContainer
- Loads TileLayer (map tiles)
- Initializes BoundsHandler
-
Marker Handling:
For each team member: 1. Create CustomMarker 2. Set position 3. Initialize hover handlers 4. Create popup content -
Interaction Flow:
Marker Hover: 1. Mouse enters marker 2. Trigger popup display 3. Position popup 4. Show member info Marker Leave: 1. Mouse leaves marker 2. Hide popup
-
Initial State:
- Check screen size
- Set initial theme
- Initialize menu state
-
Interaction Flow:
Desktop: - Display full navigation - Show theme toggle - Handle active states Mobile: 1. Show hamburger menu 2. On click: - Animate menu open/close - Display mobile links - Handle theme toggle
-
Marker Creation:
- Generate custom icon
- Set position
- Initialize event handlers
-
Event Flow:
Mouse Enter: 1. Trigger hover state 2. Show popup 3. Position popup Mouse Leave: 1. Remove hover state 2. Hide popup
-
Initialization:
- Set up Typed.js instance
- Configure typing options
-
Animation Flow:
1. Start typing animation 2. Complete first string 3. Pause 4. Delete text 5. Start next string 6. Loop
-
Theme State:
- Managed by ThemeContext
- Persisted in localStorage
- Accessible globally
-
Navigation State:
- Managed by React Router
- Handles active routes
- Controls mobile menu
-
Map State:
- Manages marker interactions
- Controls popup visibility
- Handles map bounds
-
Scroll Events:
- Navbar visibility
- Parallax effects
-
Resize Events:
- Mobile menu adaptation
- Map responsiveness
-
User Interactions:
- Theme toggling
- Navigation
- Map marker interactions
1. index.html
ββ> loads main.tsx
2. main.tsx
ββ> renders `<App />` component
3. `App.tsx`
ββ> wraps everything in ThemeProvider
ββ> sets up Router
ββ> renders main layout:
ββ> `<Navbar />`
ββ> Routes-
Routes flow:
a) Landing Page Route ("/"):
<LandingPage /> ββ> Hero Section β ββ> `<TypedTitle />` (animated text) β ββ> Iron Man animation β ββ> Captain America animation β ββ> Wanda animation ββ> Content Sections
b) Map Page Route ("/map"):
<MapPage /> ββ> MapContainer β ββ> TileLayer (map background) β ββ> `<CustomMarker />` (for each team member) β β ββ> Popup on hover β ββ> `<BoundsHandler />` (manages map bounds) ββ> Page content
-
Persistent Components:
<Navbar /> ββ> Logo ββ> Navigation Links β ββ> Mobile Menu (on small screens) ββ> Theme Toggle
-
Context Flow:
<ThemeContext /> ββ> Manages dark/light mode ββ> Provides theme state to all components
-
Data Flow:
teamMembers.ts ββ> Used by MapPage for markers ββ> Used by CustomMarker for popup content
-
Style Application:
ββ> Tailwind CSS (utility classes) ββ> global.css (custom styles) ββ> Component-specific styles
10. Animation Systems:
```tsx
ββ> Framer Motion (component animations)
ββ> CSS animations (character movements)
ββ> Typed.js (text typing effect)
Key Component Entry/Exit Points:
1. `<App />`
- Entry: main.tsx mount
- Exit: app closure
2. `<Navbar />`
- Entry: App render
- Persistent throughout app lifecycle
3. `<LandingPage />`
- Entry: "/" route hit
- Exit: route change
4. `<MapPage />`
- Entry: "/map" route hit
- Exit: route change
5. `<CustomMarker />`
- Entry: MapPage render
- Exit: MapPage unmount
6. `<TypedTitle />`
- Entry: LandingPage render
- Exit: LandingPage unmount
This represents the complete flow from initial load to component unmount, with each major component highlighted in its own code block.