Skip to main content

Super framework for your super app

Project description

🤖 Zrb (Read: Zaruba) : A Super Framework for Your Super App

📖 Documentation | 🏁 Getting Started | 💃 Oops, I did it Again| ❓ FAQ

Zrb is a CLI-based automation tool and low-code platform. Once installed, Zrb will help you automate day-to-day tasks, generate projects and applications, and even deploy your applications to Kubernetes with a few commands.

To use Zrb, you need to be familiar with CLI.

Zrb task definitions are written in Python, and we have a very good reason behind the decision.

Zrb as a low-code framework

Let's see how you can build and run a CRUD application.

# Create a project
zrb project create --project-dir my-project --project-name "My Project"
cd my-project

# Create a Fastapp
zrb project add fastapp --project-dir . --app-name "fastapp" --http-port 3000

# Add library module to fastapp
zrb project add fastapp-module --project-dir . --app-name "fastapp" --module-name "library"

# Add entity named "books"
zrb project add fastapp-crud --project-dir . --app-name "fastapp" --module-name "library" \
    --entity-name "book" --plural-entity-name "books" --column-name "code"

# Add column to the entity
zrb project add fastapp-field --project-dir . --app-name "fastapp" --module-name "library" \
    --entity-name "book" --column-name "title" --column-type "str"

# Run Fastapp as monolith
zrb project start-fastapp --fastapp-run-mode "monolith"

You will be able to access the application by pointing your browser to http://localhost:3000

Furthermore, you can also run the same application as microservices, run the application as docker containers, and even doing some deployments into your kubernetes cluster.

# Run Fastapp as microservices
zrb project start-fastapp --fastapp-run-mode "microservices"

# Run Fastapp as container
zrb project start-fastapp-container --fastapp-run-mode "microservices"
zrb project stop-fastapp-container

# Deploy fastapp and all it's dependencies to kubernetes
docker login
zrb project deploy-fastapp --fastapp-deploy-mode "microservices"

You can visit our tutorials to see more cool tricks.

Zrb as a task-automation framework

Aside from the builtin capabilities, Zrb also allows you to define your automation commands in Python. To do so, you need to create/modify a file named zrb_init.py.

# filename: zrb_init.py
from zrb import runner, CmdTask, StrInput

hello = CmdTask(
    name='hello',
    inputs=[StrInput(name='name', description='Name', default='world')],
    cmd='echo Hello {{input.name}}'
)
runner.register(hello)

Once defined, your command will be instantly available from the CLI:

zrb hello
# You can also provide the parameter directly:
#     zrb hello --name "Go Frendi"
Name [world]: Go Frendi
🤖 ○ ◷ 2023-09-18 07:37:40.849 ❁ 47932 → 1/3 🍌            zrb hello • Run script: echo Hello Go Frendi
🤖 ○ ◷ 2023-09-18 07:37:40.849 ❁ 47932 → 1/3 🍌            zrb hello • Working directory: /home/gofrendi/zrb/playground
🤖 ○ ◷ 2023-09-18 07:37:40.854 ❁ 47933 → 1/3 🍌            zrb hello • Hello Go Frendi
Support zrb growth and development!
☕ Donate at: https://stalchmst.com/donation
🐙 Submit issues/PR at: https://github.com/state-alchemists/zrb
🐤 Follow us at: https://twitter.com/zarubastalchmst
🤖 ○ ◷ 2023-09-18 07:37:40.899 ❁ 47933 → 1/3 🍌            zrb hello • Completed in 0.052213191986083984 seconds
To run again: zrb hello --name "Go Frendi"
Hello Go Frendi

To learn more about this, you can visit our getting started guide.

🫰 Installation

⚙️ In local machine

Installing Zrb in your system is as easy as typing the following command in your terminal:

pip install zrb

Just like any other Python package, you can also install Zrb in your virtual environment. This will allow you to have many versions of Zrb on the same computer.

