/plombery

Python task scheduler with a user-friendly web UI

Primary LanguageTypeScriptMIT LicenseMIT

Contributors Forks Stargazers Issues MIT License PyPI Version Code Climate


Plombery

Python task scheduler with a user-friendly web UI
Official website ยป

GitHub ยท Report Bug

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!

Plombery Screen Shot

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 (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
  • ๐Ÿ‘‰ 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 integrations

When 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

(back to top)

Built With

Python TypeScript React

(back to top)

๐Ÿš€ Getting Started

Check the ๐Ÿ‘‰ official website to get started with Plombery.

๐ŸŽฎ Try on GitHub Codespaces

Try Plombery with some demo pipelines on GitHub Codespaces:

Get Started on 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 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:

Minimal code

I know you want to see it!

๐Ÿ›ฃ Roadmap

See the open issues for a full list of proposed features (and known issues).

(back to top)

๐Ÿ‘ฉโ€๐Ÿ’ป 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

(back to top)

Development

Clone a fork of this repo and start your dev environment.

Create a python virtual environment:

python -m venv .venv
# on Mac/Linux
source .venv/bin/activate
# on Win
.venv/Script/activate

and install the dependencies:

pip install -r requirements.txt
pip install -r requirements-dev.txt

for development purposes, it's useful to run the example application:

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:

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:

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:

pytest

To run tests coverage, run:

coverage run -m pytest
coverage report -m

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Project Link: https://github.com/lucafaggianelli/plombery

(back to top)

Acknowledgments

Plombery is built on top of amazing techs:

(back to top)

Star History

Star History Chart