Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lucafaggianelli/plombery
Python task scheduler with a user-friendly web UI
https://github.com/lucafaggianelli/plombery
apscheduler hacktoberfest orchestrator pipeline python react task-scheduler tremor typescript
Last synced: about 1 month ago
JSON representation
Python task scheduler with a user-friendly web UI
- Host: GitHub
- URL: https://github.com/lucafaggianelli/plombery
- Owner: lucafaggianelli
- License: mit
- Created: 2023-03-04T15:52:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-27T21:51:34.000Z (about 1 month ago)
- Last Synced: 2024-09-29T02:21:52.762Z (about 1 month ago)
- Topics: apscheduler, hacktoberfest, orchestrator, pipeline, python, react, task-scheduler, tremor, typescript
- Language: TypeScript
- Homepage: http://lucafaggianelli.com/plombery/
- Size: 4.42 MB
- Stars: 289
- Watchers: 4
- Forks: 40
- Open Issues: 86
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]
[![PyPI Version][pypi-shield]][pypi-url]
[![Code Climate][CodeClimate-shield]][CodeClimate-url]
## About The Project
Plombery is a simple task scheduler for Python with a web UI and a REST API,
if you need to run and monitor recurring python scripts then it's
the right tool for you!
> This project is at its beginning, so it can be shaped and improved with
> your feedback and help!
> If you like it, star it ๐! If you want a feature or find a bug, open an issue.## Features
- โฐ Task scheduling based on [APScheduler](https://github.com/agronholm/apscheduler) (supports Interval, Cron and Date triggers)
- ๐ป Built-in Web interface, no HTML/JS/CSS coding required
- ๐ฉโ๐ป๐ Pipelines and tasks are defined in pure Python
- ๐๏ธ Pipelines can be parametrized via [Pydantic](https://docs.pydantic.dev/)
- ๐ Pipelines can be run manually from the web UI
- ๐ Secured via OAuth2
- ๐ Debug each run exploring logs and output data
- ๐ฉ Monitor the pipelines and get alerted if something goes wrong
- ๐ฃ Use the REST API for advanced integrationsWhen you shouldn't use it:
- you need a lot of scalability and you want to run on a distributed system
- you want a no-code tool or you don't want to use Python### Built With
[![Python][Python]][Python-url]
[![TypeScript][TypeScript]][TypeScript-url]
[![React][React.js]][React-url]## ๐ Getting Started
Check the ๐ [official website](https://lucafaggianelli.github.io/plombery/)
to get started with Plombery.## ๐ฎ Try on GitHub Codespaces
Try Plombery with some demo pipelines on GitHub Codespaces:
Codespaces are development environments that run in the cloud so you
can run a project without cloning it, installing deps etc, here's an how
to:- Go to the the [lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery) GitHub page
- Click on the green **Code** button on the top right
- Choose the **Codespaces** tab
- Click on *create new codespace from main* or reuse an existing one
- A new page will open at `github.dev`, wait for the environment build
- Once your codespace is ready you'll see an interface similar to VSCode
- Some commands will be run in the terminal to build the frontend etc., wait for their completion
- If everything went well, Plombery home page will be open in a new browser tab
- Changes in the Python code will be immediately reflected in the web page, like if you were developing
on your laptop## ๐ง Show me the code
This is how it looks a minimalist pipeline:
I know you want to see it!## ๐ฃ Roadmap
See the [open issues](https://github.com/lucafaggianelli/plombery/issues) for a full list of proposed features (and known issues).
## ๐ฉโ๐ป Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request### Development
Clone a fork of this repo and start your dev environment.
Create a python virtual environment:
```sh
python -m venv .venv
# on Mac/Linux
source .venv/bin/activate
# on Win
.venv/Script/activate
```and install the dependencies:
```sh
pip install -r requirements.txt
pip install -r requirements-dev.txt
```for development purposes, it's useful to run the example application:
```sh
cd examples/# Create a venv for the example app
python -m venv .venv
source .venv/bin/activate
pip install -r requirements./run.sh
# or ./run.ps1 on windows
```The React frontend is in the `frontend/` folder, enter the folder
and install the dependencies:```sh
cd frontend/
# The project uses yarn as dependency manager, if you don't have
# it, you must install it.
# This command will install the deps:
yarn
```run the development server:
```sh
yarn dev
```### Documentation
The documentation website is based on MkDocs Material, the source code is in the
`docs/` folder and the config is in the `mkdocs.yml` file.To run a local dev server, run:
```
mkdocs serve
```### Testing
Tests are based on `pytest`, to run the entire suite just run:
```sh
pytest
```To run tests coverage, run:
```sh
coverage run -m pytest
coverage report -m
```## License
Distributed under the MIT License. See `LICENSE.txt` for more information.
## Contact
Project Link: [https://github.com/lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery)
## Acknowledgments
Plombery is built on top of amazing techs:
- [FastAPI](https://fastapi.tiangolo.com/)
- [Pydantic](https://docs.pydantic.dev/)
- [APScheduler](https://apscheduler.readthedocs.io/)
- [Apprise](https://github.com/caronc/apprise)
- [React](https://react.dev/)
- [Vite](https://vitejs.dev/)
- [Tremor](https://www.tremor.so/)## Star History
[contributors-shield]: https://img.shields.io/github/contributors/lucafaggianelli/plombery.svg?style=for-the-badge
[contributors-url]: https://github.com/lucafaggianelli/plombery/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/lucafaggianelli/plombery.svg?style=for-the-badge
[forks-url]: https://github.com/lucafaggianelli/plombery/network/members
[stars-shield]: https://img.shields.io/github/stars/lucafaggianelli/plombery.svg?style=for-the-badge
[stars-url]: https://github.com/lucafaggianelli/plombery/stargazers
[issues-shield]: https://img.shields.io/github/issues/lucafaggianelli/plombery.svg?style=for-the-badge
[issues-url]: https://github.com/lucafaggianelli/plombery/issues
[license-shield]: https://img.shields.io/github/license/lucafaggianelli/plombery.svg?style=for-the-badge
[license-url]: https://github.com/lucafaggianelli/plombery/blob/master/LICENSE
[product-screenshot]: images/screenshot.png
[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB
[React-url]: https://reactjs.org/
[Python]: https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=yellow
[Python-url]: https://www.python.org/
[TypeScript]: https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white
[TypeScript-url]: https://www.typescriptlang.org/
[pypi-shield]: https://img.shields.io/pypi/v/plombery.svg?style=for-the-badge
[pypi-url]: https://pypi.python.org/pypi/plombery
[CodeClimate-shield]: https://codeclimate.com/github/lucafaggianelli/plombery.png?style=for-the-badge
[CodeClimate-url]: https://codeclimate.com/github/lucafaggianelli/plombery