Skip to content

ZoroDev0/MacOs_Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

64 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

macOS-Inspired Portfolio Application

A modern, keyboard-first productivity application inspired by macOS Spotlight and system-level design patterns. Built with React, Vite, and Tailwind CSS, featuring adaptive desktop and mobile experiences.

Live Demo โ€ข GitHub


๐Ÿ“‹ Table of Contents

  1. Features
  2. Architecture Overview
  3. Getting Started
  4. Technology Stack
  5. Project Structure
  6. Mobile & Platform Support
  7. Accessibility
  8. Development Roadmap
  9. Credits & Acknowledgements

โœจ Features

๐Ÿ–ฅ๏ธ Window Management System

  • Draggable, resizable windows with minimize/maximize/close controls
  • Multiple window instances with persistent positioning
  • Task management and window layering
  • Smooth animations and transitions

๐Ÿ” Global Search Palette

  • Shortcut: โŒ˜ + Space (or Ctrl + Space on Windows/Linux)
  • Unified search across apps, folders, files, commands, and calculations
  • Scoped search: find [query] in [folder]
  • Command execution: open [app]
  • Calculator: Direct arithmetic expression evaluation
  • Keyboard navigation with arrow keys and Enter

๐Ÿ“ File System & Folders

  • Virtual file system with nested folder hierarchy
  • File browser with folder navigation
  • Text file editing and preview
  • Image gallery browsing
  • Document management

๐ŸŽจ Gallery & Media

  • Multi-view image gallery (grid, list, carousel)
  • Favorite tagging and filtering
  • Section-based organization (Library, Memories, Places, People, Favorites)
  • Image metadata display
  • Responsive image rendering

๐ŸŒ™ Theme Management

  • Light and dark mode toggle
  • System preference detection
  • Persistent theme selection
  • Glassmorphic design with backdrop blur
  • High contrast accessibility support

โŒจ๏ธ Keyboard-First Design

  • Full keyboard navigation throughout
  • Arrow keys for list/grid navigation
  • Tab for focus management
  • Enter/Space for activation
  • Escape to close modals/dialogs
  • ARIA labels for screen readers

๐ŸŒก๏ธ Weather Widget

  • Real-time weather display (via OpenWeatherMap API)
  • Hourly forecast preview
  • Geolocation support with fallback to default city
  • Auto-refresh every 30 minutes

๐Ÿ“… Calendar Integration

  • Date picker with month navigation
  • Current date highlighting
  • Day-of-week headers
  • Today indicator

๐Ÿ“ฑ Mobile & Cross-Platform Support

  • Adaptive Rendering: Automatic detection and switching between desktop and mobile experiences
  • iOS App Interface: Dedicated mobile interface (iOS-inspired design)
  • NFC Ready: Architecture prepared for future NFC functionality integration
  • Responsive Breakpoints: Optimized layouts for all screen sizes
  • Touch-Friendly: Mobile-optimized interactions and gestures

๐Ÿ—๏ธ Architecture Overview

Multi-Platform Design

The application uses a sophisticated architecture to deliver platform-appropriate experiences:

// SSR-safe adaptive rendering with runtime responsiveness
const AppRoot = () => {
  const [isMobile, setIsMobile] = useState(false);

  useEffect(() => {
    // SSR-safe responsive detection
    if (typeof window === "undefined") return;
    
    const mediaQuery = window.matchMedia("(max-width: 767px)");
    setIsMobile(mediaQuery.matches);
    
    const handleChange = (e) => setIsMobile(e.matches);
    mediaQuery.addEventListener("change", handleChange);
    
    return () => mediaQuery.removeEventListener("change", handleChange);
  }, []);

  return isMobile ? <IOSApp /> : <DesktopApp />;
};

โš ๏ธ SSR Safety: The component uses useState and useEffect to safely detect screen size at runtime, avoiding direct window access during server-side rendering or module initialization.

