{"id":17254321,"url":"https://github.com/u2d-ai/msasdk","last_synced_at":"2025-12-14T19:04:26.224Z","repository":{"id":59236029,"uuid":"527991061","full_name":"u2d-ai/msaSDK","owner":"u2d-ai","description":"FastAPI Microservices Architecture SDK - As Basis for multiple services in a platform/system","archived":false,"fork":false,"pushed_at":"2022-10-04T08:01:57.000Z","size":67743,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T19:22:50.600Z","etag":null,"topics":["admin-dashboard","async","asyncio","dapr","dapr-sidecar","distributed","fastapi","json","microservices","openapi","pydantic","restful","scheduler","scheduler-service","sqlalchemy-python","sqlmodel","starlette","swagger-ui","uvicorn-gunicorn","vuejs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/u2d-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-23T12:55:58.000Z","updated_at":"2024-06-09T18:00:33.000Z","dependencies_parsed_at":"2023-01-19T05:01:16.098Z","dependency_job_id":null,"html_url":"https://github.com/u2d-ai/msaSDK","commit_stats":null,"previous_names":["swelcker/msasdk"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSDK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSDK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSDK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u2d-ai%2FmsaSDK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/u2d-ai","download_url":"https://codeload.github.com/u2d-ai/msaSDK/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248829257,"owners_count":21168177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-dashboard","async","asyncio","dapr","dapr-sidecar","distributed","fastapi","json","microservices","openapi","pydantic","restful","scheduler","scheduler-service","sqlalchemy-python","sqlmodel","starlette","swagger-ui","uvicorn-gunicorn","vuejs"],"created_at":"2024-10-15T07:08:24.981Z","updated_at":"2025-12-14T19:04:20.219Z","avatar_url":"https://github.com/u2d-ai.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://logos.u2d.ai/msaSDK_logo.png?raw=true\" alt=\"MSA SDK image\"/\u003e\n\u003c/p\u003e\n\n------\n\u003cp align=\"center\"\u003e\n    \u003cem\u003emsaSDK - FastAPI based Microservice Architecture Development Kit\u003c/em\u003e\n\u003cbr\u003e\n    To build PoC's, MVP's, API's with CRUD and Dashboards fast and consistent.\n\u003cbr\u003e\n    Build on top of FastAPI, SQLModel, SQLAlchemy, Amis and many other bullet proofed libraries.\n\u003cbr\u003e\n  \u003ca href=\"https://pypi.org/project/msaSDK\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/pypi/v/msaSDK?color=%2334D058\u0026label=pypi%20package\" alt=\"Package version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/msaSDK\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://img.shields.io/pypi/pyversions/msaSDK.svg?color=%2334D058\" alt=\"Supported Python versions\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n------\n\n**Documentation**: \u003ca href=\"https://msa.u2d.ai/\" target=\"_blank\"\u003eMSA SDK Documentation (http://msa.u2d.ai/)\u003c/a\u003e\n\n------\n\n## Features\n- **Build connected distributed applications faster**: Ready for [Dapr](https://dapr.io/).\n- **Consistency**: With sometimes 10s or 100s of Micro Services, the SDK helps to easy version control and provides a stable Dapr Basis.\n- **High performance**: Based on [FastAPI](https://fastapi.tiangolo.com/zh/). Enjoy all the benefits.\n- **Integrated Scheduler**: Define Scheduler Tasks with natural language timings and dependencies.\n- **Integrated Dashboard UI**: Admin and Optional Auth enabled Dashboard with CRUD Forms.\n- **Integrated CRUD**: Generates CRUD Router and Admin Dashboard Forms based on SQLModel and SQLAlchemy.\n- **Integrated Abstract Filesystem**: Agnostic Abstract Filesystem API which allows to use S3, GCS, Azure Datalake, your local FS, Youtube etc.\n- **Integrated justpy WEB UI**: Integrated justpy UI Web Framework to MSAAPI, which allows simple adding of routes to justpy webpages functions.\n- **Integrated Dict with Storage Backend**: Use Dict's with backend storage like redis.\n- **Integrated Signals**: Use and handle Signals and Tasks.\n- **Integrated Feature Management**: Feature switch management with conditions.\n\n## Main Dependencies\n\n- [FastAPI](https://fastapi.tiangolo.com/)\n- [SQLModel](https://sqlmodel.tiangolo.com/)\n  combined with  [SQLAlchemy](https://www.sqlalchemy.org/) and [Pydantic](https://pydantic-docs.helpmanual.io/), with all\n  their features .\n- **msaUtils**: General utils for Microservices based on FastAPI like Profiler, Scheduler, Sysinfo, Healtcheck, Error Handling etc.\n- **msaJustPyUI**: FastAPI adapted JustPy version for Integration of justpy UI Web Framework to msaAppService, which allows simple adding of routes to justpy webpages functions.\n- **msaCRUD**: SQLModel/SQLAlchemy/FastAPI - DB Object CRUD/API Automation\n- **msaFeature**: Feature switch management with conditions\n- **msaServer**: Helper \u0026 Wrapper around Uvicorn/Gunicorn for FastAPI based apps\n- **msaSignal**: Signals/Events for Starlette/FastAPI.\n- **msaDocModels**: # MSA Document Pydantic Models and Schemas, used to store Parser, NLP, NLU and AI results for processed documents\n- **msaStorageDict**: Dict with a Storage Backend like redis or Zookeeper\n\n### Usage example is in the app module \\_\\_init\\_\\_.py\n\n```python\n# -*- encoding: utf-8 -*-\n\"\"\"\nCopyright (c) 2022 - U2D.ai / S.Welcker\n\"\"\"\nfrom typing import Optional, List\n\nfrom sqlmodel import SQLModel\n\nfrom msaSDK.admin.utils.fields import Field\nfrom msaSDK.models.service import get_msa_app_settings\nfrom msaSDK.service import MSAApp\n\n\nasync def test_timer_min():\n    app.logger.info(\"msaSDK Test Timer Async Every Minute\")\n\n\ndef test_timer_five_sec():\n    app.logger.info(\"msaSDK Test Timer Sync 5 Second\")\n\n\nclass TestArticle(SQLModel, table=True):\n    __table_args__ = {'extend_existing': True}\n    id: Optional[int] = Field(default=None, primary_key=True, nullable=False)\n    title: str = Field(title='ArticleTitle', max_length=200)\n    description: Optional[str] = Field(default='', title='ArticleDescription', max_length=400)\n    status: bool = Field(None, title='status')\n    content: str = Field(title='ArticleContent')\n\n\nclass TestCategory(SQLModel, table=True):\n    __table_args__ = {'extend_existing': True}\n    id: Optional[int] = Field(default=None, primary_key=True, nullable=False)\n    title: str = Field(title='ArticleTitle', max_length=200)\n    description: Optional[str] = Field(default='', title='ArticleDescription', max_length=400)\n    status: bool = Field(None, title='status')\n    content: str = Field(title='ArticleContent')\n\n\nget_msa_app_settings.cache_clear()\nsettings = get_msa_app_settings()\nsettings.title = \"u2d.ai - MSA/SDK MVP\"\nsettings.version = \"0.0.1\"\nsettings.debug = True\n\napp = MSAApp(settings=settings, auto_mount_site=True,\n             sql_models=[TestArticle, TestCategory],\n             contact={\"name\": \"msaSDK\", \"url\": \"http://u2d.ai\", \"email\": \"stefan@u2d.ai\"},\n             license_info={\"name\": \"MIT\", \"url\": \"https://opensource.org/licenses/MIT\", })\n\napp.scheduler.task(\"every 1 min\", func=test_timer_min )\napp.scheduler.task(\"every 5 sec\", func=test_timer_five_sec )\n\napp.logger.info(\"Initialized \" + settings.title + \" \" + settings.version)\n\n\n@app.on_event(\"startup\")\nasync def startup():\n    app.logger.info(\"msaSDK Own Startup MSAUIEvent\")\n    #app.mount_site()\n\n\n@app.on_event(\"shutdown\")\nasync def shutdown():\n    app.logger.info(\"msaSDK Own Shutdown MSAUIEvent\")\n\n\nif __name__ == '__main__':\n    pass\n```\n\n# Typical Run Log\n![Typical Log Run](./docs/images/msa_sdk_run.png)\n\n## Interface Preview\n\n\n#### Home Screen with System Info\n- Open `http://127.0.0.1:8090/admin/` in your browser:\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://msa.u2d.ai/images/msa_admin_home.png?raw=true\" alt=\"Home\"/\u003e\n\u003c/p\u003e\n\n#### CRUD of SQLModels Screen\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://msa.u2d.ai/images/msa_admin_crud.png?raw=true\" alt=\"CRUD\"/\u003e\n\u003c/p\u003e\n\n#### Login Screen\n- Open `http://127.0.0.1:8090/admin/auth/form/login` in your browser:\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://msa.u2d.ai/images/msa_auth_login.png?raw=true\" alt=\"Login\"/\u003e\n\u003c/p\u003e\n\n#### OpenAPI Interactive Documentation (Swagger) Screen\n- Open `http://127.0.0.1:8090/#/admin/docs` in your browser:\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://msa.u2d.ai/images/msa_admin_openapi.png?raw=true\" alt=\"OpenAPI\"/\u003e\n\u003c/p\u003e\n\n#### Profiler Screen\n- Open `http://127.0.0.1:8090/#/admin/profiler` in your browser:\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"http://msa.u2d.ai/images/msa_admin_profiler.png?raw=true\" alt=\"Profiler\"/\u003e\n\u003c/p\u003e\n\n## License Agreement\n\n- `msaSDK`Based on `MIT` open source and free to use, it is free for commercial use, but please show/list the copyright information about msaSDK somewhere.\n\n\n## How to create the documentation\n\nWe use mkdocs and mkdocsstring. The code reference and nav entry get's created virtually by the triggered python script /docs/gen_ref_pages.py while ``mkdocs`` ``serve`` or ``build`` is executed.\n\n### Requirements Install for the PDF creation option:\nPDF Export is using mainly weasyprint, if you get some errors here pls. check there documentation. Installation is part of the msaSDK, so this should be fine.\n\nWe can now test and view our documentation using:\n\n    mkdocs serve\n\nBuild static Site:\n\n    mkdocs build\n\n\n## Build and Publish\n  \nBuild:  \n\n    python setup.py sdist\n\nPublish to pypi:\n\n    twine upload dist/*","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu2d-ai%2Fmsasdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fu2d-ai%2Fmsasdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu2d-ai%2Fmsasdk/lists"}