⚠️ If the command doesn't work, you probably don't have Pip/Python on your computer. See Main prerequisites subsection to install them.

🐋 With docker

If you prefer to work with Docker, you can create a file named docker-compose.yml

version: '3'
networks:
  zrb:
    name: zrb
services:

  zrb:
    build:
      dockerfile: Dockerfile
      context: .
    image: docker.io/stalchmst/zrb:latest
    container_name: zrb
    hostname: zrb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./project:/project
    networks:
      - zrb
    ports:
      - 3001:3001 # or/and any other ports you want to expose.

Once your docker-compose file is created, you can invoke the following command:

docker compose up -d

You will be able to access Zrb by using docker exec:

docker exec -it zrb zsh

✅ Main prerequisites

Since Zrb is written in Python, you need to install a few things before installing Zrb:

  • 🐍 Python
  • 📦 Pip
  • 🏝️ Venv

If you are using 🐧 Ubuntu, the following command should work:

sudo apt install python3 python3-pip python3-venv python-is-python3

If you are using 🍎 Mac, the following command will work:

# Make sure you have homebrew installed, see: https://brew.sh/
brew install python3
ln -s venv/bin/pip3 /usr/local/bin/pip
ln -s venv/bin/python3 /usr/local/bin/python

If you prefer Python distribution like conda, that might work as well.

✔️ Other prerequisites

If you want to generate applications using Zrb and run them on your computer, you will also need:

  • 🐸 Node.Js and Npm.
    • You need Node.Js to modify/transpile frontend code into static files.
    • You can visit the Node.Js website for installation instructions.
  • 🐋 Docker and Docker-compose plugin.
    • You need Docker and Docker-compose plugin to
      • Run docker-compose-based tasks
      • Run some application prerequisites like RabbitMQ, Postgre, or Redpanda.
    • The easiest way to install Docker, Docker-compose plugin, and local Kubernetes is by using Docker Desktop.
    • You can also install Docker and Docker-compose plugin by following the Docker installation guide.
  • ☸️ Kubernetes cluster.
    • Zrb allows you to deploy your applications into Kubernetes.
    • To test it locally, you will need a Minikube or other alternatives. However, the easiest way is by enabling Kubernetes on your Docker Desktop.
  • 🦆 Pulumi
    • You need Pulumi to deploy your applications

🏁 Getting started

We have a nice getting started guide to help you cover the basics. Make sure to check it out😉.

📖 Documentation

You can visit Zrb documentation for more detailed information.

☕ Donation

Help Red Skull to click the donation button:

🎉 Fun fact

Madou Ring Zaruba (魔導輪ザルバ, Madōrin Zaruba) is a Madougu which supports bearers of the Garo Armor. (Garo Wiki | Fandom)

Madou Ring Zaruba on Kouga's Hand

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zrb-0.0.108.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

zrb-0.0.108-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

File details

Details for the file zrb-0.0.108.tar.gz.

File metadata

  • Download URL: zrb-0.0.108.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for zrb-0.0.108.tar.gz
Algorithm Hash digest
SHA256 38fbc12896fa392e28e5df1a87318ff8a544f77a669dd6e16de7d468dc013b7d
MD5 859c2ba788f3cdb137b4688c965d7743
BLAKE2b-256 49373c1132e9b8ed9cc75a405b4bb69f5990e9dc648bf5bf94f419a2d0326647

See more details on using hashes here.

File details

Details for the file zrb-0.0.108-py3-none-any.whl.

File metadata

  • Download URL: zrb-0.0.108-py3-none-any.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for zrb-0.0.108-py3-none-any.whl
Algorithm Hash digest
SHA256 b3cf1c74f93b79fceb285d8eb3b7aca65ce3ed7f5a9eeac3d9600cdd28b40a30
MD5 7385e9ce3f370d03af38d1bed720d9b8
BLAKE2b-256 58f077fd21d463e2c4d804095c16d8e7227e4681fb05b2b731993be1f47c3322

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page