Desktop Experience (DesktopApp)

  • Full macOS-inspired windowing system
  • Draggable, resizable windows with GSAP animations
  • Advanced keyboard navigation and shortcuts
  • Complex multi-window management
  • Rich desktop interactions (dock, menubar, spotlight search)

Mobile Experience (IOSApp)

  • iOS-native interface patterns
  • Touch-first interaction design
  • Optimized for mobile performance
  • Simplified navigation structure
  • Mobile-specific UI components

Shared Infrastructure

  • State Management: Unified Zustand stores across platforms
  • Component Library: Reusable UI components with platform variants
  • Search Engine: Cross-platform search functionality
  • Theme System: Consistent theming across desktop and mobile

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

# Clone the repository
git clone https://github.com/Sasanka14/MacOs_Portfolio.git
cd MacOs_Portfolio

# Navigate to frontend folder
cd frontend

# Install dependencies
npm install

# Start the development server
npm run dev

# Build for production
npm run build

# Preview production build locally
npm run preview

# Run linter
npm run lint

The application will start at http://localhost:5173

Initial Setup

  1. Set VITE_WEATHER_API_KEY in frontend/.env.local for weather functionality:
    VITE_WEATHER_API_KEY=your_openweathermap_api_key_here
    

๐Ÿ› ๏ธ Technology Stack

Frontend

  • React 19.2 โ€” Component-driven UI framework
  • Vite 7.2 โ€” Lightning-fast build tool
  • Tailwind CSS 4.1 โ€” Utility-first styling

State Management

  • Zustand โ€” Lightweight global state (window, location)
  • React Hooks โ€” Local component state

Animation & Interactions

  • GSAP 3.13 โ€” Professional animation library
  • CSS Transitions โ€” Smooth property changes

UI Elements

  • Lucide React โ€” 500+ beautiful icons
  • React Tooltip โ€” Accessible tooltip component
  • React PDF โ€” PDF document rendering

Utilities

  • Day.js โ€” Lightweight date formatting
  • Immer โ€” Immutable state updates
  • clsx โ€” className utility

๐Ÿ“ฆ Project Structure

