Instagram-клон на React + TypeScript + Redux Toolkit
Современное клиентское приложение для социальной сети, вдохновлённое Instagram. Построено с использованием React 19, TypeScript, Redux Toolkit и Vite.
- ✅ Аутентификация: Регистрация и вход с JWT токенами
- ✅ Управление профилем: Редактирование информации, загрузка аватара
- ✅ Публикация постов: Создание постов и историй с изображениями
- ✅ Лента постов: Просмотр постов с лайками и комментариями
- ✅ Система уведомлений: Панель уведомлений с фильтрами и счётчиком
- ✅ Подписки: Подписка на пользователей, просмотр подписчиков
- ✅ Поиск: Панель поиска пользователей с историей
- ✅ Интересное: Панель с рекомендованными постами
- ✅ Защищённые маршруты: Авторизация для доступа к страницам
- ✅ Responsive дизайн: Адаптивный интерфейс для всех устройств
- React 19.2 - UI библиотека
- TypeScript - Типизация
- Redux Toolkit - Управление состоянием
- React Router DOM - Маршрутизация
- Axios - HTTP клиент
- Vite - Сборщик и dev-сервер
- CSS Modules - Стилизация компонентов
# Клонирование репозитория
git clone https://github.com/IPodymov/fakegram-frontend.git
cd fakegram-frontend
# Установка зависимостей
npm installСоздайте файл .env в корне проекта:
VITE_API_URL=https://fakegram-backend-production.up.railway.appДля локальной разработки создайте .env.local:
VITE_API_URL=http://localhost:3000# Development режим
npm run dev
# Production сборка
npm run build
# Предварительный просмотр production сборки
npm run preview
# Линтинг кода
npm run lintfakegram-frontend/
├── public/ # Статические файлы
├── src/
│ ├── api/ # API клиент и endpoints
│ ├── assets/ # Иконки, изображения
│ ├── components/ # React компоненты
│ │ ├── Header/
│ │ ├── Sidebar/
│ │ ├── LoginForm/
│ │ ├── RegisterForm/
│ │ ├── PostCard/
│ │ ├── CreateModal/
│ │ ├── NotificationsPanel/
│ │ ├── NotificationsButton/
│ │ ├── NotificationsDropdown/
│ │ └── ...
│ ├── pages/ # Страницы приложения
│ │ ├── HomePage/
│ │ ├── LoginPage/
│ │ ├── RegisterPage/
│ │ ├── ProfilePage/
│ │ ├── UserProfilePage/
│ │ ├── SettingsPage/
│ │ └── ShortsPage/
│ ├── store/ # Redux store
│ │ ├── slices/ # Redux slices
│ │ ├── thunks/ # Async actions
│ │ └── hooks.ts # Типизированные хуки
│ ├── types/ # TypeScript типы
│ ├── utils/ # Утилиты (imageUtils)
│ ├── App.tsx # Главный компонент
│ └── main.tsx # Entry point
├── .env # Переменные окружения
├── LICENSE.md # MIT лицензия
├── TERMS_OF_SERVICE.md # Пользовательское соглашение
└── README.md
Приложение интегрируется с Fakegram Backend:
- Production API:
https://fakegram-backend-production.up.railway.app - Local API:
http://localhost:3000
POST /auth/register- РегистрацияPOST /auth/login- ВходGET /posts- Получение постовPOST /posts- Создание постаPOST /stories- Создание историиGET /users/:id- Профиль пользователяPUT /users/:id- Обновление профиляPOST /users/:id/follow- Подписка на пользователяDELETE /users/:id/follow- Отписка от пользователяGET /notifications- Получение уведомленийPATCH /notifications/:id/read- Отметить уведомление как прочитанное
- Instagram-inspired дизайн
- CSS Modules для изолированных стилей
- Иконки из Material Design
- Плавные анимации и переходы
- Адаптивная вёрстка (мобильные и десктоп)
- JWT токены хранятся в localStorage
- Автоматическое добавление токена к запросам (Axios interceptors)
- Защищённые маршруты с редиректом
- Валидация форм на клиенте
- HTTPS для production API
LoginForm- Форма входаRegisterForm- Форма регистрации с загрузкой аватара- Валидация username (только английские символы)
PostCard- Карточка поста с лайками и комментариямиPostFeed- Лента постовCreatePublicationForm- Форма создания постов и историй с изображениямиCreateModal- Модальное окно для создания контента
ProfilePage- Страница профиля с редактированиемUserProfilePage- Страница профиля другого пользователяAvatarUpload- Загрузка аватара с превьюFollowersModal- Модальное окно подписчиков/подписок- Сетка постов пользователя
NotificationsPanel- Боковая панель уведомлений с фильтрамиNotificationsButton- Кнопка с бейджем непрочитанных уведомленийNotificationsDropdown- Выпадающее меню уведомлений (Header)
Header- Верхняя навигационная панельSidebar- Боковая панель навигацииMobileNavigation- Нижняя панель для мобильных устройствSearchPanel- Панель поиска пользователейExplorePanel- Панель интересного контентаLayout- Общий layout приложенияProtectedRoute- Защита маршрутов
Мы приветствуем вклад в развитие проекта! Пожалуйста:
- Сделайте Fork репозитория
- Создайте feature ветку (
git checkout -b feature/AmazingFeature) - Закоммитьте изменения (
git commit -m 'feat: add some feature') - Запушьте в ветку (
git push origin feature/AmazingFeature) - Откройте Pull Request
Этот проект распространяется под лицензией MIT. Подробности в LICENSE.md.
Используя это приложение, вы соглашаетесь с условиями, изложенными в TERMS_OF_SERVICE.md.
Ivan Podymov
- GitHub: @IPodymov
- Frontend: fakegram-frontend
- Backend: fakegram-backend
- Fakegram Backend - NestJS API сервер
⭐️ Если проект был полезен, поставьте звёздочку!