CodeMap — это современное веб-приложение на React для загрузки и визуализации структуры ZIP-архивов проектов. Приложение позволяет интерактивно исследовать файловую иерархию с поддержкой поиска, фильтрации скрытых файлов и плавными анимациями.
Загрузка ZIP-файлов
- Drag-and-drop интерфейс
- Кнопка выбора файла
- Поддержка файлов до 100 МБ
Распаковка в браузере
- Полностью клиентская обработка (без сервера)
- Использование JSZip для распаковки
- Быстрая обработка больших архивов
Интерактивное дерево файлов
- Сворачивание/разворачивание папок
- Иконки для разных типов файлов
- Отображение размера файлов при наведении
- Плавные анимации при взаимодействии
Поиск и фильтрация
- Полнотекстовый поиск по имени файла/папки
- Фильтрация скрытых системных файлов (.DS_Store, Thumbs.db, .git и др.)
- Сохранение состояния раскрытых папок в localStorage
Тема оформления
- Светлая и тёмная тема
- Плавное переключение
- Сохранение предпочтений пользователя
Оптимизация производительности
- Ленивая загрузка компонентов
- Эффективная работа с большими деревьями файлов
- Минимальные перерисовки
codemap_v2/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── FileTree.jsx # Компонент дерева файлов
│ │ ├── FileNode.jsx # Компонент узла файла/папки
│ │ ├── FileUploader.jsx # Компонент загрузки ZIP
│ │ ├── SearchBar.jsx # Компонент поиска
│ │ ├── ThemeToggle.jsx # Переключатель темы
│ │ └── HiddenFilesToggle.jsx # Переключатель скрытых файлов
│ ├── utils/
│ │ ├── zipParser.js # Функции распаковки ZIP
│ │ └── storageUtils.js # Работа с localStorage
│ ├── App.jsx # Главный компонент
│ ├── App.css # Стили приложения
│ └── index.js # Точка входа
├── package.json
└── README.md
- Node.js 14+ и npm 6+
- Современный браузер (Chrome, Firefox, Edge)
- Клонируйте репозиторий:
git clone <repository-url>
cd codemap_v2
- Установите зависимости:
npm install
- Запустите приложение:
npm start
Приложение откроется в браузере по адресу http://localhost:3000
npm run build
Собранные файлы будут в папке build/
- react - Библиотека для создания UI
- react-dom - Рендеринг React в DOM
- framer-motion - Библиотека анимаций
- react-icons - Иконки
- jszip - Распаковка ZIP-архивов
- Перетащите ZIP-файл в область загрузки
- Или нажмите кнопку "Выбрать файл"
- Приложение автоматически распакует архив
- Нажимайте на стрелки для сворачивания/разворачивания папок
- Используйте кнопки "Развернуть всё" и "Свернуть всё"
- При наведении отображается размер файла
- Введите текст в поле поиска
- Результаты фильтруются в реальном времени
- Результаты поиска выделяются жёлтым цветом
- Нажмите кнопку "Скрытые файлы" для отображения системных файлов
- По умолчанию скрыты: .DS_Store, Thumbs.db, .git, .env и др.
- Нажмите иконку солнца/луны в верхнем правом углу
- Тема сохраняется в localStorage
Функция parseZip()
в utils/zipParser.js
:
- Использует JSZip для распаковки архива в браузере
- Строит иерархическую структуру файлов и папок
- Фильтрует скрытые системные файлы
- Сортирует папки перед файлами
Все анимации реализованы с помощью Framer Motion:
- Появление элементов при загрузке
- Плавное открытие/закрытие папок
- Подсветка при наведении
- Вращение иконок при раскрытии
- localStorage используется для сохранения:
- Раскрытых папок (для восстановления при перезагрузке)
- Выбранной темы (светлая/тёмная)
Автоматическое определение иконок по расширению файла:
- JavaScript/TypeScript: Code icon
- Python: Code icon
- HTML/CSS: Code icon
- Изображения: Image icon
- Архивы: Archive icon
- И многое другое...
- Максимальный размер архива: 100+ МБ
- Время распаковки: зависит от размера и скорости браузера
- Оптимизация: ленивая загрузка, минимизация перерисовок
- Некоторые браузеры могут иметь ограничения на размер файлов в памяти
- Очень большие архивы (>500 МБ) могут замедлить браузер
- Поддержка только ZIP-архивов (не RAR, 7z и т.д.)
MIT License - свободно используйте в своих проектах
npm start
npm test
npm run build
Если у вас есть вопросы или проблемы, обращайтесь на почту alexsobian@gmail.com.