Skip to content

πŸ—ΊοΈ 🧭 Explore complex software projects like the Linux Kernel or any arbitrary git repository

Notifications You must be signed in to change notification settings

pkill37/explorar.dev

Repository files navigation

πŸš€ Explorar.dev

A standalone Next.js 16 application for exploring and learning from arbitrary software source code with an interactive, VS Code-like interface. Perfect for studying the Linux kernel, Python CPython, glibc, LLVM, and any GitHub repository.

🌐 Live Site: explorar.dev
πŸ”“ GitHub: pkill37/explorar.dev

🎯 Live Examples

Explore these popular repositories instantly:

Repository Description Live Demo
🐧 Linux Kernel Core operating system kernel explorar.dev/torvalds/linux
🐍 CPython Python interpreter implementation explorar.dev/python/cpython
πŸ”§ LLVM Compiler infrastructure project explorar.dev/llvm/llvm-project
πŸ“š glibc GNU C Library implementation explorar.dev/bminor/glibc

πŸ’‘ Tip: Each repository uses smart downloading to fetch only essential files, making exploration fast and efficient!

✨ Features

  • πŸ“ Interactive File Browser: Navigate any software source tree with VS Code-like interface
  • πŸ’» Monaco Code Editor: Full-featured editor with syntax highlighting for 100+ languages
  • πŸ“š Guided Learning: Chapter-based learning paths with interactive quizzes
  • πŸ—‚οΈ Data Structures View: Browse and explore kernel data structures and APIs
  • πŸ”— GitHub Integration: Browse any GitHub repository's source code instantly
  • πŸ“– Kernel Study Mode: Annotated code with kernel concepts and educational markers
  • ⚑ Smart Downloads: Selective downloading of essential files for large repositories
  • πŸ’Ύ Local Storage: IndexedDB-based persistent storage with offline access
  • πŸ”„ Smart Caching: IndexedDB caching with exponential backoff retry logic
  • πŸ›‘οΈ Fault Tolerance: Circuit breaker pattern for resilient API calls
  • 🎯 Zero Setup: No installation required - works entirely in your browser

πŸš€ Getting Started

🌐 Using the Live Site

Simply visit explorar.dev and:

  1. Quick Start: Click any of the pre-configured repositories (Linux, Python, LLVM, glibc)
  2. Custom Repository: Enter any GitHub repository URL (e.g., github.com/owner/repo)

πŸ› οΈ Local Development

# Install dependencies
npm install

# Start development server
npm run dev

Open http://localhost:3000 in your browser. The wizard will guide you through selecting or downloading a repository to explore.

πŸ—οΈ Build

npm run build

πŸ“ Project Structure

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ [owner]/[repo]/        # Dynamic repository routes
β”‚   β”œβ”€β”€ layout.tsx             # Root layout with metadata
β”‚   └── page.tsx               # Main wizard page
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ KernelExplorer.tsx     # Main repository explorer
β”‚   β”œβ”€β”€ FileTree.tsx           # File tree navigation
β”‚   β”œβ”€β”€ CodeEditorContainer.tsx # Editor with tabs
β”‚   β”œβ”€β”€ MonacoCodeEditor.tsx   # Monaco editor wrapper
β”‚   β”œβ”€β”€ GuidePanel.tsx         # Learning guides
β”‚   β”œβ”€β”€ QuickStarts.tsx        # Repository quick starts
β”‚   └── ...                    # Other UI components
β”œβ”€β”€ contexts/
β”‚   └── RepositoryContext.tsx  # Repository state management
β”œβ”€β”€ hooks/
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ repo-storage.ts        # IndexedDB storage management
β”‚   β”œβ”€β”€ github-archive.ts      # Repository downloading
β”‚   β”œβ”€β”€ selective-download.ts  # Smart downloading for large repos
β”‚   β”œβ”€β”€ github-api.ts          # GitHub API integration
β”‚   β”œβ”€β”€ github-cache.ts        # Caching layer
β”‚   └── ...                    # Other utilities
└── types/
    └── index.ts               # TypeScript definitions

πŸ› οΈ Technologies

  • Next.js 16: React framework with App Router
  • React 19: Latest React with concurrent features
  • Monaco Editor: VS Code editor component
  • TypeScript: Full type safety
  • IndexedDB: Browser database for persistent storage (works in all modern browsers)
  • JSZip: Client-side zip file handling

πŸ’Ύ Storage & Download System

Smart Repository Downloads

  • Selective Downloads: Large repositories (Linux kernel, LLVM) download only essential directories
  • Lazy Loading: Branches are downloaded only when requested
  • Offline Access: Downloaded repositories work completely offline

Local Storage Options

  • IndexedDB Storage: Persistent browser storage that survives page refreshes (works in all modern browsers including Firefox)
  • Storage Management: View usage, manage repositories, clear storage

βš™οΈ Environment Variables

Optional environment variables:

  • NEXT_PUBLIC_SITE_URL: Site URL for metadata (default: https://explorar.dev)

πŸ”§ Advanced Features

πŸ—„οΈ Caching System

The application uses a sophisticated caching system with:

  • IndexedDB as primary storage with localStorage fallback
  • Automatic cache size management (50MB limit)
  • Cache versioning and migration support

πŸ”„ Retry Logic

Built-in fault tolerance with:

  • Exponential backoff retry mechanism
  • Configurable retry strategies
  • Circuit breaker pattern to prevent cascading failures
  • Automatic recovery after service restoration

🀝 Contributing

This is a private project, but contributions and feedback are welcome!

πŸ“„ License

Private project.

πŸ”— Links

About

πŸ—ΊοΈ 🧭 Explore complex software projects like the Linux Kernel or any arbitrary git repository

Topics

Resources

Stars

Watchers

Forks