# Pear Admin Fastapi **Repository Path**: lunarlanding/pear-admin-fastapi ## Basic Information - **Project Name**: Pear Admin Fastapi - **Description**: 基 于 fastapi 的 快 速 开 发 框 架 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 10 - **Created**: 2023-04-17 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pear_admin_fastapi This project was generated using fastapi_template. ## Poetry This project uses poetry. It's a modern dependency management tool. To run the project use this set of commands: ```bash poetry install poetry run python -m pear_admin_fastapi ``` This will start the server on the configured host. You can find swagger documentation at `/api/docs`. You can read more about poetry here: https://python-poetry.org/ ## Docker You can start the project with docker using this command: ```bash docker-compose -f deploy/docker-compose.yml --project-directory . up --build ``` If you want to develop in docker with autoreload add `-f deploy/docker-compose.dev.yml` to your docker command. Like this: ```bash docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . up --build ``` This command exposes the web application on port 8000, mounts current directory and enables autoreload. But you have to rebuild image every time you modify `poetry.lock` or `pyproject.toml` with this command: ```bash docker-compose -f deploy/docker-compose.yml --project-directory . build ``` ## Project structure ```bash $ tree "pear_admin_fastapi" pear_admin_fastapi ├── conftest.py # Fixtures for all tests. ├── db # module contains db configurations │   ├── dao # Data Access Objects. Contains different classes to interact with database. │   └── models # Package contains different models for ORMs. ├── __main__.py # Startup script. Starts uvicorn. ├── services # Package for different external services such as rabbit or redis etc. ├── settings.py # Main configuration settings for project. ├── static # Static content. ├── tests # Tests for project. └── web # Package contains web server. Handlers, startup config. ├── api # Package with all handlers. │   └── router.py # Main router. ├── application.py # FastAPI application configuration. └── lifetime.py # Contains actions to perform on startup and shutdown. ``` ## Configuration This application can be configured with environment variables. You can create `.env` file in the root directory and place all environment variables here. All environment variables should start with "PEAR_ADMIN_FASTAPI_" prefix. For example if you see in your "pear_admin_fastapi/settings.py" a variable named like `random_parameter`, you should provide the "PEAR_ADMIN_FASTAPI_RANDOM_PARAMETER" variable to configure the value. This behaviour can be changed by overriding `env_prefix` property in `pear_admin_fastapi.settings.Settings.Config`. An example of .env file: ```bash PEAR_ADMIN_FASTAPI_RELOAD="True" PEAR_ADMIN_FASTAPI_PORT="8000" PEAR_ADMIN_FASTAPI_ENVIRONMENT="dev" ``` You can read more about BaseSettings class here: https://pydantic-docs.helpmanual.io/usage/settings/ ## Pre-commit To install pre-commit simply run inside the shell: ```bash pre-commit install ``` pre-commit is very useful to check your code before publishing it. It's configured using .pre-commit-config.yaml file. By default it runs: * black (formats your code); * mypy (validates types); * isort (sorts imports in all files); * flake8 (spots possible bugs); You can read more about pre-commit here: https://pre-commit.com/ ## Migrations If you want to migrate your database, you should run following commands: ```bash # To run all migrations until the migration with revision_id. alembic upgrade "" # To perform all pending migrations. alembic upgrade "head" ``` ### Reverting migrations If you want to revert migrations, you should run: ```bash # revert all migrations up to: revision_id. alembic downgrade # Revert everything. alembic downgrade base ``` ### Migration generation To generate migrations you should run: ```bash # For automatic change detection. alembic revision --autogenerate # For empty file generation. alembic revision ``` ## Running tests If you want to run it in docker, simply run: ```bash docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . run --build --rm api pytest -vv . docker-compose -f deploy/docker-compose.yml -f deploy/docker-compose.dev.yml --project-directory . down ``` For running tests on your local machine. 1. you need to start a database. I prefer doing it with docker: ``` docker run -p "3306:3306" -e "MYSQL_PASSWORD=pear_admin_fastapi" -e "MYSQL_USER=pear_admin_fastapi" -e "MYSQL_DATABASE=pear_admin_fastapi" -e ALLOW_EMPTY_PASSWORD=yes bitnami/mysql:8.0.30 ``` 2. Run the pytest. ```bash pytest -vv . ```