- Python 58.6%
- HTML 24.3%
- TypeScript 14.2%
- CSS 2.5%
- Dockerfile 0.4%
| app | ||
| docs | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| requirements.txt | ||
| tsconfig.json | ||
Effective Mobile Python
Тестовое задание на позицию Python-разработчика в Effective Mobile. Асинхронное веб-приложение на базе FastAPI и SQLAlchemy для управления пользователями, товарами и заказами с гибкой ролевой системой прав доступа.
Демо-сервер и документация
-
Развернутое приложение: em.demo.overklassniy.space
Логин:admin@effective-mobile.ru
Пароль:effectivemobile -
Интерактивная документация: em.demo.overklassniy.space/docs
Документация проекта
Чтобы получить подробную информацию о внутреннем устройстве системы, изучите следующие разделы:
- Архитектура проекта – структура файлов, логика слоев и стек технологий.
- База данных – модели таблиц БД, правила доступа и ранговая иерархия.
- API Эндпоинты – описание API авторизации, администрирования и товаров/заказов.
- Фронтенд и TypeScript – Jinja2 шаблоны и компиляция TypeScript скриптов.
Запуск проекта
1. Подготовка базы данных в PostgreSQL
Перед запуском приложения необходимо создать пользователя и базу данных в PostgreSQL:
CREATE USER em_user WITH PASSWORD 'em_pass';
CREATE DATABASE em_auth OWNER em_user;
GRANT ALL PRIVILEGES ON DATABASE em_auth TO em_user;
2. Установка зависимостей Python и настройка виртуального окружения
Настройка виртуального окружения:
python -m venv .venv
source .venv/bin/activate # Для Linux/macOS
.venv\Scripts\activate # Для Windows
pip install -r requirements.txt
Создание файла секретов .env в корневой директории проекта:
DATABASE_URL=postgresql+asyncpg://em_user:em_pass@localhost/em_auth
SECRET_KEY=secret
3. Инициализация таблиц базы данных
Создание таблиц в базе данных выполняется вручную с помощью скрипта инициализации:
python scripts/init_db.py
Примечание: скрипт создаст структуру таблиц согласно SQLAlchemy моделям. При первом запуске веб-приложения сработает автозаполнение базы данных стандартными ролями, ресурсами и администратором.
4. Запуск сервера
Запуск сервера разработки:
python -m uvicorn app.main:app --reload --port 8000
После запуска локально:
- Приложение доступно на http://127.0.0.1:8000
- Интерактивная документация API доступна на http://127.0.0.1:8000/docs
5. Установка зависимостей Node.js и компиляция TypeScript
Фронтенд скрипты написаны на TypeScript и должны быть скомпилированы в JavaScript перед использованием:
npm install
npx tsc