readme add
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# The_DisExcel_project
|
||||
|
||||
A FastAPI project combining Excel and digital data ("The Great Excel project that is going to be built from Excel and digital projects").
|
||||
|
||||
## Stack
|
||||
|
||||
- Python >= 3.13
|
||||
- FastAPI + Uvicorn / Gunicorn
|
||||
- SQLAlchemy 2.0 (async) + Alembic (migrations)
|
||||
- PostgreSQL (asyncpg, psycopg2)
|
||||
- Pydantic 2 / Pydantic Settings
|
||||
- Poetry — dependency management
|
||||
- Docker, Ansible — deployment
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
src/
|
||||
├── database/ # DB CRUD operations
|
||||
├── errors/ # HTTP errors
|
||||
├── logging/ # logging middleware
|
||||
├── migrations/ # Alembic migrations
|
||||
├── models/ # Pydantic and SQLAlchemy models, configs
|
||||
├── reports/ # reports
|
||||
├── service/ # business logic (auth, users_crud)
|
||||
└── web/ # routes (protected_routes)
|
||||
```
|
||||
|
||||
Layers are connected top to bottom: `web → service → database → models`.
|
||||
|
||||
## Authentication
|
||||
|
||||
- JWT access + refresh tokens
|
||||
- Refresh token is stored in the DB as a SHA256 hash, with rotation and revocation support
|
||||
- Passwords are hashed with bcrypt
|
||||
- RBAC: direct user permissions + permissions via groups, checked through `require_permissions()`
|
||||
|
||||
## Testing
|
||||
|
||||
```
|
||||
tests/
|
||||
├── unit/
|
||||
├── integrated/
|
||||
└── e2e/
|
||||
```
|
||||
|
||||
Uses pytest, pytest-asyncio, pytest-cov, pytest-mock, allure-pytest.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
poetry install
|
||||
```
|
||||
|
||||
## Running migrations
|
||||
|
||||
```bash
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
## CI/CD
|
||||
|
||||
Pipeline is set up via Gitea Actions (`.gitea/workflows/ci.yml`).
|
||||
|
||||
## Deployment
|
||||
|
||||
The repository includes ready-made `docker/` and `ansible/` configs for containerization and deployment.
|
||||
|
||||
## License
|
||||
|
||||
MH.Dmitrii's project
|
||||
|
||||
Reference in New Issue
Block a user