TaskFlow — это приложение для управления задачами, демонстрирующее мои навыки разработки. Проект включает серверную часть (backend) на FastAPI и в будущем будет дополнен клиентским приложением (frontend) на Flutter.
- Аутентификация и авторизация с использованием JWT (включая refresh-токены).
- Полный набор операций CRUD для задач и пользователей.
- Frontend на Flutter.
- FastAPI — фреймворк для разработки API.
- PostgreSQL — для работы с базой данных (SQLite в режиме разработки).
- Docker — для контейнеризации приложения.
- Pytest — для написания тестов.
- Flutter — для разработки мобильного и веб-приложения.
- Vercel билдится flutter через каждый коммит на бесплатном тарифе
- Render содержится Backend на бесплатном тарифе, который билдится через Docker
- Supabase используется для PostgreSQL, к которому обращается backend на Render
- GitHub Actions: Сделано для автоматизации тестирования. Больше применения не нашел пока что
Шаг 1: Подготовьте .env файл
- Создайте .env файл в директории backend, основываясь на backend/.env.example.
Шаг 2: Сборка и запуск контейнеров
- Убедитесь, что у вас установлен Docker и Docker Compose.
- Запустите
docker-compose up --build
После запуска:
- Frontend: будет доступен по адресу http://localhost:8080.
- Backend API: будет доступен по адресу http://localhost:8080/api (перенаправление через nginx) или же http://localhost:8000/api.
Перед запуском приложения убедитесь, что в папке backend существует файл .env. Если его нет:
- Скопируйте шаблон
.env.exampleв.env:cp backend/.env.example backend/.env
- Заполните необходимые переменные в файле .env.
- Убедитесь, что Docker установлен и работает.
- Запустите проект:
docker-compose up --build
- Перейдите в папку backend
- Создайте виртуальное окружение
python -m venv venv source venv/bin/activate # Для Linux/macOS venv\Scripts\activate # Для Windows
- Установите зависимости:
pip install -r backend/requirements.txt
- Если хотите проверить тесты, то
pytest - Запустить через
uvicorn main:app --reload
Если требуется разрешить запросы с определенных доменов, отредактируйте файл main.py, добавив нужные домены в список разрешённых:
allowed_origins = [
"http://127.0.0.1:8080",
"http://localhost:8080", # Для локального тестирования
"https://ваш-домен.com", # Укажите свой домен
]- Установленный Flutter SDK.
- Запущенный backend
- Перейдите в папку
frontend:cd frontend - Установить зависимости
flutter pub get - Запустить веб-сервер (Порт с учетом CORS)
flutter run -d chrome --web-port=8080 - Открыть сайт http://localhost:8080
Ваше приложение взаимодействует с API, и вам нужно указать базовый URL для запросов во Flutter.
Если к API можно обратиться через тот же домен (your-domain.com/api), то ничего менять не надо!
Иначе в frontend/lib/main.dart вам надо явно написать ваш домен
final apiClient = ApiClient(baseUrl: "Ваш домен");Frontend: Начать разработку клиентской части на Flutter.PostgreSQL: Перенести проект с SQLite на PostgreSQL.CI/CD: Настроить автоматическое тестирование и сборку через GitHub Actions.Деплой: Развернуть проект на сервере (можно и сейчас, но только backend)