mirror of
https://github.com/ergosteur/instaarchive-viewer.git
synced 2026-07-04 11:07:15 -04:00
3.2 KiB
3.2 KiB
GEMINI.md
Project Overview
InstaArchive is a high-performance, React-based Progressive Web App (PWA) designed to browse and explore archived Instagram data with a native-feeling interface. It allows users to load their local Instagram archive directories (either official Instagram exports or Instaloader format) and browse posts, reels, and stories in a modern, responsive grid view.
Key Features
- Local Archive Loading: Uses the
webkitdirectoryAPI to scan and process local files securely on the client-side. - Support for Multiple Formats: Recognizes official Instagram export structures and Instaloader regex-based naming conventions.
- Dynamic Media Grid: Customizable grid layouts (1:1 and 3:4 aspect ratios) with adjustable offsets ("bumps") for aesthetic alignment.
- Story Viewer: Native-like story experience with progress bars, automated playback, and touch/click navigation.
- Post Detail Modal: Comprehensive view for posts with media carousels, captions, and seamless navigation between posts.
- Video Support: Automatic video thumbnail generation and playback.
- PWA Ready: Built with
vite-plugin-pwafor offline capabilities and a standalone application experience.
Main Technologies
- Frontend: React 19, Vite, TypeScript
- Styling: Tailwind CSS (v4)
- Icons: Lucide React
- Animations: Framer Motion (
motion/react) - Utility: Date-fns, clsx, tailwind-merge
- PWA: vite-plugin-pwa
Note: While better-sqlite3, express, and @google/genai are listed in package.json, the current core application logic is entirely frontend-driven.
Building and Running
Prerequisites
- Node.js (Latest LTS recommended)
- npm or yarn
Commands
npm install: Install project dependencies.npm run dev: Start the local development server on port 3000.npm run build: Generate the production-ready build in thedistfolder.npm run preview: Locally preview the production build.npm run lint: Execute TypeScript type-checking (tsc --noEmit).npm run clean: Remove thedistdirectory.
Environment Variables
GEMINI_API_KEY: Required for AI-integrated features (though currently unutilized in core logic).DISABLE_HMR: If set totrue(standard in AI Studio environments), Hot Module Replacement is disabled to prevent flickering during agent-driven edits.
Development Conventions
- Component Architecture: Functional components with modern hooks. All main application logic currently resides in
src/App.tsx. - Styling Strategy: Utility-first CSS using Tailwind CSS v4. Styles are largely co-located with components.
- Type Safety: Strict TypeScript usage for all components and utility functions.
- Iconography: Consistent use of
lucide-reactfor all UI icons. - Animations: Smooth transitions and gestures powered by
motion/react. - File Handling: Privacy-focused client-side scanning of archive directories using browser-native APIs.
- Project Structure:
src/App.tsx: Main entry point and core application logic.src/main.tsx: React DOM mounting.src/index.css: Global styles and Tailwind imports.vite.config.ts: Project build and PWA configuration.metadata.json: Project description for external integration tools.