https://github.com/krafterio/fastedgy
Base that makes web application development simple and fast with FastAPI and Edgy ORM
https://github.com/krafterio/fastedgy
alembic-extension api-generator cli container-service edgy fastapi i18n metadata-model openapi orm postgresql python queue-jobs rest-api sqlalchemy storage
Last synced: about 1 month ago
JSON representation
Base that makes web application development simple and fast with FastAPI and Edgy ORM
- Host: GitHub
- URL: https://github.com/krafterio/fastedgy
- Owner: krafterio
- License: mit
- Created: 2025-09-11T08:38:56.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-04-27T11:08:17.000Z (about 1 month ago)
- Last Synced: 2026-04-27T11:22:26.914Z (about 1 month ago)
- Topics: alembic-extension, api-generator, cli, container-service, edgy, fastapi, i18n, metadata-model, openapi, orm, postgresql, python, queue-jobs, rest-api, sqlalchemy, storage
- Language: Python
- Homepage: https://fastedgy.krafter.io
- Size: 6.09 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
FastEdgy
--------
The base that makes web application development simple and fast with FastAPI and Edgy ORM.
## Features
- **API Routes Generator:** Automatically create CRUD management and export routes for models
- **Advanced Query Builder for API filter:** Create complex filters with nested rules and condition groupings validated by exposed metadata
- **Fields selector in API Response:** Define the list of fields that the JSON API should return with the ability to define fields on nested relationships compatible with single and multiple relationships
- **Metadata Generator:** Automatically create metadata info for models and fields
- **Container Service:** Centralizes and manages application-level lifecycle service classes with lazy loading
- **Queued Task:** Manage asynchronous tasks and background jobs with failover management and multi-workers
- **CLI:** Use Rich Click to improve command-line formatting and auto-register new commands
- **Edgy ORM Fields Extensions:** Add additional field types for Edgy and PostgreSQL
- **Email:** Use Jinja2 templates to generate and send emails
- **Storage:** Add storage management service
- **Alembic Extensions:** Add Alembic extensions to handle Edgy ORM/SQL Alchemy field migrations
- **Internationalization:** Use Babel to serve and extract translatable messages with CLI commands
- **Authentication:** Adds basic API endpoints for authentication management
## Documentation
Documentation is available at [fastedgy.krafter.io](https://fastedgy.krafter.io).
## Prerequisites
- Python 3.13+
- UV (Python Package Manager recommended, see the [installation doc](https://docs.astral.sh/uv/getting-started/installation))
- PostgreSQL 15.0+
## Installation
```
uv add git+ssh://git@github.com/krafterio/fastedgy.git
```
Or
```
pip install git+ssh://git@github.com/krafterio/fastedgy.git
```
## Development
### Documentation Development
The project documentation is built using [MkDocs Material](https://squidfunk.github.io/mkdocs-material) with versioning
support via [Mike](https://github.com/jimporter/mike).
#### Local Development
To work on the documentation locally:
```bash
uv sync --dev
uv run mkdocs serve
```
The documentation will be available at `http://localhost:8000/fastedgy`.
#### Documentation Versioning
The documentation uses **mike** for version management:
- **Development version**: Push to `main` branch automatically deploys to `dev` version
- **Stable releases**: Create a tag (e.g., `0.1.0`) to automatically deploy version `0.1` as `latest`
**Useful commands:**
```bash
# List all deployed versions
uv run mike list
# Serve documentation locally with version selector (for testing) available at `http://localhost:8000`
uv run mike serve
# Manual deployment commands (for exceptional cases only)
# The --push flag automatically publishes to GitHub Pages
uv run mike deploy --push dev latest --update-aliases
uv run mike set-default --push latest
```
**Note:** In normal development, GitHub Actions handles deployment automatically when you push to `main` or create tags.
#### Publishing New Versions
1. **For development updates**: Simply push to `main` branch
```bash
git push origin main
```
2. **For new releases**: Create and push a version tag
```bash
git tag 0.2.0
git push origin 0.2.0
```
The GitHub Action will automatically handle the documentation deployment.
## Commit message format convention
This project uses the **[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0)** naming convention.
### Basic structure of a Conventional commit
```
():
```
- **type**: the type of modification made (required)
- **scope**: the scope (optional, but recommended)
- **description**: a short explanation (imperative, no capital letters, no period)
### Conventional Commits Types used
| Type | Description |
|----------|--------------------------------------------------------------------------------|
| feat | New feature |
| fix | Bug fix |
| docs | Change in documentation |
| style | Change of format (indentation, spaces, etc.) without functional impact |
| refactor | Refactoring the code without adding or correcting functionality |
| revert | Reverting a previous commit |
| merge | Merging branches |
| test | Adding or modifying tests |
| chore | Miscellaneous tasks without direct impact (build, dependencies, configs, etc.) |
| perf | Performance improvement |
| ci | Changes to CI/CD files (Github Actions, Gitlab CI, etc.) |
| release | Creating a new release |
### Conventional Commits Scopes used
| Scope | Description |
|---------|---------------------------------------------------------|
| core | Core backend logic and main platform features |
| cli | CLI commands and related functionality |
| orm | ORM models, migrations, and related logic |
| auth | Authentication and authorization mechanisms |
| api | REST API endpoints, routes, and controllers |
| config | Global configuration and environment settings |
| project | Project structure, global files, and overall management |
Contributing
------------
FastEdgy is an Open Source, community-driven project.
Issues and feature requests are tracked in the [Github issue tracker][3].
Pull Requests are tracked in the [Github pull request tracker][4].
License
-------
FastEdgy is released under the [MIT License][1].
About
-----
FastEdgy was originally created by [Krafter][2].
[1]: LICENSE
[2]: https://krafter.io
[3]: https://github.com/krafterio/fastedgy/issues
[4]: https://github.com/krafterio/fastedgy/pulls