flins_info

О проекте

flins — это набор примеров тестовых вопросов и заданий для подготовки к техническим собеседованиям по Python. Проект помогает разработчикам практиковаться и улучшать навыки решения типичных задач, которые часто встречаются на технических интервью.

Основные возможности

Telegram-бот и навигация

Telegram-бот предоставляет удобный интерфейс для тренировки вопросов прямо в мессенджере.

Основные команды бота:

Команда Описание
/start Начать работу с ботом

Функциональность бота

Главное меню

Режим тренировки

Работа с категориями

Быстрая тренировка

Бот идеально подходит для регулярной практики “на ходу” и позволяет эффективно готовиться к собеседованиям в любое удобное время.


Стек технологий

Python FastAPI SQLAlchemy PostgreSQL Docker python-telegram-bot Alembic

Backend: FastAPI, Uvicorn, SQLAlchemy ORM
Database: PostgreSQL, asyncpg, Alembic (миграции)
Telegram Integration: python-telegram-bot / aiogram
DevOps: Docker, Docker Compose
Security: JWT, Passlib, Bcrypt
Testing: Pytest, pytest-asyncio
Admin Panel: SQLAdmin
Code Quality: Ruff, Loguru


Интерфейсы взаимодействия

1. REST API

2. Telegram Bot

3. Web Admin Panel

Конфигурация переменных окружения

Локальная разработка (.env файл)

# Database
DATABASE_URL=postgresql+asyncpg://user:password@db:5432/postgres_db
POSTGRES_DB=postgres_db
POSTGRES_USER=postgres_user
POSTGRES_PASSWORD=your_secure_password
POSTGRES_HOST=db
POSTGRES_PORT=5432

# Security
SECRET_KEY=your_secret_key_here
ALGORITHM=HS256

# Telegram Bot
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_ADMIN_ID=your_telegram_user_id

# Admin Accounts
ADMIN1_EMAIL=admin1@example.com
ADMIN2_EMAIL=admin2@example.com
ADMIN_PASSWORD=secure_admin_password

Production переменные (GitHub Secrets)

В GitHub Actions для CI/CD добавить Secrets:


Шаг 1: Подготовка сервера

Обновление пакетов и установка Docker

# Обновите список пакетов
sudo apt update
sudo apt upgrade -y

# Установите curl (если не установлен)
sudo apt install -y curl

# Загрузите скрипт установки Docker
curl -fSL https://get.docker.com -o get-docker.sh

# Запустите скрипт установки
sudo sh ./get-docker.sh

# Установите Docker Compose plugin
sudo apt install -y docker-compose-plugin

# Удалите скрипт (опционально)
rm get-docker.sh

Подготовка файлов конфигурации

# Скопируйте пример env файла
cp .env.example .env

# Откройте файл для редактирования
nano .env

Шаг 2: Конфигурация Nginx

Установка Nginx (если не установлен)

sudo apt install -y nginx

Создание конфиг-файла для вашего домена

# Создайте новый конфиг файл, пример представлен ниже
sudo nano /etc/nginx/sites-available/

Развертывание с Nginx (Reverse Proxy)

Скопируйте на сервер 3 файла:

Запустите команду:

docker-compose up -d

Важно: В текущей конфигурации приложение работает только по HTTP. Для production использования с HTTPS потребуется дополнительная настройка SSL сертификатов.

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /admin {
        proxy_pass http://127.0.0.1:8000/admin;
        proxy_set_header Host $host;
    }
}

Проверка работоспособности

# API доступен
curl http://your-server:8000/docs

# Telegram Bot получает обновления
# (убедитесь, что firewall пропускает исходящие HTTP запросы)

# Admin панель
http://your-server:8000/admin

Команда разработки