Fotogram — это современная и мощная платформа для обмена изображениями, общения и взаимодействия. Создайте свой пост с текстом и фото, поделитесь им с друзьями и общайтесь в режиме реального времени! В основе системы лежат FastAPI для разработки бэкенда и JavaScript для управления интерактивным фронтендом.
🔐 Аутентификация пользователей: Полная поддержка системы регистрации и входа с безопасным управлением токенами.
💬 Чат в реальном времени: Общайтесь с друзьями и другими пользователями через встроенный чат, сохраняя всю историю сообщений.
🌐 RESTful API: Интуитивно понятный и легко расширяемый API для интеграции и взаимодействия с другими сервисами.
- Валидация данных: FastAPI использует Pydantic для валидации данных. Когда пользователь отправляет данные, фреймворк автоматически проверяет, все ли в порядке. Если что-то не так, пользователь сразу получает сообщение об ошибке. Это помогает избежать проблем и делает приложение более надежным.
- Быстрота и эффективность: FastAPI очень быстрый! Он помогает обрабатывать запросы быстрее, чем многие другие фреймворки, что отлично подходит для сайтов с большим количеством пользователей.
- Асинхронность: Когда приложение ждет, например, ответ от базы данных или другого сервиса, оно не замирает. Вместо этого оно может обрабатывать другие запросы. Это делает приложение более отзывчивым и эффективным.
- Документация API: FastAPI автоматически генерирует документацию для API с помощью Swagger. Можно легко понять, как использовать приложение и какие данные ему нужно отправлять. Документация обновляется в реальном времени по мере изменения кода.
- Pydantic: Для валидации и сериализации данных.
- Alembic: Для управления миграциями базы данных.
- Docker: Для создания изолированной среды для работы приложения.
- SQLAlchemy: Для работы с базой данных с использованием ORM.
git clone https://github.com/stegruslan/fotogram.git
Чтобы установить зависимости проекта и активировать окружение достаточно выполнить команды:
poetry install
poetry shell
SECRET_KEY=ваш_секретный_ключ
DATABASE_URL=ваша_база_данных
DB_USER=ваше_имя_пользователя
DB_PASSWORD=ваш_пароль
DB_NAME=ваше_имя_базы
Чтобы база данных соответствовала моделям приложения, примените миграции Alembic:
alembic upgrade head
uvicorn main:app --reload
Настройка фронтенда
Для отображения статических файлов и HTML страниц перейдите в директорию front:
cd front
Вы можете использовать Nginx сервер.
Откройте браузер и перейдите по адресу: http://localhost:8000, чтобы увидеть фронтенд в действии.
Убедитесь, что Docker и Docker Compose установлены на вашей системе.
Создайте файл .env
в корне проекта и добавьте следующие параметры:
SECRET_KEY=ваш_секретный_ключ
DATABASE_URL=ваша_база_данных
DB_USER=ваше_имя_пользователя
DB_PASSWORD=ваш_пароль
DB_NAME=ваше_имя_базы
Используйте следующую команду для запуска всех сервисов с помощью Docker Compose:
bash
docker-compose up --build
Docker Compose запустит следующие сервисы:
- Postgres: база данных.
- Frontend: статический сервер для фронтенда.
- Backend: FastAPI приложение для обработки запросов.
- Фронтенд: будет доступен по адресу:
http://localhost
- Бэкенд: API: по адресу
http://localhost:8000
Чтобы использовать все функции платформы, пользователь должен зарегистрироваться или войти в систему. Это можно сделать через API или через интерфейс на сайте.
- Регистрация пользователя:
POST /api/v1/users/signup/
- Вход в систему:
POST /api/v1/users/login/
- Создание поста:
POST /api/v1/posts/create/
- Просмотр всех постов:
GET /api/v1/posts/
- Чат с пользователями:
GET /api/v1/users/chats/