The GenericSuite for Python

GenericSuite (backend version) is a versatile backend solution, designed to provide a comprehensive suite of features for Python APIs. It supports various frameworks including FastAPI, Flask and Chalice, making it adaptable to a range of projects. This repository contains the backend logic, utilities, and configurations necessary to build and deploy scalable and maintainable applications.
Features
- Framework Agnostic: Supports FastAPI, Flask, and Chalice frameworks.
- Database Support: Includes abstracted database operations for MongoDB, DynamoDB, Postgres, MySQL, or Supabase, offering flexibility in choosing the database.
- Authentication: Implements JWT-based authentication, providing secure access to endpoints.
- Dynamic Endpoint Creation: Allows for defining endpoints dynamically through JSON configurations.
- Utilities: A collection of utilities for tasks such as sending emails, parsing multipart data, handling passwords, and more.
- Billing Utilities: Tools for managing billing plans and user subscriptions.
- Menu Options: Functionality to manage and retrieve authorized menu options based on user roles.
Pre-requisites
- Python version >= 3.10 and < 4.0 (install with pyenv preferably. Versions specified in
.python-versionfiles) - Git
- Make: Mac | Windows
- Node version 20+, installed via NVM (Node Package Manager) or NPM and Node install.
- Docker and Docker Composer
- uv, pipenv, or poetry (for Python dependency management)
AWS account and credentials
If you plan to deploy the App in the AWS Cloud, use DynamoDB or RDS for the database:
- AWS account, see free tier.
- AWS Token, see Access Keys.
- AWS Command-line interface, see awscli.
MongoDB
If you plan to use MongoDB for the database:
- Install de python package
pymongo - See Community MongoDB or MongoDB Atlas.
Postgres
If you plan to use Postgres for the database:
- Install de python package
psycopg2-binary - See Postgres.
Supabase
If you plan to use Supabase for the database:
- Install de python package
supabase - Go to Supabase, create an account and a project.
MySQL
If you plan to use MySQL for the database:
- Install de python package
mysql-connector-python - See MySQL.
MCP Server
If you plan to develop an MCP Server:
- Install python packages
mcpandfastmcp
Getting Started
To get started with GenericSuite, follow these steps:
Initiate your project
To create the project directory for the App's backend API. E.g. your_app_name_backend when you want to have separated the backend and frontend code. For a project strture as follows:
your_app_name_backend/
└── src/ # API application
└── config_dbdef/ # Configuration database definitions
Create the project directory for the App's backend API as follows:
mkdir -p your_app_name_backend/src
cd your_app_name_backend/src
For a monorepo (e.g. exampleapp and fastapitemplate), you can have a directory structure as follows:
your_app_name/
├── config_dbdef/ # Configuration database definitions
├── server/ # Server application
├── ui/ # User interface
└── mcp-server/ # MCP server
Create the project directory for the App's backend API as follows:
mkdir -p your_app_name/server
cd your_app_name/server
Dependency manager setup
The following instructions will depend on the dependency management of your preference:
# Pip
python3 -m venv venv
source venv/bin/activate
# Uv
# https://docs.astral.sh/uv/getting-started
uv init
uv venv
# Poetry
# https://python-poetry.org/docs/basic-usage/
poetry init
# Pipenv
# https://docs.pipenv.org/basics/
pipenv install
pipenv shell
GenericSuite installation
To use GenericSuite in your project, install it with the following command(s):
From PyPi
Pip
pip install genericsuite
Pipenv
pipenv install genericsuite
Poetry
poetry add genericsuite
Uv
uv add genericsuite
NOTE: in the following instructions we'll only show pip install ....
If you'll use pipenv, change it with pipenv install ....
If you'll use poetry, change it with poetry add ....
If you'll use uv, change it with uv add ....
Check this documentation to use the different Python package and dependency management tools.
From Git or Local Directory
Check this documentation to install from a Git repository/branch or a Local Directory.
Framework installation
Install the desired framework: FastAPI, Flask or Chalice:
FastAPI
pip install fastapi fastapi-cors "uvicorn[standard]" python-multipart mangum
Flask
pip install flask flask_cors gunicorn
Chalice
pip install chalice
For more information:
Development scripts installation
The GenericSuite backend development scripts contains utilities to build and deploy APIs made by The GenericSuite.
npm install -D genericsuite-be-scripts
Database installation
Depending on the database you'll use, install the required dependencies:
MongoDB
pip install pymongo
DynamoDB
pip install boto3
PostgreSQL
pip install psycopg2-binary
Supabase
pip install supabase
MySQL
pip install mysql-connector-python
Cloud services
Depending on the cloud service you'll use, install the required dependencies:
AWS
pip install boto3
Test dependencies
To execute the unit and integration test, install pytest and coverage:
pip install pytest coverage
Available options
- Select Your Framework: Depending on your project, choose between FastAPI, Flask or Chalice.
- Select Your Database of choice: Implement database operations using the provided abstracted functions for MongoDB, Postgres, MySQL, Supabase, and DynamoDB.
- Included Authentication: Your endpoints will be secured with JWT-based authentication.
- Define Endpoints: Utilize the dynamic endpoint creation feature by defining your endpoints in a JSON configuration file. Visit the Generic Suite Configuration Guide for more information.
- Define Menu Options: Utilize the dynamic menu creation feature by defining your menu and option access security in a JSON configuration file. Visit the Generic Suite Configuration Guide for guidance.
- Define Table structures: Utilize the dynamic table creation feature by defining your CRUD editors in JSON configuration files. Visit the Generic Suite Configuration Guide for sample code and files.
Configuration
Configure your application by setting up the necessary environment variables. Refer to the .env.example and config.py files for the available options.
- Aplicacion name
APP_NAME=ExampleApp
- Aplicacion domain
APP_DOMAIN_NAME=exampleapp.com
- Application default language
DEFAULT_LANG=en
- API version (default to "v1")
API_VERSION=v1
- Stage and Debug flag
# Application debug APP_DEBUG (0,1)
# Application environment APP_STAGE: dev, qa, staging, prod
# # DEV
APP_DEBUG=1
# APP_STAGE=dev
# # QA
APP_DEBUG=1
# APP_STAGE=qa
# # PROD
APP_DEBUG=0
# APP_STAGE=prod
- Application secret keys
# Application secret key (to be used in password encryption)
APP_SECRET_KEY=xxxx
- Application super administrator Email
APP_SUPERADMIN_EMAIL=xxxx
-
Database configuration
-
For MongoDB
https://www.mongodb.com/
# DEV: Docker container
APP_DB_ENGINE_DEV=MONGODB
APP_DB_NAME_DEV=mongo
APP_DB_URI_DEV=mongodb://root:example@app.exampleapp.local:27017/
# QA: MongoDB Atlas
APP_DB_ENGINE_QA=MONGODB
APP_DB_NAME_QA=xxxx
APP_DB_URI_QA=mongodb+srv://<user>:<password>@<cluster>.mongodb.net
# Staging: MongoDB Atlas
APP_DB_ENGINE_STAGING=MONGODB
APP_DB_NAME_STAGING=xxxx
APP_DB_URI_STAGING=mongodb+srv://<user>:<password>@<cluster>.mongodb.net
# PROD: MongoDB Atlas
APP_DB_ENGINE_PROD=MONGODB
APP_DB_NAME_PROD=xxxx
APP_DB_URI_PROD=mongodb+srv://<user>:<password>@<cluster>.mongodb.net
# DEMO: MongoDB Atlas
APP_DB_ENGINE_DEMO=MONGODB
APP_DB_NAME_DEMO=xxxx
APP_DB_URI_DEMO=mongodb+srv://<user>:<password>@<cluster>.mongodb.net
- For AWS DynamoDB
https://console.aws.amazon.com
# DEV: docker
APP_DB_ENGINE_DEV=DYNAMODB
DYNAMDB_PREFIX_DEV=
APP_DB_URI_DEV=http://127.0.0.1:8000
# QA: AWS DynamoDB
APP_DB_ENGINE_QA=DYNAMODB
DYNAMDB_PREFIX_QA=
APP_DB_URI_QA=
# PROD: AWS DynamoDB
APP_DB_ENGINE_PROD=DYNAMODB
DYNAMDB_PREFIX_PROD=
APP_DB_URI_PROD=
# # DEMO: AWS DynamoDB
# APP_DB_ENGINE_DEMO=DYNAMODB
# DYNAMDB_PREFIX_DEMO=
# APP_DB_URI_DEMO=
NOTE: set DYNAMDB_PREFIX_* empty and it'll be defaulted to <APP_NAME_LOWERCASE>_<STAGE>_.
# # DEV: docker
# APP_DB_ENGINE_DEV=POSTGRES
# APP_DB_URI_DEV=postgresql://user:pass@localhost:5432
# APP_DB_NAME_DEV=db
# # QA:
# APP_DB_ENGINE_QA=POSTGRES
# APP_DB_URI_QA=postgresql://user:pass@hostname:5432
# APP_DB_NAME_QA=db
# # PROD:
# APP_DB_ENGINE_PROD=POSTGRES
# APP_DB_URI_PROD=postgresql://user:pass@hostname:5432
# APP_DB_NAME_PROD=db
# # DEMO:
# APP_DB_ENGINE_DEMO=POSTGRES
# APP_DB_URI_DEMO=postgresql://user:pass@hostname:5432
# APP_DB_NAME_DEMO=db
- For Supabase
https://www.supabase.com/
SUPABASE_KEY=
# # DEV: docker
# APP_DB_ENGINE_DEV=SUPABASE
# APP_DB_URI_DEV=https://xxxx.supabase.co
# APP_DB_NAME_DEV=db
#
# # QA:
# APP_DB_ENGINE_QA=SUPABASE
# APP_DB_URI_QA=https://xxxx.supabase.co
# APP_DB_NAME_QA=db
#
# # PROD:
# APP_DB_ENGINE_PROD=SUPABASE
# APP_DB_URI_PROD=https://xxxx.supabase.co
# APP_DB_NAME_PROD=db
#
# # DEMO:
# APP_DB_ENGINE_DEMO=SUPABASE
# APP_DB_URI_DEMO=https://xxxx.supabase.co
# APP_DB_NAME_DEMO=db
NOTES: - To configure Supabase with Postgres, form example on the QA environment, set:
APP_DB_ENGINE_QA=POSTGRES
APP_DB_URI_QA=postgresql://postgres:[YOUR_PASSWORD]@db.[SUPABASE_SERVER_SUBDOMAIN].supabase.co:5432
APP_DB_NAME_QA=postgres
YOUR_PASSWORDis not the supabase user password, it is a password requested when the Supabase account was created. In case you need to reset that password, go to "Database > Settings > Database password > [Reset database password]".SUPABASE_SERVER_SUBDOMAINis the subdomain of the Supabase server. You can find it in the "Supabase Dashboard > Connect > Connection string" option.- For this to work, you must purchase the IPv4 add-on in the Supabase dashboard, otherwise you will get a connection error:
Could not translate host name "db.xxxxxx.supabase.co" to address: Name or service not known
- For MySQL
https://www.mysql.com
# # DEV: docker
# APP_DB_ENGINE_DEV=MYSQL
# APP_DB_URI_DEV=mysql://user:pass@localhost:3306
# APP_DB_NAME_DEV=db
#
# # QA:
# APP_DB_ENGINE_QA=MYSQL
# APP_DB_URI_QA=mysql://user:pass@hostname:3306
# APP_DB_NAME_QA=db
#
# # PROD:
# APP_DB_ENGINE_PROD=MYSQL
# APP_DB_URI_PROD=mysql://user:pass@hostname:3306
# APP_DB_NAME_PROD=db
#
# # DEMO:
# APP_DB_ENGINE_DEMO=MYSQL
# APP_DB_URI_DEMO=mysql://user:pass@hostname:3306
# APP_DB_NAME_DEMO=db
- CORS Origin
# DEV
APP_CORS_ORIGIN_DEV="*"
# QA
APP_CORS_ORIGIN_QA=*
APP_CORS_ORIGIN_QA_CLOUD=https://app-qa.exampleapp.com
APP_CORS_ORIGIN_QA_LOCAL=http://localhost:3000
# Staging
APP_CORS_ORIGIN_STAGING=https://app-qa.exampleapp.com
# PROD
APP_CORS_ORIGIN_PROD=https://app.exampleapp.com
# DEMO
APP_CORS_ORIGIN_DEMO=https://app-demo.exampleapp.com
- Python package and dependency management tool
# Python package and dependency management tool (uv, pipenv, and poetry), default to "uv"
# PEM_TOOL=pipenv
# PEM_TOOL=uv
# PEM_TOOL=poetry
- Current framework options: chalice, flask, fastapi
CURRENT_FRAMEWORK=fastapi
# CURRENT_FRAMEWORK=flask
# CURRENT_FRAMEWORK=chalice
- Local development environment run configuration
# Options are: uvicorn, gunicorn, chalice, chalice_docker
# FastAPI case:
RUN_METHOD=uvicorn
# Flask case:
# RUN_METHOD=gunicorn
# Chalice case: "chalice" to use http (running without docker) or "chalice_docker" to use https (with docker)
# http:
# RUN_METHOD=chalice
# https:
# RUN_METHOD=chalice_docker
- Run methods and framework App directory and entry point
#
# Default App main code directory
# for Chalice:
# https://aws.github.io/chalice/topics/packaging.html
# APP_DIR="."
# for FastAPI:
# https://fastapi.tiangolo.com/tutorial/bigger-applications/?h=directory+structure#an-example-file-structure
# APP_DIR=app
# for Flask:
# https://flask.palletsprojects.com/en/2.3.x/tutorial/layout/
# APP_DIR=flaskr
#
# Default App entry point code file
# for Chalice:
# https://aws.github.io/chalice/topics/packaging.html
# APP_MAIN_FILE=app
# for FastAPI:
# https://fastapi.tiangolo.com/tutorial/bigger-applications/?h=directory+structure#an-example-file-structure
# APP_MAIN_FILE=main
# for Flask:
# https://flask.palletsprojects.com/en/2.3.x/tutorial/factory/
# APP_MAIN_FILE="__init__"
#
- Local run http/https protocol, to have it automatically on the application local running, no user intervention.
# RUN_PROTOCOL=http
# RUN_PROTOCOL=https
#
# Leave blank to let the user select the protocol when the local dev environment run starts.
# RUN_PROTOCOL=""
- Auto-reload configuration: sometimes the auto-reload feature doesn't work correctly, for example running Chalice with Turborepo and the "uv" package manager. In this case, set
AUTO_RELOAD=0to disable the auto-reload feature and make it work.
# Auto-reload configuration for the local development environment.
# Available options: `1` to enable, `0` to disable, and `-` to remove the auto-reload parameter from the command line. Defaults to: 1
# AUTO_RELOAD=1
# AUTO_RELOAD=0
# AUTO_RELOAD="-"
- JSON configuration files location and git URL
GIT_SUBMODULE_LOCAL_PATH=lib/config_dbdef
GIT_SUBMODULE_URL=git://github.com/username/exampleapp_configs.git
- Frontend application path (to copy version file during big lambdas deployment)
FRONTEND_PATH=../exampleapp_frontend
- Local python version
PYTHON_VERSION=3.12
# PYTHON_VERSION=3.11.5
# PYTHON_VERSION=3.10.12
- IAAS Cloud provider
# IAAS Cloud provider
# Available options: `aws`, `gcp`, `azure`
CLOUD_PROVIDER=aws
- Enable/disable Cloud Provider secrets
# Enable/disable Cloud Provider secrets (instead of environment variables).
# Available options: `1` to enable, `0` to disable. Defaults to: 1
# GET_SECRETS_ENABLED=0
#
# Fine grained Cloud Provider secrets management:
#
# Enable/disable Cloud Provider envvars.
# Available options: `1` to enable, `0` to disable. Defaults to: 1
# Set to "0" in local development environment so envvars like APP_CORS_ORIGIN can be
# set by the scripts and .env file and access QA resources from DEV.
# GET_SECRETS_ENVVARS=0
#
# Enable/disable Cloud Provider critical secrets.
# Available options: `1` to enable, `0` to disable. Defaults to: 1
# Set to "0" in local development environment so envvars like APP_DB_URI can be
# set by the scripts and .env file and access QA resources from DEV.
# GET_SECRETS_CRITICAL=0
- AWS Configuration
https://console.aws.amazon.com
# AWS S3 bucket name (used by set_fe_cloudfront_domain.sh to set the CloudFront domain name in the frontend for the CORS config)
AWS_S3_BUCKET_NAME_FE=exampleapp-frontend-website-[STAGE]
# Region for this App all AWS services
AWS_REGION=aws-region
# AWS base name for Lambda Functions, API Gateway, EC2, ELB, etc.
AWS_LAMBDA_FUNCTION_NAME=exampleapp-backend
# AWS Lambda function role:
# These variables are used only if deploy without AWS SAM (deploy_without_sam) in big_lambdas_manager.sh. SAM generates this role automatically
AWS_LAMBDA_FUNCTION_ROLE_QA=exampleapp-api_handler-role-qa
AWS_LAMBDA_FUNCTION_ROLE_STAGING=exampleapp-api_handler-role-staging
AWS_LAMBDA_FUNCTION_ROLE_DEMO=exampleapp-api_handler-role-demo
AWS_LAMBDA_FUNCTION_ROLE_PROD=exampleapp-api_handler-role-prod
# AWS SSL certificate ARN (used by big_lambdas_manager.sh)
AWS_SSL_CERTIFICATE_ARN=arn:aws:acm:AWS-REGION:AWS-ACCOUNT:certificate/AWS-CERTIFICATE-UUID
- Deployment options
# AWS Deployment type
# Available options: `lambda`, `ec2`, `fargate`. Defaults to: lambda
AWS_DEPLOYMENT_TYPE=lambda
# AWS Lambda Deployment type
# Available options: `zip`, `container`. Defaults to: zip
AWS_LAMBDA_DEPLOYMENT_TYPE=zip
- Storage URL encryption (to mask the AWS S3 bucket name and key)
# Storage URL encryption
#
# Storage URL encryption (default to 0)
# STORAGE_URL_ENCRYPTION=1
#
# Storage seed (to set storage URL encryption -e.g. AWS S3-)
# Generate a new one with: `make generate_seed`
# STORAGE_URL_SEED=yyy
#
# Development URL masking external hostname
# For features like AI Vision, to send the image URL masked.
# It's recommended to set only in development environment.
# E.g. URL_MASK_EXTERNAL_HOSTNAME=app-dev.exampleapp.com
# Leave blank to use the same URL stored -for example- in the AI Assistant conversarions.
# URL_MASK_EXTERNAL_HOSTNAME=
#
# URL masking external protocol (http or https, defaults to RUN_PROTOCOL or https)
# URL_MASK_EXTERNAL_PROTOCOL=http
- SMTP Mail configuration
SMTP_SERVER=smtp_server
SMTP_PORT=smtp_port
SMTP_USER=smtp_user
SMTP_PASSWORD=smtp_password
SMTP_DEFAULT_SENDER=sender_email
- Docker configuration
# Docker account username: used by the docker login command to push images (e.g. when using Kubernetes)
DOCKER_ACCOUNT=docker_account_username
- Container engine configuration
# Container engine: used by the docker run command to run the container
# Available options: `docker`, `podman`. Defaults to: docker
# CONTAINERS_ENGINE=docker
# CONTAINERS_ENGINE=podman
# Open containers engine app
# Available options: `1` to enable, `0` to disable. Defaults to: 1
# OPEN_CONTAINERS_ENGINE_APP=1
# OPEN_CONTAINERS_ENGINE_APP=0
- Tests configuration
# Backend debug local port
# For http (default)
# BACKEND_DEBUG_LOCAL_PORT=5001
# For https
# WARNING: this port must be different than the BACKEND_LOCAL_PORT, otherwise it will throw
# the "Port already in use" error trying to start the sls-nginx container.
# BACKEND_DEBUG_LOCAL_PORT=5002
# Testing endpoint
# For http
# (defaults to "http://localhost:5001")
# TEST_APP_URL=http://app.exampleapp.local:5001
# For https
# TEST_APP_URL=https://app.exampleapp.local:5002
- App local ports
# Local frontend port (defaults to 3000)
FRONTEND_LOCAL_PORT=3000
#
# Local backend API port (defaults to 5001)
BACKEND_LOCAL_PORT=5001
- Local self-generated SSL certificate creation method (used when running the local dev environment with https)
# Local self-generated SSL certificate creation method
# (used by "scripts/local_ssl_certs_creation.sh", defaults to "mkcert")
#
# SSL_CERT_GEN_METHOD="mkcert"
# SSL_CERT_GEN_METHOD="office-addin-dev-certs"
# SSL_CERT_GEN_METHOD="openssl"
- Disable local services
(useful when running the local dev environment on the road, offline, over a smartphone internet connection)
# Disable local DNS server startup during app run
LOCAL_DNS_DISABLED=1
# Disable bridge proxy startup during app run
BRIDGE_PROXY_DISABLED=1
- Localstack
https://www.localstack.cloud/
# Localstack configuration
# LOCALSTACK_AUTH_TOKEN=""
# (Set LOCALSTACK_AUTH_TOKEN empty when working offline, and assign the Auth Token to make services like EC2 to work correctly)
- General parameters file
# Enable/disable general parameters file creation in "/tmp/params_general.json"
# Available options: `1` to enable, `0` to disable. Defaults to: 1
# PARAMS_FILE_ENABLED=0
# PARAMS_FILE_ENABLED=1
- User's parameters file
# Enable/disable user's parameters file creation in "/tmp/params_[user_id].json"
# Recommended to enable it in local development environment to make it run faster
# Defaults to "0" to avoid security risks when running in a production environment
# Available options: `1` to enable, `0` to disable.
# USER_PARAMS_FILE_ENABLED=0
# USER_PARAMS_FILE_ENABLED=1
- Flask configuration
# Flask app entry point
FLASK_APP=__init__.py
# Flask secret key
FLASK_SECRET_KEY=xxxx
App structure
Suggested directory structure by framework:
This is a suggested App development repository structure for a FastAPI project:
.
├── app
│ ├── __init__.py
│ ├── main.py
│ ├── dependencies.py
│ └── routers
│ │ ├── __init__.py
│ │ ├── items.py
│ │ └── users.py
│ └── internal
│ ├── __init__.py
│ └── admin.py
├── logs
│ └── .gitignore
├── .env
├── .env.example
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── Makefile
├── Pipfile
├── Pipfile.lock
├── README.md
├── package-lock.json
├── package.json
├── requirements.txt
├── tests
│ ├── .env.for_test
│ ├── __init__.py
│ ├── assets
│ ├── conftest.py
│ └── pytest.ini
└── version.txt
This is a suggested App development repository structure for a Flask project:
.
├── flaskr/
│ ├── __init__.py
│ ├── items.py
│ ├── users.py
│ ├── admin.py
│ └── index.py
├── logs
│ └── .gitignore
├── package-lock.json
├── package.json
├── requirements.txt
├── tests
│ ├── .env.for_test
│ ├── __init__.py
│ ├── assets
│ ├── conftest.py
│ └── pytest.ini
├── .env
├── .env.example
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── Makefile
├── Pipfile
├── Pipfile.lock
├── README.md
└── version.txt
This is a suggested App development repository structure for a Chalice project:
.
├── .chalice
│ ├── config-example.json
│ ├── config.json
│ ├── deployed
│ │ ├── dev.json
│ │ ├── qa.json
│ │ └── prod.json
│ ├── deployment
│ │ ├── deployment.zip
│ │ └── sam.json
│ ├── deployments
│ ├── dynamodb_cf_template.yaml
│ └── policy-qa.json
├── chalicelib
│ └── endpoints
│ ├── items.py
│ ├── users.py
│ ├── admin.py
│ └── __init__.py
├── lib
│ ├── .gitignore
│ ├── config
│ │ ├── __init__.py
│ │ └── config.py
│ ├── config_dbdef
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── backend
│ │ └── frontend
│ └── models
│ ├── __init__.py
│ ├── ai_chatbot
│ │ ├── __init__.py
│ │ └── ai_gpt_fn_index.py
│ ├── external_apis
│ │ └── __init__.py
│ └── utilities
├── logs
│ └── .gitignore
├── tests
│ ├── .env.for_test
│ ├── __init__.py
│ ├── assets
│ ├── conftest.py
│ └── pytest.ini
├── .env
├── .env.example
├── .gitignore
├── app.py
├── CHANGELOG.md
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── Pipfile
├── Pipfile.lock
├── README.md
├── requirements.txt
└── version.txt
Code examples and JSON configuration files
The main menu, API endpoints and CRUD editor configurations are defined in the JSON configuration files.
You can find examples about configurations and how to code an App in the GenericSuite App Creation and Configuration guide.
Usage
Check the The GenericSuite backend development scripts for more details.
API Specification
The API specification is available in the FastApiTemplate/server directory:
- Swagger JSON: fastapitemplate-backend_openapi.json
- Swagger YAML: fastapitemplate-backend_openapi.yaml
License
This project is licensed under the ISC License - see the LICENSE file for details.
Credits
This project is developed and maintained by Carlos J. Ramirez. For more information or to contribute to the project, visit GenericSuite on GitHub.
Happy Coding!