MacOs_Portfolio/                     # Root directory
โ”œโ”€โ”€ backend/                         # Backend API (Version 2)
โ”‚   โ””โ”€โ”€ .gitkeep                    # Placeholder for future backend
โ”œโ”€โ”€ frontend/                        # React application (Vite)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ AppRoot.jsx             # Platform detection & routing
โ”‚   โ”‚   โ”œโ”€โ”€ main.jsx                # React entry point
โ”‚   โ”‚   โ”œโ”€โ”€ index.css               # Global styles + Tailwind
โ”‚   โ”‚   โ”œโ”€โ”€ app/                    # Platform-specific applications
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ desktop/            # Desktop experience
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ DesktopApp.jsx # Full macOS-inspired interface
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mobile/             # Mobile experience
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ IOSApp.jsx     # iOS-inspired mobile interface
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ nfc/                # NFC functionality (future)
โ”‚   โ”‚   โ”œโ”€โ”€ components/             # Shared UI components (11 files)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Navbar.jsx         # Top navigation bar
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Dock.jsx           # Bottom taskbar (desktop)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Welcome.jsx        # Hero section + weather widget
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SearchPalette.jsx  # Global search interface
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ WindowControls.jsx # Window control buttons
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ThemeProvider.jsx  # Theme management context
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ThemeMenu.jsx      # Theme switching interface
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ UserMenu.jsx       # User profile menu
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LoadingScreen.jsx  # App initialization screen
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Home.jsx           # Main content area
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.js           # Component exports
โ”‚   โ”‚   โ”œโ”€โ”€ windows/                # Desktop window components (10 files)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Photos.jsx         # Image & video gallery
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Text.jsx           # Text editor
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Safari.jsx         # Browser simulation
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Terminal.jsx       # Terminal simulation
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Finder.jsx         # File browser
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Resume.jsx         # Resume viewer
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Teams.jsx          # Team members showcase
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Contact.jsx        # Contact form
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Image.jsx          # Image viewer
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.js           # Window exports
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ views/             # Specialized view components
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ LibraryView.jsx # Keyboard-accessible library
โ”‚   โ”‚   โ”œโ”€โ”€ shared/                 # Cross-platform shared resources
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ constants/         # App configuration & data
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.js       # Navigation, apps, files config
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ store/             # Zustand state management
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ window.js      # Window state (desktop)
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ location.js    # Navigation state (global)
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/                  # Custom React hooks (2 files)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ useSearch.js       # Search logic and indexing
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ useTheme.js        # Theme management
โ”‚   โ”‚   โ””โ”€โ”€ hoc/                    # Higher-order components
โ”‚   โ”‚       โ””โ”€โ”€ WindowWrapper.jsx  # Window container wrapper
โ”‚   โ”œโ”€โ”€ public/                      # Static assets
โ”‚   โ”‚   โ”œโ”€โ”€ icons/                 # SVG and PNG icons
โ”‚   โ”‚   โ”œโ”€โ”€ images/                # Portfolio images
โ”‚   โ”‚   โ”œโ”€โ”€ videos/                # Video files
โ”‚   โ”‚   โ”œโ”€โ”€ files/                 # Document files
โ”‚   โ”‚   โ””โ”€โ”€ macbook.png            # Hero image
โ”‚   โ”œโ”€โ”€ package.json                # Dependencies and scripts
โ”‚   โ”œโ”€โ”€ vite.config.js              # Vite build configuration
โ”‚   โ”œโ”€โ”€ eslint.config.js            # ESLint configuration
โ”‚   โ”œโ”€โ”€ jsconfig.json               # JavaScript configuration
โ”‚   โ”œโ”€โ”€ index.html                  # HTML entry point
โ”‚   โ”œโ”€โ”€ .env.local                  # Environment variables
โ”‚   โ””โ”€โ”€ .gitignore                  # Frontend ignore rules
โ”œโ”€โ”€ README.md                        # Complete documentation
โ””โ”€โ”€ .gitignore                       # Root ignore rules

Folder Structure Explanation

Multi-Platform Architecture:

  • AppRoot.jsx: Platform detection and routing logic
  • app/desktop/: Full desktop experience with windowing system
  • app/mobile/: iOS-inspired mobile interface
  • app/nfc/: Prepared for future NFC functionality
  • shared/: Cross-platform resources (constants, store)
  • components/: Reusable UI components for both platforms

Development Benefits:

  • Clean separation of concerns between platforms
  • Shared business logic and state management
  • Easy to add new platforms (Android, desktop apps, etc.)
  • Modular architecture for future backend integration

๐Ÿ“ฑ Mobile & Platform Support

Current Platform Support

  • โœ… Desktop Web: Full macOS-inspired experience
  • โœ… Mobile Web: iOS-inspired responsive interface
  • ๐Ÿšง NFC Integration: Architecture prepared (feature branch)
  • ๐Ÿ”ฎ Native Apps: Planned for Version 3

Mobile Features

  • Automatic Detection: Responsive breakpoint at 768px
  • Touch Optimization: Mobile-friendly interactions
  • Performance: Optimized rendering for mobile devices
  • iOS Design Language: Native iOS interface patterns

Cross-Platform State Management

// Shared stores work across all platforms
import { useWindowStore } from '#shared/store/window';
import { useLocationStore } from '#shared/store/location';

// Platform-specific components
const DesktopWindow = () => { /* Desktop windowing */ };
const MobileSheet = () => { /* Mobile bottom sheet */ };

๐Ÿ“– Key Concepts

Search Index

The application maintains a unified, in-memory search index containing:

  • Apps: Launchable applications
  • Folders: Virtual file system navigation
  • Files: Documents with metadata
  • Commands: System-level actions (theme switching, navigation)
  • Calculations: Safe arithmetic expression evaluation

