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.
Files changed (141) hide show
  1. shaapi/__init__.py +3 -0
  2. shaapi/cli.py +97 -0
  3. shaapi/generator.py +114 -0
  4. shaapi/template/.dockerignore +37 -0
  5. shaapi/template/.env.template +59 -0
  6. shaapi/template/.gitattributes +12 -0
  7. shaapi/template/.gitignore +170 -0
  8. shaapi/template/.gitlab-ci.yml +89 -0
  9. shaapi/template/Dockerfile +59 -0
  10. shaapi/template/LICENSE +21 -0
  11. shaapi/template/README.md +206 -0
  12. shaapi/template/backend/.gitignore +164 -0
  13. shaapi/template/backend/__init__.py +0 -0
  14. shaapi/template/backend/alembic/README +1 -0
  15. shaapi/template/backend/alembic/env.py +102 -0
  16. shaapi/template/backend/alembic/script.py.mako +26 -0
  17. shaapi/template/backend/alembic/versions/2026_06_08_1024-64524c63b666_initial.py +143 -0
  18. shaapi/template/backend/alembic.ini +117 -0
  19. shaapi/template/backend/app/__init__.py +55 -0
  20. shaapi/template/backend/app/admin/__init__.py +1 -0
  21. shaapi/template/backend/app/admin/api/v1/__init__.py +0 -0
  22. shaapi/template/backend/app/admin/api/v1/auth.py +59 -0
  23. shaapi/template/backend/app/admin/api/v1/casbin.py +218 -0
  24. shaapi/template/backend/app/admin/api/v1/login_log.py +63 -0
  25. shaapi/template/backend/app/admin/api/v1/opera_log.py +61 -0
  26. shaapi/template/backend/app/admin/api/v1/role.py +108 -0
  27. shaapi/template/backend/app/admin/api/v1/user.py +47 -0
  28. shaapi/template/backend/app/admin/schema/casbin_rule.py +45 -0
  29. shaapi/template/backend/app/admin/schema/login_log.py +36 -0
  30. shaapi/template/backend/app/admin/schema/opera_log.py +43 -0
  31. shaapi/template/backend/app/admin/schema/role.py +36 -0
  32. shaapi/template/backend/app/admin/schema/sso.py +37 -0
  33. shaapi/template/backend/app/admin/schema/token.py +74 -0
  34. shaapi/template/backend/app/admin/schema/user.py +93 -0
  35. shaapi/template/backend/app/admin/service/auth_service.py +233 -0
  36. shaapi/template/backend/app/admin/service/casbin_service.py +135 -0
  37. shaapi/template/backend/app/admin/service/login_log_service.py +62 -0
  38. shaapi/template/backend/app/admin/service/opera_log_service.py +31 -0
  39. shaapi/template/backend/app/admin/service/role_service.py +79 -0
  40. shaapi/template/backend/app/admin/service/secure_token_service.py +60 -0
  41. shaapi/template/backend/app/admin/service/user_service.py +153 -0
  42. shaapi/template/backend/app/api.py +11 -0
  43. shaapi/template/backend/common/__init__.py +0 -0
  44. shaapi/template/backend/common/cloud_storage/__init__.py +11 -0
  45. shaapi/template/backend/common/cloud_storage/cloud_storage.py +180 -0
  46. shaapi/template/backend/common/dataclasses.py +52 -0
  47. shaapi/template/backend/common/email_conf/email.py +105 -0
  48. shaapi/template/backend/common/enums.py +144 -0
  49. shaapi/template/backend/common/exception/__init__.py +0 -0
  50. shaapi/template/backend/common/exception/errors.py +87 -0
  51. shaapi/template/backend/common/exception/exception_handler.py +280 -0
  52. shaapi/template/backend/common/log.py +123 -0
  53. shaapi/template/backend/common/model.py +68 -0
  54. shaapi/template/backend/common/pagination.py +83 -0
  55. shaapi/template/backend/common/response/__init__.py +0 -0
  56. shaapi/template/backend/common/response/response_code.py +158 -0
  57. shaapi/template/backend/common/response/response_schema.py +110 -0
  58. shaapi/template/backend/common/schema.py +144 -0
  59. shaapi/template/backend/common/security/jwt.py +203 -0
  60. shaapi/template/backend/common/security/rbac.py +98 -0
  61. shaapi/template/backend/common/security/sec_token.py +6 -0
  62. shaapi/template/backend/common/socketio/action.py +11 -0
  63. shaapi/template/backend/common/socketio/server.py +50 -0
  64. shaapi/template/backend/common/sso/base.py +69 -0
  65. shaapi/template/backend/common/sso/google.py +127 -0
  66. shaapi/template/backend/core/conf.py +208 -0
  67. shaapi/template/backend/core/path_conf.py +24 -0
  68. shaapi/template/backend/core/registrar.py +195 -0
  69. shaapi/template/backend/crud/__init__.py +1 -0
  70. shaapi/template/backend/crud/crud_base.py +35 -0
  71. shaapi/template/backend/crud/crud_casbin.py +46 -0
  72. shaapi/template/backend/crud/crud_login_log.py +58 -0
  73. shaapi/template/backend/crud/crud_opera_log.py +58 -0
  74. shaapi/template/backend/crud/crud_role.py +128 -0
  75. shaapi/template/backend/crud/crud_user.py +267 -0
  76. shaapi/template/backend/database/__init__.py +0 -0
  77. shaapi/template/backend/database/db_postgres.py +125 -0
  78. shaapi/template/backend/database/db_redis.py +62 -0
  79. shaapi/template/backend/entrypoint-api.sh +19 -0
  80. shaapi/template/backend/lang/en/app.py +18 -0
  81. shaapi/template/backend/lang/en/auth.py +10 -0
  82. shaapi/template/backend/lang/fr/app.py +18 -0
  83. shaapi/template/backend/lang/fr/auth.py +10 -0
  84. shaapi/template/backend/main.py +54 -0
  85. shaapi/template/backend/middleware/__init__.py +1 -0
  86. shaapi/template/backend/middleware/access_middleware.py +19 -0
  87. shaapi/template/backend/middleware/i18n_middleware.py +19 -0
  88. shaapi/template/backend/middleware/jwt_auth_middleware.py +73 -0
  89. shaapi/template/backend/middleware/opera_log_middleware.py +179 -0
  90. shaapi/template/backend/middleware/state_middleware.py +26 -0
  91. shaapi/template/backend/models/__init__.py +10 -0
  92. shaapi/template/backend/models/associations.py +20 -0
  93. shaapi/template/backend/models/casbin_rule.py +30 -0
  94. shaapi/template/backend/models/login_log.py +28 -0
  95. shaapi/template/backend/models/opera_log.py +36 -0
  96. shaapi/template/backend/models/role.py +27 -0
  97. shaapi/template/backend/models/user.py +30 -0
  98. shaapi/template/backend/seeder/json/admin.json +15 -0
  99. shaapi/template/backend/seeder/json/user.json +15 -0
  100. shaapi/template/backend/seeder/run.py +34 -0
  101. shaapi/template/backend/static/ip2region.xdb +0 -0
  102. shaapi/template/backend/templates/build/meet.html +169 -0
  103. shaapi/template/backend/templates/build/new_account.html +373 -0
  104. shaapi/template/backend/templates/build/reset-password.html +170 -0
  105. shaapi/template/backend/templates/build/test_email.html +25 -0
  106. shaapi/template/backend/templates/build/welcome-one-1.html +160 -0
  107. shaapi/template/backend/templates/build/welcome-one.html +178 -0
  108. shaapi/template/backend/templates/build/welcome-two.html +234 -0
  109. shaapi/template/backend/templates/index.html +0 -0
  110. shaapi/template/backend/templates/src/new_account.mjml +15 -0
  111. shaapi/template/backend/templates/src/reset_password.mjml +19 -0
  112. shaapi/template/backend/templates/src/test_email.mjml +11 -0
  113. shaapi/template/backend/templates/ws/ws.html +70 -0
  114. shaapi/template/backend/utils/demo_site.py +18 -0
  115. shaapi/template/backend/utils/encrypt.py +108 -0
  116. shaapi/template/backend/utils/health_check.py +34 -0
  117. shaapi/template/backend/utils/prometheus.py +135 -0
  118. shaapi/template/backend/utils/request_parse.py +110 -0
  119. shaapi/template/backend/utils/serializers.py +75 -0
  120. shaapi/template/backend/utils/timezone.py +51 -0
  121. shaapi/template/backend/utils/trace_id.py +7 -0
  122. shaapi/template/backend/utils/translator.py +28 -0
  123. shaapi/template/devops/scripts/deploy.sh +7 -0
  124. shaapi/template/devops/scripts/setup_env.sh +62 -0
  125. shaapi/template/docker-compose.monitoring.yml +63 -0
  126. shaapi/template/docker-compose.override.yml +12 -0
  127. shaapi/template/docker-compose.yml +90 -0
  128. shaapi/template/docker-run.sh +99 -0
  129. shaapi/template/etc/dashboards/fastapi-observability.json +1044 -0
  130. shaapi/template/etc/dashboards.yaml +10 -0
  131. shaapi/template/etc/grafana/datasource.yml +79 -0
  132. shaapi/template/etc/prometheus/prometheus.yml +52 -0
  133. shaapi/template/package-lock.json +2102 -0
  134. shaapi/template/package.json +16 -0
  135. shaapi/template/pyproject.toml +78 -0
  136. shaapi/template/uv.lock +2866 -0
  137. shaapi-0.1.0.dist-info/METADATA +92 -0
  138. shaapi-0.1.0.dist-info/RECORD +141 -0
  139. shaapi-0.1.0.dist-info/WHEEL +4 -0
  140. shaapi-0.1.0.dist-info/entry_points.txt +2 -0
  141. 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,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ shaapi = shaapi.cli:app
@@ -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.