PLEO — это минималистичная социальная сеть реализованная на FastAPI с поддержкой регистрации, авторизации, публикации постов, профилей пользователей и ленты (The Wall
).
Проект был создан в учебных целях и демонстрирует архитектуру современного Python веб-приложения.
Страницы регистрации и авторизации.
Страница с постами пользователей с поддержкой Markdown
.
Страница настроек аккаунта (смена аватарки, username и пароля).
- 📚 Описание API-запросов
- 📦 Установка
- 🧪 Тестирование
- 🧱 Архитектура проекта
- ✅ ROADMAP
- 🔗 Зависимости
- 📬 Обратная связь
Метод | Endpoint | Описание | Возвращаемые данные | Авторизация |
---|---|---|---|---|
GET | /post/ |
Получить все посты | Список постов (JSON) | Да |
POST | /post/ |
Добавить новый пост | Данные нового поста (JSON) | Да |
GET | /post/{post_id} |
Получить пост по id | Данные поста (JSON) | Да |
PUT | /post/{post_id} |
Обновить пост | Данные обновлённого поста | Да |
GET | /user/{user_id} |
Получить пользователя по id | Данные пользователя (JSON) | Да |
PUT | /user/{user_id} |
Обновить пользователя | Данные пользователя (JSON) | Да |
POST | /auth/login |
Вход пользователя | Данные пользователя (JSON) | Нет |
POST | /auth/register |
Регистрация пользователя | Данные пользователя (JSON) | Нет |
POST | /auth/logout |
Выход пользователя | Статус | Да |
Клонируйте репозиторий:
git clone https://github.com/cloudsucker/pleo.git
cd pleo
docker compose up --build
Сайт станет доступен по адресу: localhost:8080
.
python -m venv .venv
-
Windows:
```bash .venv\Scripts\activate ```
-
Linux/MacOS:
```bash source .venv/bin/activate ```
pip install -r requirements.txt
Запустите файл main.py
из папки app
:
cd app
uvicorn main:app --reload
Сайт станет доступен по адресу: localhost:8000
Important
Важно, при запуске без Docker Compose вам нужно самому поднять PostgreSQL и заменить параметры подключения в файле app/db.py
.
Без этого вы будете получать ошибку UnicodeDecodeError: 'utf-8' codec can't decode byte 0xdd in position 52: invalid continuation byte
, так как на текущий момент
в DATABASE_URL = "postgresql+psycopg2://pleo_user:pleo_pass@pleo-db:5432/pleo-db"
записано имя Docker-контейнера.
В проекте не реализованы отдельные тесты, но вы можете проверить работу API вручную через Postman
или curl
, либо добавить свои тесты с помощью unittest
/pytest
.
Буду рад помощи тестировщиков :)
pleo/
├── app/
│ ├── main.py # Точка входа FastAPI
│ ├── db.py # Подключение к БД и сессии
│ ├── models/ # SQLAlchemy-модели (User, Post, Session)
│ ├── routers/ # FastAPI-роутеры (user, post, auth, wall, profile)
│ ├── schemas/ # Pydantic-схемы (DTO, валидация)
│ ├── static/ # Статика, шаблоны, стили, html
│ └── ...
├── requirements.txt # Зависимости
├── dockerfile # Docker-образ приложения
├── compose.yml # Docker Compose (FastAPI + Postgres)
└── README.md
- FastAPI backend с роутерами для пользователей, постов, профиля, стены и авторизации
- SQLAlchemy ORM, PostgreSQL (docker)
- Jinja2 для шаблонов страниц
- Авторизация через сессии (cookie)
- Вся логика — в папке
app/
- Базовая регистрация и авторизация
- CRUD для пользователей и постов
- Лента постов (стена)
- Профиль пользователя
- Docker-окружение (FastAPI + Postgres)
- Администраторы
- Создание тикетов в тех-поддержку
- Модерация постов
- Сброс пароля через админов
- Главная страница
- Тесты и CI
- Улучшение UI/UX
- Поддержка комментариев и лайков
- Документация OpenAPI/Swagger
- fastapi[standard]
- jinja2
- passlib
- sqlalchemy
- psycopg2-binary
- markdown2
Репозиторий активно развивается, буду рад обратной связи.
По всем вопросам: [email protected]