Search ranking prioritizes exact matches, then keyword matches, then partial matches.

Window System

Windows are draggable, resizable React components powered by GSAP animations. Each window:

  • Can be minimized/maximized/closed
  • Maintains position and size in state
  • Supports keyboard focus management
  • Renders content from dedicated window components

Keyboard Navigation

Every interactive element is keyboard-accessible:

  • Input fields are focusable and support text entry
  • Buttons support Enter/Space activation
  • Lists support arrow key navigation
  • Dialogs can be closed with Escape
  • Screen readers receive ARIA labels and descriptions

๐ŸŽฏ Development Roadmap

โœ… Version 1.0 (Current - Desktop Complete)

Status: Production-ready desktop experience

Completed Features:

  • โœ… Desktop macOS-inspired interface
  • โœ… Full windowing system with GSAP animations
  • โœ… Global search palette (โŒ˜ + Space)
  • โœ… Advanced keyboard navigation
  • โœ… Dark/light theme system
  • โœ… Weather API integration
  • โœ… PDF rendering and document management
  • โœ… Image gallery with multiple view modes
  • โœ… Accessibility compliance (WCAG AA)

๐Ÿšง Version 1.5 (Current Development - Mobile Branch)

Status: Active development on feature-mobile branch

In Progress:

  • ๐Ÿšง iOS-inspired mobile interface (IOSApp)
  • ๐Ÿšง Mobile-optimized touch interactions
  • ๐Ÿšง Responsive component variants
  • ๐Ÿšง Platform detection and routing
  • ๐Ÿšง NFC infrastructure preparation

Planned for Mobile:

  • ๐Ÿ“ฑ Touch gestures and mobile navigation
  • ๐Ÿ“ฑ Mobile-specific UI patterns
  • ๐Ÿ“ฑ Progressive Web App (PWA) features
  • ๐Ÿ“ฑ Optimized performance for mobile devices

๐Ÿ”ฎ Version 2.0 (Backend Integration - 2026)

Target: Full-stack application

Planned Features:

  • ๐Ÿ”ง Node.js/Express backend API
  • ๐Ÿ”ง Database integration (PostgreSQL/MongoDB)
  • ๐Ÿ”ง User authentication (JWT, OAuth)
  • ๐Ÿ”ง Real-time data persistence
  • ๐Ÿ”ง File system operations
  • ๐Ÿ”ง Email functionality
  • ๐Ÿ”ง Advanced search indexing
  • ๐Ÿ”ง Performance monitoring

โœจ Version 3.0 (Enterprise Ready - 2027)

Target: Production-grade platform

Advanced Features:

  • โญ Native mobile apps (React Native)
  • โญ Advanced NFC functionality
  • โญ Elasticsearch integration
  • โญ Microservices architecture
  • โญ CI/CD pipeline
  • โญ Comprehensive testing
  • โญ Docker containerization
  • โญ Horizontal scalability

โ™ฟ Accessibility

This project is built with accessibility as a first-class concern:

  • Keyboard Navigation: Full keyboard support for all features
  • ARIA Labels: Semantic HTML with proper ARIA attributes
  • Focus Management: Visible focus indicators throughout
  • Color Contrast: WCAG AA compliant contrast ratios
  • Screen Readers: Support for NVDA, JAWS, VoiceOver
  • Dark Mode: Comfortable viewing in low-light environments

Testing Accessibility

  • Test with keyboard: Tab, Shift+Tab, Enter, Space, Escape, Arrow Keys
  • Test with screen reader: VoiceOver (Mac), NVDA (Windows), JAWS
  • Check with accessibility tools: Axe DevTools, WAVE, Lighthouse

๐Ÿ“š Learning Resources

This project demonstrates:

  • React Hooks (useState, useEffect, useCallback, useMemo, useContext)
  • Component composition and reusability
  • Advanced state management patterns
  • CSS-in-JS and utility-first styling
  • Animation and interaction design
  • Keyboard accessibility implementation
  • System architecture and design patterns

