shaapi 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- shaapi/__init__.py +3 -0
- shaapi/cli.py +97 -0
- shaapi/generator.py +114 -0
- shaapi/template/.dockerignore +37 -0
- shaapi/template/.env.template +59 -0
- shaapi/template/.gitattributes +12 -0
- shaapi/template/.gitignore +170 -0
- shaapi/template/.gitlab-ci.yml +89 -0
- shaapi/template/Dockerfile +59 -0
- shaapi/template/LICENSE +21 -0
- shaapi/template/README.md +206 -0
- shaapi/template/backend/.gitignore +164 -0
- shaapi/template/backend/__init__.py +0 -0
- shaapi/template/backend/alembic/README +1 -0
- shaapi/template/backend/alembic/env.py +102 -0
- shaapi/template/backend/alembic/script.py.mako +26 -0
- shaapi/template/backend/alembic/versions/2026_06_08_1024-64524c63b666_initial.py +143 -0
- shaapi/template/backend/alembic.ini +117 -0
- shaapi/template/backend/app/__init__.py +55 -0
- shaapi/template/backend/app/admin/__init__.py +1 -0
- shaapi/template/backend/app/admin/api/v1/__init__.py +0 -0
- shaapi/template/backend/app/admin/api/v1/auth.py +59 -0
- shaapi/template/backend/app/admin/api/v1/casbin.py +218 -0
- shaapi/template/backend/app/admin/api/v1/login_log.py +63 -0
- shaapi/template/backend/app/admin/api/v1/opera_log.py +61 -0
- shaapi/template/backend/app/admin/api/v1/role.py +108 -0
- shaapi/template/backend/app/admin/api/v1/user.py +47 -0
- shaapi/template/backend/app/admin/schema/casbin_rule.py +45 -0
- shaapi/template/backend/app/admin/schema/login_log.py +36 -0
- shaapi/template/backend/app/admin/schema/opera_log.py +43 -0
- shaapi/template/backend/app/admin/schema/role.py +36 -0
- shaapi/template/backend/app/admin/schema/sso.py +37 -0
- shaapi/template/backend/app/admin/schema/token.py +74 -0
- shaapi/template/backend/app/admin/schema/user.py +93 -0
- shaapi/template/backend/app/admin/service/auth_service.py +233 -0
- shaapi/template/backend/app/admin/service/casbin_service.py +135 -0
- shaapi/template/backend/app/admin/service/login_log_service.py +62 -0
- shaapi/template/backend/app/admin/service/opera_log_service.py +31 -0
- shaapi/template/backend/app/admin/service/role_service.py +79 -0
- shaapi/template/backend/app/admin/service/secure_token_service.py +60 -0
- shaapi/template/backend/app/admin/service/user_service.py +153 -0
- shaapi/template/backend/app/api.py +11 -0
- shaapi/template/backend/common/__init__.py +0 -0
- shaapi/template/backend/common/cloud_storage/__init__.py +11 -0
- shaapi/template/backend/common/cloud_storage/cloud_storage.py +180 -0
- shaapi/template/backend/common/dataclasses.py +52 -0
- shaapi/template/backend/common/email_conf/email.py +105 -0
- shaapi/template/backend/common/enums.py +144 -0
- shaapi/template/backend/common/exception/__init__.py +0 -0
- shaapi/template/backend/common/exception/errors.py +87 -0
- shaapi/template/backend/common/exception/exception_handler.py +280 -0
- shaapi/template/backend/common/log.py +123 -0
- shaapi/template/backend/common/model.py +68 -0
- shaapi/template/backend/common/pagination.py +83 -0
- shaapi/template/backend/common/response/__init__.py +0 -0
- shaapi/template/backend/common/response/response_code.py +158 -0
- shaapi/template/backend/common/response/response_schema.py +110 -0
- shaapi/template/backend/common/schema.py +144 -0
- shaapi/template/backend/common/security/jwt.py +203 -0
- shaapi/template/backend/common/security/rbac.py +98 -0
- shaapi/template/backend/common/security/sec_token.py +6 -0
- shaapi/template/backend/common/socketio/action.py +11 -0
- shaapi/template/backend/common/socketio/server.py +50 -0
- shaapi/template/backend/common/sso/base.py +69 -0
- shaapi/template/backend/common/sso/google.py +127 -0
- shaapi/template/backend/core/conf.py +208 -0
- shaapi/template/backend/core/path_conf.py +24 -0
- shaapi/template/backend/core/registrar.py +195 -0
- shaapi/template/backend/crud/__init__.py +1 -0
- shaapi/template/backend/crud/crud_base.py +35 -0
- shaapi/template/backend/crud/crud_casbin.py +46 -0
- shaapi/template/backend/crud/crud_login_log.py +58 -0
- shaapi/template/backend/crud/crud_opera_log.py +58 -0
- shaapi/template/backend/crud/crud_role.py +128 -0
- shaapi/template/backend/crud/crud_user.py +267 -0
- shaapi/template/backend/database/__init__.py +0 -0
- shaapi/template/backend/database/db_postgres.py +125 -0
- shaapi/template/backend/database/db_redis.py +62 -0
- shaapi/template/backend/entrypoint-api.sh +19 -0
- shaapi/template/backend/lang/en/app.py +18 -0
- shaapi/template/backend/lang/en/auth.py +10 -0
- shaapi/template/backend/lang/fr/app.py +18 -0
- shaapi/template/backend/lang/fr/auth.py +10 -0
- shaapi/template/backend/main.py +54 -0
- shaapi/template/backend/middleware/__init__.py +1 -0
- shaapi/template/backend/middleware/access_middleware.py +19 -0
- shaapi/template/backend/middleware/i18n_middleware.py +19 -0
- shaapi/template/backend/middleware/jwt_auth_middleware.py +73 -0
- shaapi/template/backend/middleware/opera_log_middleware.py +179 -0
- shaapi/template/backend/middleware/state_middleware.py +26 -0
- shaapi/template/backend/models/__init__.py +10 -0
- shaapi/template/backend/models/associations.py +20 -0
- shaapi/template/backend/models/casbin_rule.py +30 -0
- shaapi/template/backend/models/login_log.py +28 -0
- shaapi/template/backend/models/opera_log.py +36 -0
- shaapi/template/backend/models/role.py +27 -0
- shaapi/template/backend/models/user.py +30 -0
- shaapi/template/backend/seeder/json/admin.json +15 -0
- shaapi/template/backend/seeder/json/user.json +15 -0
- shaapi/template/backend/seeder/run.py +34 -0
- shaapi/template/backend/static/ip2region.xdb +0 -0
- shaapi/template/backend/templates/build/meet.html +169 -0
- shaapi/template/backend/templates/build/new_account.html +373 -0
- shaapi/template/backend/templates/build/reset-password.html +170 -0
- shaapi/template/backend/templates/build/test_email.html +25 -0
- shaapi/template/backend/templates/build/welcome-one-1.html +160 -0
- shaapi/template/backend/templates/build/welcome-one.html +178 -0
- shaapi/template/backend/templates/build/welcome-two.html +234 -0
- shaapi/template/backend/templates/index.html +0 -0
- shaapi/template/backend/templates/src/new_account.mjml +15 -0
- shaapi/template/backend/templates/src/reset_password.mjml +19 -0
- shaapi/template/backend/templates/src/test_email.mjml +11 -0
- shaapi/template/backend/templates/ws/ws.html +70 -0
- shaapi/template/backend/utils/demo_site.py +18 -0
- shaapi/template/backend/utils/encrypt.py +108 -0
- shaapi/template/backend/utils/health_check.py +34 -0
- shaapi/template/backend/utils/prometheus.py +135 -0
- shaapi/template/backend/utils/request_parse.py +110 -0
- shaapi/template/backend/utils/serializers.py +75 -0
- shaapi/template/backend/utils/timezone.py +51 -0
- shaapi/template/backend/utils/trace_id.py +7 -0
- shaapi/template/backend/utils/translator.py +28 -0
- shaapi/template/devops/scripts/deploy.sh +7 -0
- shaapi/template/devops/scripts/setup_env.sh +62 -0
- shaapi/template/docker-compose.monitoring.yml +63 -0
- shaapi/template/docker-compose.override.yml +12 -0
- shaapi/template/docker-compose.yml +90 -0
- shaapi/template/docker-run.sh +99 -0
- shaapi/template/etc/dashboards/fastapi-observability.json +1044 -0
- shaapi/template/etc/dashboards.yaml +10 -0
- shaapi/template/etc/grafana/datasource.yml +79 -0
- shaapi/template/etc/prometheus/prometheus.yml +52 -0
- shaapi/template/package-lock.json +2102 -0
- shaapi/template/package.json +16 -0
- shaapi/template/pyproject.toml +78 -0
- shaapi/template/uv.lock +2866 -0
- shaapi-0.1.0.dist-info/METADATA +92 -0
- shaapi-0.1.0.dist-info/RECORD +141 -0
- shaapi-0.1.0.dist-info/WHEEL +4 -0
- shaapi-0.1.0.dist-info/entry_points.txt +2 -0
- shaapi-0.1.0.dist-info/licenses/LICENCE +21 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shaapi
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Scaffold lean, batteries-included FastAPI backends — like django-admin, for FastAPI.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Shalom-302/shaapi
|
|
6
|
+
Project-URL: Repository, https://github.com/Shalom-302/shaapi
|
|
7
|
+
Author-email: Shalom <shalomtehe219@gmail.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENCE
|
|
10
|
+
Keywords: backend,boilerplate,cli,fastapi,scaffold,starter
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Framework :: FastAPI
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Requires-Python: >=3.11
|
|
16
|
+
Requires-Dist: rich>=13
|
|
17
|
+
Requires-Dist: typer>=0.12
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# shaapi
|
|
21
|
+
|
|
22
|
+
**Scaffold lean, batteries-included FastAPI backends — like `django-admin`, for FastAPI.**
|
|
23
|
+
|
|
24
|
+
Beginners shouldn't have to architect a production backend from scratch. `shaapi`
|
|
25
|
+
gives you a clean, opinionated FastAPI project — async SQLAlchemy + Alembic,
|
|
26
|
+
Postgres, Redis, JWT auth, Casbin RBAC, file storage, and a one-command Docker
|
|
27
|
+
workflow — generated in seconds.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install shaapi
|
|
31
|
+
shaapi create-project "my api"
|
|
32
|
+
cd my_api
|
|
33
|
+
./docker-run.sh up
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
→ API live at `http://localhost:8000`, Swagger at `http://localhost:8000/admin/api/v1/docs`.
|
|
37
|
+
|
|
38
|
+
## What you get
|
|
39
|
+
|
|
40
|
+
- **FastAPI** (async) with a clean layered architecture (`app/`, `common/`, `core/`, `crud/`, `models/`, `schemas/`)
|
|
41
|
+
- **SQLAlchemy 2 + Alembic** migrations, **Postgres** (auto-create in dev, migrations in prod)
|
|
42
|
+
- **Redis** cache + rate limiting
|
|
43
|
+
- **JWT auth** + **Casbin RBAC** (users, roles, permissions)
|
|
44
|
+
- **File storage** (MinIO / S3 / GCS)
|
|
45
|
+
- **Docker**: multi-stage slim image built with [uv], hot-reload in dev (source bind-mount), `docker-run.sh` orchestration
|
|
46
|
+
- **Opt-in observability** (`--monitoring`): Prometheus, Grafana, Tempo, Loki
|
|
47
|
+
|
|
48
|
+
## CLI
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
shaapi create-project "my api" # interactive
|
|
52
|
+
shaapi create-project "my api" -y # accept defaults
|
|
53
|
+
shaapi create-project "my api" --monitoring --no-git
|
|
54
|
+
shaapi --version
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## In your generated project
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
./docker-run.sh up # build + start everything (dev: hot-reload)
|
|
61
|
+
./docker-run.sh up --monitoring
|
|
62
|
+
./docker-run.sh logs # tail logs
|
|
63
|
+
./docker-run.sh migrate # alembic upgrade head
|
|
64
|
+
./docker-run.sh makemigrations "add posts table"
|
|
65
|
+
./docker-run.sh down
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Documentation
|
|
69
|
+
|
|
70
|
+
Full docs in **English** and **French** under [`docs/`](docs/):
|
|
71
|
+
|
|
72
|
+
| | English | Français |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| Getting started | [getting-started](docs/en/getting-started.md) | [démarrage](docs/fr/demarrage.md) |
|
|
75
|
+
| Architecture | [architecture](docs/en/architecture.md) | [architecture](docs/fr/architecture.md) |
|
|
76
|
+
| Create a feature | [create-a-feature](docs/en/create-a-feature.md) | [créer une fonctionnalité](docs/fr/creer-une-fonctionnalite.md) |
|
|
77
|
+
| Deployment | [deployment](docs/en/deployment.md) | [déploiement](docs/fr/deploiement.md) |
|
|
78
|
+
|
|
79
|
+
## Example
|
|
80
|
+
|
|
81
|
+
[`examples/todolist`](examples/todolist) — a complete authenticated Todo API
|
|
82
|
+
(JWT, per-user ownership, admin-only endpoint) built on top of shaapi in 5 files.
|
|
83
|
+
|
|
84
|
+
## Status
|
|
85
|
+
|
|
86
|
+
Alpha. See the repo for roadmap and contribution guidelines.
|
|
87
|
+
|
|
88
|
+
## License
|
|
89
|
+
|
|
90
|
+
MIT
|
|
91
|
+
|
|
92
|
+
[uv]: https://github.com/astral-sh/uv
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
shaapi/__init__.py,sha256=mxRWDTaA-USyLERuU1dy5FFAmGMUhq4QvdvGtWErQj8,92
|
|
2
|
+
shaapi/cli.py,sha256=pK7uQvN7muSK96PCTY4L0GVeAHgyzg7wh_gV9OgleFg,2931
|
|
3
|
+
shaapi/generator.py,sha256=49ZGH-n3j9YaQwYzK4dlsdrJx48ksE1R1czyPrIghrI,4054
|
|
4
|
+
shaapi/template/.dockerignore,sha256=o0w0bScv7CodTdAicYLCTy1zqaILssbYw6OfOaOnbU4,378
|
|
5
|
+
shaapi/template/.env.template,sha256=ewH30n-thyZmn-8nZruzUgmC0QfJ7sC3q3Brlpb7OAE,1677
|
|
6
|
+
shaapi/template/.gitattributes,sha256=bmYbxQRRsX3BsDxFaovrBbWA-l03q3zDPNKyUvgSs2E,274
|
|
7
|
+
shaapi/template/.gitignore,sha256=jBHJvEK1dpKcKCXsqY1Jv_oBuV8BQk9cPPPR1a1xXlg,2985
|
|
8
|
+
shaapi/template/.gitlab-ci.yml,sha256=N3WuQSBb5sqqWySBP1Nx1_4x-UlAT3CEaM7rgHj4PIk,3017
|
|
9
|
+
shaapi/template/Dockerfile,sha256=3yppfWfdbuUFQzubKGxHtns_mtFE35RQ-kNAcMVksDY,1943
|
|
10
|
+
shaapi/template/LICENSE,sha256=gBK4TbFj-BKtAt59wnO9m_HYM2C_W11fxhhrYAfr944,1063
|
|
11
|
+
shaapi/template/README.md,sha256=LaSkD1DxCJ880Fb7GMFKiBbbaQDsiD5aXUN9sNtk7qE,7676
|
|
12
|
+
shaapi/template/docker-compose.monitoring.yml,sha256=2DtuouxLPe3B0600GDVYjd_ouXDYc01EG96ftbzEhm4,1763
|
|
13
|
+
shaapi/template/docker-compose.override.yml,sha256=CyHPpE4FOEfAlkSgI09nN6htKNvxCdlf2Csc5SZXRwY,505
|
|
14
|
+
shaapi/template/docker-compose.yml,sha256=Hx0QO2RHZlT63HMXIM6Q_xC1PsRkLfZ_5unNk86i-vg,2143
|
|
15
|
+
shaapi/template/docker-run.sh,sha256=F-2N_Wgsu3uKyjVVcZfrC4oAkhU6g8JwWds6S9mfA-A,3165
|
|
16
|
+
shaapi/template/package-lock.json,sha256=CSgxCAvVvdjPy6dkuPzA-PFPfgvdMcWVbqd5vdNLWfA,78693
|
|
17
|
+
shaapi/template/package.json,sha256=70UiZ0mUUD-GCt1CJC9sqjpExOUjDRZM6PEd6ahb-ag,328
|
|
18
|
+
shaapi/template/pyproject.toml,sha256=o5s7quUk2ABhTRyKcno0lOJ3DAYMraxmFkaQcaZGGbU,2137
|
|
19
|
+
shaapi/template/uv.lock,sha256=4TT6a_2V-LT1EBKYGAJeye7Dpa-zwfuGt0Vo6CuqlpI,492253
|
|
20
|
+
shaapi/template/backend/.gitignore,sha256=F0fC5_F6_IJBrP_ec6-Ms42jYc9xcs-iFA4kB25N3-4,2879
|
|
21
|
+
shaapi/template/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
shaapi/template/backend/alembic.ini,sha256=n1wf9Gi_ZktliXr_qgom10OC5XMZW36NMK-UfLdIC8Q,3711
|
|
23
|
+
shaapi/template/backend/entrypoint-api.sh,sha256=u28PNtB97kg4rIXtUWZ8rr3CIL9uyAkNmmNHgDzH8_s,599
|
|
24
|
+
shaapi/template/backend/main.py,sha256=RN2DVVnF6m7X9FPNme637iwk2I5qBDAXSWiI3rrrCLQ,1713
|
|
25
|
+
shaapi/template/backend/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
|
26
|
+
shaapi/template/backend/alembic/env.py,sha256=aMuZyz4nV3UqCACuXTHZ9YgmvKsOz9RimAiXMr6V_1Q,2661
|
|
27
|
+
shaapi/template/backend/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
|
28
|
+
shaapi/template/backend/alembic/versions/2026_06_08_1024-64524c63b666_initial.py,sha256=9Evn0ScwnazOY6_cf0X7wIfppXRq2Dh2ux9rn4yO-vk,8122
|
|
29
|
+
shaapi/template/backend/app/__init__.py,sha256=GIeEogm76w6lRB4LQpgvuy2Aq_jKR_b6IX2OusBvzZo,2073
|
|
30
|
+
shaapi/template/backend/app/api.py,sha256=6mkZg4xF_sC5MEXe0e9sNSQPNK9dkoSwLk6OvpFr7Qg,360
|
|
31
|
+
shaapi/template/backend/app/admin/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
32
|
+
shaapi/template/backend/app/admin/api/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
+
shaapi/template/backend/app/admin/api/v1/auth.py,sha256=oUu96A2I9f43YrrdXNnZC5pd2gjiyuVYvzHvMzwsY-w,2375
|
|
34
|
+
shaapi/template/backend/app/admin/api/v1/casbin.py,sha256=8FoUA7e0aocpuoIJKbKKNeog6O4PSMfBjeM9_0vPUx4,7263
|
|
35
|
+
shaapi/template/backend/app/admin/api/v1/login_log.py,sha256=hW7--UfuYL13iSdWazBHNETwrR9ciI-WlPczOjdDyEo,2007
|
|
36
|
+
shaapi/template/backend/app/admin/api/v1/opera_log.py,sha256=YupdrrMLio5jCGI9HtESfvudZRvNYr4r1mDCGx_LzJo,1999
|
|
37
|
+
shaapi/template/backend/app/admin/api/v1/role.py,sha256=plJzB2gO4UC6dlwzI1tCjE-ijZNuYemkpx_XirdQ8hg,3534
|
|
38
|
+
shaapi/template/backend/app/admin/api/v1/user.py,sha256=DMXDDhuOknYw6ZtUGWMzU5TO4roLOlzDKvL15qnfo_M,1607
|
|
39
|
+
shaapi/template/backend/app/admin/schema/casbin_rule.py,sha256=_l-35GZol8nKZbLhxexkDNxRUGQFdv-kvz8oRtbI8qc,1147
|
|
40
|
+
shaapi/template/backend/app/admin/schema/login_log.py,sha256=hqIWeVHWkSwMJb9W9-e0btG8zheMwYdvrq3uvM5LA9g,663
|
|
41
|
+
shaapi/template/backend/app/admin/schema/opera_log.py,sha256=LVpqaZqI221zPnA7CMU2c1TicjPcXjlTlPUbD3P35i0,939
|
|
42
|
+
shaapi/template/backend/app/admin/schema/role.py,sha256=kalhBMZ3ZiIGtZoCE97iAtJIWAwOLRPyxACJND9lMW0,846
|
|
43
|
+
shaapi/template/backend/app/admin/schema/sso.py,sha256=xQN5G3iI4Eudz0cH-dKWIeKT9enJ8bxq0ZqaVBsPZfw,693
|
|
44
|
+
shaapi/template/backend/app/admin/schema/token.py,sha256=8vWZqbXIOSZ2wkMmYOBAiIJ5Pptut5Z6HMxtV4XV4Cs,1585
|
|
45
|
+
shaapi/template/backend/app/admin/schema/user.py,sha256=SGfNfCcIkI0qo4W2D9a3ScD_nLC5Ul4nVVLa-CNwWM8,2155
|
|
46
|
+
shaapi/template/backend/app/admin/service/auth_service.py,sha256=rmwMXfHVrumRRe5lCxUcgTS3Tqi8RxZ8GtX8SAEf8YE,10170
|
|
47
|
+
shaapi/template/backend/app/admin/service/casbin_service.py,sha256=wtLpXIlWeA2_ohN-V3n99INb67uWuJJmPnudWQRXUKQ,5019
|
|
48
|
+
shaapi/template/backend/app/admin/service/login_log_service.py,sha256=aqY2LTko4k2GA956I7pUW4uftyjURIbFXoUqX01AmtU,1932
|
|
49
|
+
shaapi/template/backend/app/admin/service/opera_log_service.py,sha256=OjUmbiCdsylW9Uy5Bt0F8b65bBCkQcX6qEoNbMtO03g,1053
|
|
50
|
+
shaapi/template/backend/app/admin/service/role_service.py,sha256=Cl2IFqWioofgiTtbTHDocvK_YftMigT9ox_WT4LFx5M,2629
|
|
51
|
+
shaapi/template/backend/app/admin/service/secure_token_service.py,sha256=U19IXFcO_CKootPgwXQBMIcqWYJ9nfhq5O-pYmhgySo,2407
|
|
52
|
+
shaapi/template/backend/app/admin/service/user_service.py,sha256=qWxoMeeXRGpGbQBwB7SfRMDPT-OyVhlff1MS6sS6qpI,6325
|
|
53
|
+
shaapi/template/backend/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
+
shaapi/template/backend/common/dataclasses.py,sha256=I9OR5mxJ73DJoPKc1jGjBpEcuz4CpuwfWWJo6MXEQ80,917
|
|
55
|
+
shaapi/template/backend/common/enums.py,sha256=CQT7EhefKkT2htvyw9PgU0IrZc3bQW4boDS4ACgu0II,3438
|
|
56
|
+
shaapi/template/backend/common/log.py,sha256=xXa1YJz6tbpZnED2KZYMVPJTQTeVaXoImZHRHsTZPmk,3891
|
|
57
|
+
shaapi/template/backend/common/model.py,sha256=Xm9b7Z8GahSxaE1E9vyH50EChsTRnO-0Uxbw0RYz-p0,2572
|
|
58
|
+
shaapi/template/backend/common/pagination.py,sha256=_qLy3YKoH1XrXJ5PA-WQXUHzwDLKlq5w3plQWcGtW8s,2570
|
|
59
|
+
shaapi/template/backend/common/schema.py,sha256=7PcZjlCYUo7iM9XzgipduiZuM-V3De3RpOEr41mtXX4,8035
|
|
60
|
+
shaapi/template/backend/common/cloud_storage/__init__.py,sha256=0as1NnPu_k9x2tO6c67uz5NH5umVBXQMiEIBRUKPZH4,279
|
|
61
|
+
shaapi/template/backend/common/cloud_storage/cloud_storage.py,sha256=4yoHiKub3IWrDGz46x_e14NQNH1drKJRBvHNUotZk3s,5982
|
|
62
|
+
shaapi/template/backend/common/email_conf/email.py,sha256=iHwaYcj_UYC_yAIJL8fFIH3l3t5jRkXbNzLO95Gacyk,3113
|
|
63
|
+
shaapi/template/backend/common/exception/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
+
shaapi/template/backend/common/exception/errors.py,sha256=SRENmqfGMXmrr8zdG_5WGGt6x1NanbxDO_XmUezDCC0,3377
|
|
65
|
+
shaapi/template/backend/common/exception/exception_handler.py,sha256=QISWMANTmqEh-O21oLgQUCQyoUO30yczVu8zptDorm8,10321
|
|
66
|
+
shaapi/template/backend/common/response/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
shaapi/template/backend/common/response/response_code.py,sha256=Mda04ii7l4AaJ9OVCQ19_JAq7o6SjShNOUFqnAj__1M,4847
|
|
68
|
+
shaapi/template/backend/common/response/response_schema.py,sha256=f3ztgQmjS8Y7JbdN4NPtMp6GBsYfIYyq-TFbx66dIZ0,3539
|
|
69
|
+
shaapi/template/backend/common/security/jwt.py,sha256=Tf5orId8O-qGde31B3j4i65FVJj8m8GFroT2L9pCdsQ,6694
|
|
70
|
+
shaapi/template/backend/common/security/rbac.py,sha256=uHr0DNhxzD4vtqe2b-QXxKvBhbm3Ntl1_bT-jchVtls,3071
|
|
71
|
+
shaapi/template/backend/common/security/sec_token.py,sha256=VBtqbFnMBrWSFa5LBtRZEHdSVGL76ebbJOmdIv1a8pU,105
|
|
72
|
+
shaapi/template/backend/common/socketio/action.py,sha256=ZRKpwE4-cU6fVwXJpDEduJwupXSdU2nEu3tFj17NelE,225
|
|
73
|
+
shaapi/template/backend/common/socketio/server.py,sha256=fLkdcs8qBNLc39vKeEcHdZoAdVMQMrsiiQVNHrCLAiM,1407
|
|
74
|
+
shaapi/template/backend/common/sso/base.py,sha256=Cu1cA7eZuahxbQlmvxYfjhpZ0pIdIY_qoxJxv5XFcUc,2104
|
|
75
|
+
shaapi/template/backend/common/sso/google.py,sha256=ditFWIhmZMUkRWdJfy-0Zt413rD0_AEifytWvOJ_Obo,4519
|
|
76
|
+
shaapi/template/backend/core/conf.py,sha256=CVwMm_w5Bq0I-NSTLle92w3RVAJMPO2i3tWCDdvzjkI,7083
|
|
77
|
+
shaapi/template/backend/core/path_conf.py,sha256=EPkONlQlr-rK0UFR56xK-gauBbyrs2khxgSQVP3-xR0,715
|
|
78
|
+
shaapi/template/backend/core/registrar.py,sha256=pM-EwkDMzZ_fCzVMrUUTW0URuN4bBrvvgaDAm2hS64I,5492
|
|
79
|
+
shaapi/template/backend/crud/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
80
|
+
shaapi/template/backend/crud/crud_base.py,sha256=7doJML3DApjpXwnOYlvjd8S38PbYhGhsrRTrOtFJ3gE,1253
|
|
81
|
+
shaapi/template/backend/crud/crud_casbin.py,sha256=sxyZ-YssKMwwnvzI5S1QdH73xCopXji3-W6L8hBjpZM,1347
|
|
82
|
+
shaapi/template/backend/crud/crud_login_log.py,sha256=w3d8Rygl4YgqAl-lRfHvhnAecOQbNLe9VMjNjuEHFQ0,1652
|
|
83
|
+
shaapi/template/backend/crud/crud_opera_log.py,sha256=MEkHm9gK-yfQfXN8plcdZO2pUcy-hcPH-HXacEGBZyM,1657
|
|
84
|
+
shaapi/template/backend/crud/crud_role.py,sha256=aNrfRmWlGHOxvfcvunFdQ-vcBnrkb-jOIfbLLd4eFm0,3136
|
|
85
|
+
shaapi/template/backend/crud/crud_user.py,sha256=9-arVLtxt9_cLSA_fHXxu78-9pInmymUXeIl_ahMWiI,7550
|
|
86
|
+
shaapi/template/backend/database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
|
+
shaapi/template/backend/database/db_postgres.py,sha256=0H1TzNZAAvggRUANWnWGHW5q6PtjJTjnTFBBDiOmXpE,3405
|
|
88
|
+
shaapi/template/backend/database/db_redis.py,sha256=SsCCdaMQYDeLWVn7TJHummv-UtwyzRIBnwv2ccaWzCw,1777
|
|
89
|
+
shaapi/template/backend/lang/en/app.py,sha256=o9u0doU-fBM9UhdrDNYAqpFz7Ozqm2pP2weW36NmYkI,696
|
|
90
|
+
shaapi/template/backend/lang/en/auth.py,sha256=RD2wRhmC8x_T7DptMOqsRA0-D-OpNQnMrXHwJnQzJ80,458
|
|
91
|
+
shaapi/template/backend/lang/fr/app.py,sha256=2nvie2UoFPhH1Ps4g7PZtTtue2wU6mSraYvvJ1xgi9M,814
|
|
92
|
+
shaapi/template/backend/lang/fr/auth.py,sha256=eaPVpFOI2dq0a1DsTm6-Qkz_1e07LxFi_NOLpgP884A,564
|
|
93
|
+
shaapi/template/backend/middleware/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
94
|
+
shaapi/template/backend/middleware/access_middleware.py,sha256=WzNUdQxMe8Bp6fuojvuxdz_9_O8E8BwthJ3rjwKS3Zg,738
|
|
95
|
+
shaapi/template/backend/middleware/i18n_middleware.py,sha256=y-g52wQCfD-bnEnKlm9Ietqyf399y6lzf0nH-kXgQVo,678
|
|
96
|
+
shaapi/template/backend/middleware/jwt_auth_middleware.py,sha256=QWuGMwQM9RxgLKDm_s0X9crhZFuq90hEh0qixJH6JxI,3311
|
|
97
|
+
shaapi/template/backend/middleware/opera_log_middleware.py,sha256=bFZy_4DqZ2iBKYES0h-_n6J6tRnNljRtLI6WgOqke0M,6962
|
|
98
|
+
shaapi/template/backend/middleware/state_middleware.py,sha256=T2DvQ4vUu18i04TrjvZqhrseuedQ86Tn2Z-eHbTLuLM,954
|
|
99
|
+
shaapi/template/backend/models/__init__.py,sha256=HRyqh5KVVLFcewUQ4wXN9sAXlUEmT4rpIH7dF0XCeSc,301
|
|
100
|
+
shaapi/template/backend/models/associations.py,sha256=WpEkEHlSpizaypllEL-T3LovWoIqffXpxj3rhVJIDSk,522
|
|
101
|
+
shaapi/template/backend/models/casbin_rule.py,sha256=OBB9n3PZ-Q93mp1wagdqpeHiyx95zrJFvPKtfU2O9Cw,1144
|
|
102
|
+
shaapi/template/backend/models/login_log.py,sha256=rqsiqG1L3bhwtPThFV5X-a9oMg7IBdliSFOT9wIGgnU,1521
|
|
103
|
+
shaapi/template/backend/models/opera_log.py,sha256=BHfhMqHmWfc4BWGwvp9GYrif4eCrqHZZo6id8O6Us-8,2207
|
|
104
|
+
shaapi/template/backend/models/role.py,sha256=1DPyjthPKGV9eg0q1KkQB5emeCDZxN9lENbNhUF6cGg,1168
|
|
105
|
+
shaapi/template/backend/models/user.py,sha256=9FWD9im4WBaE9ie9aI4lut3RnACn8g5I4NtwnlC7ejY,1636
|
|
106
|
+
shaapi/template/backend/seeder/run.py,sha256=uMLqMGjU2gmfaRSMHfmskn0oR0t0Q8m4hFDvr_1G3IU,844
|
|
107
|
+
shaapi/template/backend/seeder/json/admin.json,sha256=Ik-qcXfpF93YRMyWnSbkEzuqpYzB2WB3zKvnhPyd4uY,407
|
|
108
|
+
shaapi/template/backend/seeder/json/user.json,sha256=kS9kzQpQpSPB7ima47qZ1mDnR_JmncFJzeP-za3dU6I,406
|
|
109
|
+
shaapi/template/backend/static/ip2region.xdb,sha256=yf9d-Nw3mN20XTTAKoPG7MeBiygAbzSop90LbxczWPY,11070130
|
|
110
|
+
shaapi/template/backend/templates/index.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
+
shaapi/template/backend/templates/build/meet.html,sha256=gJy7580QAoV_IgLKYVOk5nUUNMKVMhtFW2fs056elvs,4212
|
|
112
|
+
shaapi/template/backend/templates/build/new_account.html,sha256=D2xMr8s8UZIejaySGeH0v-Rj-ByqjiPztWxannd8XXQ,12868
|
|
113
|
+
shaapi/template/backend/templates/build/reset-password.html,sha256=8BUy0lJKCqHxmFds4uvemlaVT8kO8_oGUKEEDU5h1VM,4593
|
|
114
|
+
shaapi/template/backend/templates/build/test_email.html,sha256=rv_l9D3mWQL_fyM1pZM_EHiToe4LL7SgOJ8a4KDlDjw,3782
|
|
115
|
+
shaapi/template/backend/templates/build/welcome-one-1.html,sha256=wE9fS69zSTXUHlZWWRRCYFm-kyLmjgx9OMxq_1mKmIg,4205
|
|
116
|
+
shaapi/template/backend/templates/build/welcome-one.html,sha256=uVukjvDJzIkeviYlM6XRzDDCcd6_4h-UD7JlX0pt5Wk,4831
|
|
117
|
+
shaapi/template/backend/templates/build/welcome-two.html,sha256=nHm-IH6m-jNKEboRmloxNw0-xUazqxmAC_q45J8ym4s,6462
|
|
118
|
+
shaapi/template/backend/templates/src/new_account.mjml,sha256=6Vo-E5A234ZeM7n7w6n79x50qgB7VLK7CI_tfd8N-Fc,695
|
|
119
|
+
shaapi/template/backend/templates/src/reset_password.mjml,sha256=-4MwEMqr0s1VEc4zL7uLzWxgZXHO8VmcduREjaVmxcM,1159
|
|
120
|
+
shaapi/template/backend/templates/src/test_email.mjml,sha256=YjR70RlUPkEoK6jI6xC0CjcpBZ05-ky64iDKNpCcbR0,375
|
|
121
|
+
shaapi/template/backend/templates/ws/ws.html,sha256=GdrcPkX4UMlf6vWj8qQqPkm8cuCkssgTn7jpaFsjV0s,1843
|
|
122
|
+
shaapi/template/backend/utils/demo_site.py,sha256=nT0NQOrfaxdITBVZuEaMHLbXeQ2HrtX5Yu34s-FIquI,490
|
|
123
|
+
shaapi/template/backend/utils/encrypt.py,sha256=X3-LXbVD0SEDeIRorcahsQgjW2Zb0p3QsHy8Txnlp0U,3722
|
|
124
|
+
shaapi/template/backend/utils/health_check.py,sha256=K0zxqFQjJULmFJkjoXoaOZ3EfCuBCXiSs7H4axwhmW8,958
|
|
125
|
+
shaapi/template/backend/utils/prometheus.py,sha256=yZ_VpwMO-rPBloSLJnBowVhzqKUx_EDPLagpA7BqcWU,5091
|
|
126
|
+
shaapi/template/backend/utils/request_parse.py,sha256=bRSODEU0ghR69vPT7P8Bonnzla8MIDQdvYF2n297qBo,3818
|
|
127
|
+
shaapi/template/backend/utils/serializers.py,sha256=55THOdcyYH90-E1rFdz9CBM48EDQMCH0msxFIpA0y4A,2069
|
|
128
|
+
shaapi/template/backend/utils/timezone.py,sha256=BjhDBA6c1lWISHk-dCQq7zJ9wzaADS2NLr1rXjPEeQ4,1155
|
|
129
|
+
shaapi/template/backend/utils/trace_id.py,sha256=Oj1Xd8DMQnrCpjFy5OTMKgwtNQ2-NJdtGRJKNGA9U-s,197
|
|
130
|
+
shaapi/template/backend/utils/translator.py,sha256=NV_h0qpWobqKiz7ssfjX-5IudhSo0E2QA5UPWExlO0I,941
|
|
131
|
+
shaapi/template/devops/scripts/deploy.sh,sha256=4qz1TEaei_0GRRItQIuDkEeOFSEBwqp076YzsVAphh4,269
|
|
132
|
+
shaapi/template/devops/scripts/setup_env.sh,sha256=9NrezCEwARU45X9sbsbk3RkdpuAEzdyBhQuKwJMb_SY,2280
|
|
133
|
+
shaapi/template/etc/dashboards.yaml,sha256=S4TdpadkDjkntL_NiFJEr8k91bKp3JjiLC0XiDwdQdA,184
|
|
134
|
+
shaapi/template/etc/dashboards/fastapi-observability.json,sha256=U0FOW-8waV2uG50CUrUSvgcMGhKaSXQz1HxLdo0Y7GQ,25093
|
|
135
|
+
shaapi/template/etc/grafana/datasource.yml,sha256=2C0XnF1qbBsAcuqP-AsFUNSyOYqksQmLm_TSoOTFrB4,1714
|
|
136
|
+
shaapi/template/etc/prometheus/prometheus.yml,sha256=76jKm7ESaSQrdVG6Q9XFjVFUiUDblBSkZnm4OxbONdI,1500
|
|
137
|
+
shaapi-0.1.0.dist-info/METADATA,sha256=wpBwBLkMKfxcr-IQoCS8rggOsbBNz3GZ6XpYBp_tZks,3219
|
|
138
|
+
shaapi-0.1.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
139
|
+
shaapi-0.1.0.dist-info/entry_points.txt,sha256=S9O5bStX495Q8biuFRQRMi3eW8-fhFAhxxDZGSgKR7A,42
|
|
140
|
+
shaapi-0.1.0.dist-info/licenses/LICENCE,sha256=D0amjCHVokSnS6UufrjynxG9QZIM4ccTuIEKyIODLeA,1067
|
|
141
|
+
shaapi-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Shalom Tehe
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|