Данный проект является веб приложением на MSA. Оно призвано собирать группы добровольцев для оказания помощи в местных благотворительных организациях и социальных учреждениях. На платформе пользователи могут просматривать, присоединяться и предлагать события. Администрация просматривает все предложенные новости и выбирает подходящие. Пользователи могут быть заблокированы за непристойное поведение на платформе или повышены до прав модератора по доверию администрации
Архитектура проекта представлена ниже. В него входит CI CD Pipeline и 5 контейнеров docker.
- Flask
- FastAPI
- Pytest
- SMTPlib
- Gitlab CI
- Docker & docker-compose
- Poetry
- ORM (Sqlalchemy)
- PostgreSQL
- Pgadmin4
- API Telegram
- Python
- Bash
- HTML
- CSS
- Redis
- Poetry
Данное приложение состоит из 5 микросервисов и CI/CD-пайплайна описанных ниже.
Изначально приложение разрабатывалось на self-hosted GitLab CI. Но вскоре было решено перейти на GitHub Actions. Пайплайн содержит в себе 4 стадии:
- Linting(с помощью Ruff)
- Testing(с помощью Pytest)
- Deploy(с помощью docker-compose)
- Notify(с помощью Bash и Telegram Bot API) При отработке пайплайна в Телеграмм приходит сообщение через бота с результатом работы.
- GitHub Actions
- GitLab CI
- Ruff
- Pytest
- Docker compose
- Telegram API
- Bash
Redis-контейнер принимающий CRUD операции от веб приложения.
- Redis
- Docker
PostgreSQL-контейнер принимающий CRUD операции от веб приложения.
- PostgreSQL
- Docker
PgAdmin4-контейнер автоматически подключающийся к PostgreSQL.
- PgAdmin4
- Docker
RESTful контейнер созданный на базе образа python:3.11-alpine. Принимает запросы на отправку через RestAPI с помощью фреймворка FastAPI. Отправляет сообщения по SMTP используя данные для авторизации из переменных окружения.
- FastAPI
- SMTPlib
- Docker
Веб приложение работающее на фреймворке Flask, взаимодействующее с пользователями. Запросы к БД осуществляются через Sqlalchemy. Для кеширования запросов к БД используется Redis.
- Flask
- Python
- HTML
- CSS
- Sqlalchemy
- psycopg2
- Redis
- Docker
- RestAPI