Effective Mobile Backend App
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ OAuth 2.0 Ρ ΡΠΎΠ»Π΅Π²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΈ Π²ΡΠ΄Π°ΡΠ΅ΠΉ ΠΏΡΠ°Π².
ΠΠ΅ΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ: Python 3.12
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ: FastAPI, sqlalchemy (ORM, +asyncpg), alembic, Redis, PyJWT
CI/CD ΡΡΠ΅ΠΊ: Docker, git
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ:
git clone https://github.com/Jeson3532/EffectiveMobile.git
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
python -m venv .venv | python3 -m venv .venv
source .venv/bin/activate (Linux) | ./.venv/Scripts/activate (PS)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ:
pip install -r requirements.txt
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ PYTHONPATH Π½Π° ΠΊΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
PS: $env:PYTHONPATH='.'
CMD: set PYTHONPATH=.
Linux & macOS: export PYTHONPATH=.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» .env ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅:
# Security
SECRET_KEY = YOUR_SECRET_KEY
# Database
POSTGRES_USER = admin
POSTGRES_PASSWORD = admin
POSTGRES_DB = efmobile
POSTGRES_PORT = 5432
# Redis
REDIS_HOST = redis_db
REDIS_PORT = 6379
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Docker:
Windows: ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Docker Desktop ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ WSL Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ.
macOS: ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Docker Desktop ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ.
Linix: Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Docker Engine ΡΠ΅ΡΠ΅Π· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ.
ΠΠ°Π±ΠΈΠ»Π΄ΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ:
docker compose up -d --build
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π΄Π°ΠΌΠΏ Π±Π°Π·Ρ:
.sql: cat db_backup.sql | docker exec -i effective-mobile-postgres_db-1 psql -U admin -d efmobile
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π²ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π½ΠΎ Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ):
docker exec -it effective-mobile-backend-1 alembic stamp head
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ localhost:8000/docs (Swagger) Π»ΠΈΠ±ΠΎ localhost:8000/redoc (ReDoc) Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ 'Authorize' ΡΠΏΡΠ°Π²Π° ΡΠ²Π΅ΡΡ
Ρ ΠΈ Π²ΠΎΠΉΡΠΈ Π² Π°ΠΊΠΊΠ°ΡΠ½Ρ Ρ root-ΠΏΡΠ°Π²Π°ΠΌΠΈ:
username: root@gmail.com
password: 12345678