Instagram Clone REST API построенный на NestJS, TypeORM и PostgreSQL.
Полнофункциональный backend для социальной сети в стиле Instagram с поддержкой:
- ✅ Регистрации и аутентификации пользователей (JWT + Cookie-based auth)
- ✅ Постов с фото/видео
- ✅ Историй (stories) с 24-часовым сроком действия
- ✅ Комментариев и лайков
- ✅ Системы подписок (followers/following)
- ✅ Уведомлений в реальном времени
- ✅ Чатов и групповых переписок
- ✅ Reels (короткие видео)
- ✅ Двухфакторной аутентификации через email
- ✅ Загрузки и хранения файлов
- ✅ Коротких ссылок для шаринга
- Framework: NestJS 11
- Architecture: Modular Monolith + Event-Driven
- Language: TypeScript
- Database: PostgreSQL
- ORM: TypeORM 0.3
- Authentication: JWT + httpOnly Cookies
- Events: @nestjs/event-emitter
- Validation: class-validator, class-transformer
- API Docs: Swagger (auto-generated)
- Password Hashing: bcrypt
# Клонирование репозитория
git clone https://github.com/IPodymov/fakegram-backend.git
cd fakegram-backend
# Установка зависимостей
npm install
# Сборка проекта
npm run buildСоздайте файл .env в корне проекта с переменными:
# Database - подключение к PostgreSQL
DATABASE_URL=postgresql://user:password@host:port/database
# JWT - конфигурация авторизации
JWT_SECRET=your-super-secret-key-change-in-production
JWT_EXPIRATION=7d
# App - основные параметры приложения
PORT=7777
NODE_ENV=development
# CORS - разрешенные источники (используйте URL фронтенда в production)
CORS_ORIGIN=http://localhost:3000
# URLs
BASE_URL=http://localhost:7777
FRONTEND_URL=http://localhost:3000| Переменная | Описание | Пример |
|---|---|---|
DATABASE_URL |
Строка подключения к PostgreSQL | postgresql://user:pass@localhost:5432/fakegram |
JWT_SECRET |
Секретный ключ для подписания JWT токенов | your-secret-key |
JWT_EXPIRATION |
Время жизни токена | 7d, 24h, 3600 |
PORT |
Порт запуска сервера | 7777 |
NODE_ENV |
Окружение | development, production |
CORS_ORIGIN |
Адрес фронтенда для CORS | http://localhost:3000 |
BASE_URL |
Базовый URL приложения | http://localhost:7777 |
FRONTEND_URL |
URL фронтенда | http://localhost:3000 |
# Development (с автоперезагрузкой)
npm run start:dev
# Production
npm run build
npm run start:prod
# Debug режим
npm run start:debug# Unit тесты
npm test
# Тесты с покрытием
npm test:cov
# E2E тесты
npm run test:e2eПолная документация разделена на несколько файлов в папке docs/:
- API.md - Полное описание всех API endpoint'ов
- STRUCTURE.md - Архитектура и структура проекта
- 2FA_IMPLEMENTATION.md - Двухфакторная аутентификация
- UPLOAD_IMAGES.md - Загрузка изображений и файлов
- TERMS_OF_SERVICE.md - Условия использования
API использует JWT токены, которые хранятся в httpOnly cookies. Это обеспечивает защиту от XSS атак.
При запросах с фронтенда используйте:
// Fetch API
fetch('http://localhost:7777/api/endpoint', {
credentials: 'include', // Обязательно для отправки cookies
});
// Axios
axios.defaults.withCredentials = true;MIT - см. LICENSE.md
См. полные Условия использования для информации о:
- Ответственности пользователя
- Политике конфиденциальности
- Использовании API
- Ограничениях загрузки файлов
- Отказе от ответственности
Важно: Это учебный/демонстрационный проект. Не рекомендуется использовать в production без надлежащего аудита безопасности.
Ivan Podymov
- GitHub: @IPodymov
⭐️ Если проект был полезен, поставьте звездочку!
Check out a few resources that may come in handy when working with NestJS:
- Visit the NestJS Documentation to learn more about the framework.
- For questions and support, please visit our Discord channel.
- To dive deeper and get more hands-on experience, check out our official video courses.
- Deploy your application to AWS with the help of NestJS Mau in just a few clicks.
- Visualize your application graph and interact with the NestJS application in real-time using NestJS Devtools.
- Need help with your project (part-time to full-time)? Check out our official enterprise support.
- To stay in the loop and get updates, follow us on X and LinkedIn.
- Looking for a job, or have a job to offer? Check out our official Jobs board.
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
Nest is MIT licensed.