Skip to content

Минималистичная социальная сеть реализованная на FastAPI с поддержкой регистрации, авторизации, публикации постов, профилей пользователей и ленты (The Wall).

Notifications You must be signed in to change notification settings

cloudsucker/pleo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLEO

WEB Python FastAPI Status Issues

PLEO — это минималистичная социальная сеть реализованная на FastAPI с поддержкой регистрации, авторизации, публикации постов, профилей пользователей и ленты (The Wall).

logo

Проект был создан в учебных целях и демонстрирует архитектуру современного Python веб-приложения.

post


Регистрация и авторизация

Register page Login page

Страницы регистрации и авторизации.

Лента постов (The Wall)

the_wall

Страница с постами пользователей с поддержкой Markdown.

Profile Settings

profile_settings

Страница настроек аккаунта (смена аватарки, username и пароля).

🧭 Содержание

📚 Описание API-запросов

Метод 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:

docker compose up --build

Сайт станет доступен по адресу: localhost:8080.

Без Docker:

1. Создайте виртуальное окружение:

python -m venv .venv

2. Активируйте виртуальное окружение:

  • Windows:

    ```bash
    .venv\Scripts\activate
    ```
    
  • Linux/MacOS:

    ```bash
    source .venv/bin/activate
    ```
    

3. Установите зависимости:

pip install -r requirements.txt

4. Запуск:

Запустите файл 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/

✅ ROADMAP

  • Базовая регистрация и авторизация
  • CRUD для пользователей и постов
  • Лента постов (стена)
  • Профиль пользователя
  • Docker-окружение (FastAPI + Postgres)
  • Администраторы
    • Создание тикетов в тех-поддержку
    • Модерация постов
    • Сброс пароля через админов
  • Главная страница
  • Тесты и CI
  • Улучшение UI/UX
  • Поддержка комментариев и лайков
  • Документация OpenAPI/Swagger

🔗 Зависимости

  • fastapi[standard]
  • jinja2
  • passlib
  • sqlalchemy
  • psycopg2-binary
  • markdown2

📬 Обратная связь

Репозиторий активно развивается, буду рад обратной связи.

По всем вопросам: [email protected]

About

Минималистичная социальная сеть реализованная на FastAPI с поддержкой регистрации, авторизации, публикации постов, профилей пользователей и ленты (The Wall).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published