๐Ÿ› Known Limitations & Current State

Version 1.0 (Desktop) Limitations

  • โŒ No actual file system access (simulated virtual files)
  • โŒ No backend persistence (localStorage only for preferences)
  • โŒ No real email/messaging (frontend simulation)
  • โŒ Search limited to pre-indexed content
  • โŒ Window positions reset on page reload
  • โŒ Weather API requires external key configuration

Version 1.5 (Mobile Branch) Status

  • ๐Ÿšง Mobile interface in active development
  • ๐Ÿšง iOS App component basic implementation completed
  • ๐Ÿšง Platform detection working (768px breakpoint)
  • ๐Ÿšง NFC folder structure prepared but empty
  • โš ๏ธ Mobile UI components need full implementation
  • โš ๏ธ Touch interactions not yet optimized
  • โš ๏ธ Mobile-specific features incomplete

Technical Debt & Improvements Needed

  • ๐Ÿ”„ Component refactoring for better mobile/desktop code sharing
  • ๐Ÿ”„ Performance optimization for mobile devices
  • ๐Ÿ”„ Better error handling and loading states
  • ๐Ÿ”„ Improved accessibility testing
  • ๐Ÿ”„ Code splitting for better bundle sizes

๐Ÿค Contributing

We welcome contributions! The project is actively developing mobile support on the feature-mobile branch.

Development Workflow

  1. Fork the repository
  2. Clone your fork locally
  3. Switch to the appropriate branch:
    git checkout feature-mobile  # For mobile development
    git checkout main           # For desktop features
  4. Create a feature branch (git checkout -b feature/amazing-feature)
  5. Make your changes with proper testing
  6. Commit with descriptive messages (git commit -m 'Add mobile touch gestures')
  7. Push to your branch (git push origin feature/amazing-feature)
  8. Open a Pull Request with detailed description

Areas Needing Help

  • ๐Ÿ“ฑ Mobile UI component development
  • ๐ŸŽจ iOS-inspired design implementation
  • โšก Mobile performance optimizations
  • ๐Ÿงช Cross-platform testing
  • ๐Ÿ“š Documentation improvements
  • โ™ฟ Accessibility enhancements

Code Standards

  • ESLint configuration enforced
  • React 19+ patterns and hooks
  • Mobile-first responsive design
  • Accessibility (WCAG AA) compliance
  • Clean, self-documenting code

Current Priorities (February 2026)

  1. Complete mobile interface in IOSApp component
  2. Implement touch interactions for mobile devices
  3. Optimize performance for mobile browsers
  4. Add PWA features for better mobile experience
  5. Improve cross-platform state management

๐Ÿ“„ License

MIT License - Feel free to use this project for your own purposes.

๐Ÿ™ Credits

This project stands on the shoulders of incredible open-source software and design inspiration.

Key inspirations:

  • macOS โ€” System design and interaction patterns
  • Spotlight โ€” Search interface design
  • Raycast โ€” Keyboard-first productivity
  • React โ€” Component architecture
  • Tailwind CSS โ€” Design system and styling

๐Ÿ“ž Contact & Links

๐Ÿ™ Credits & Acknowledgements

Built on exceptional open-source tools and design inspiration:

Core Technologies

UI & Icons

Development Tools

  • ESLint โ€” Code quality assurance
  • Day.js โ€” Lightweight date utilities
  • Immer โ€” Immutable updates

Design Inspiration


Last Updated: February 7, 2026

Current Branch: feature-mobile (Active Development)

Project Status:

  • โœ… Desktop Interface Complete (v1.0)
  • ๐Ÿšง Mobile Interface in Development (v1.5)
  • ๐Ÿ“‹ Backend Planning Phase (v2.0)

Made with โค๏ธ by Sasanka

About

A modern, keyboard-first productivity application inspired by macOS Spotlight and system-level design patterns. Built with React, Vite, and Tailwind CSS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors