uffizzi

Uffizzi App

The primary REST API for creating and managing Previews

While it provides a documented REST API for anyone to use, it’s most valuable when used with the open-source uffizzi_cli.

Uffizzi Overview

Uffizzi is the Full-stack Previews Engine that makes it easy for your team to preview code changes before merging—whether frontend, backend or microserivce. Define your full-stack apps with a familiar syntax based on Docker Compose, then Uffizzi will create on-demand test environments when you open pull requests or build new images. Preview URLs are updated when there’s a new commit, so your team can catch issues early, iterate quickly, and accelerate your release cycles.

Learn more about full-stack previews and the broader goals of this project.

Getting started with Uffizzi

The fastest and easiest way to get started with Uffizzi is via the fully hosted version available at https://uffizzi.com, which includes free plans for small teams and qualifying open-source projects.

Alternatively, you can self-host Uffizzi via the open-source repositories available here on GitHub. The remainder of this README is intended for users interested in self-hosting Uffizzi or for those who are just curious about how Uffizzi works.

Uffizzi Architecture

Uffizzi consists of the following components:

To host Uffizzi yourself, you will also need the following external dependencies:

Controller Design

This uffizzi_app acts as a REST API for uffizzi_cli and Uffizzi Dashboard interfaces. It requires uffizzi_controller as a supporting service.

Uffizzi App Environment Variables

Prepare

docker-compose run --rm web bash -c "bundle install && bundle exec rails db:setup"
docker-compose up

Connect from uffizzi-cli to the app

docker-compose run --rm gem bash
bundle exec uffizzi login --hostname http://web:7000 -u admin@uffizzi.com

password - password

API Documentation

Rebuild documentation locally:

docker-compose run --rm core bash
bundle exec rake core:generate_docs

Git workflow for the app:

  1. Clone the repository and checkout to develop branch

  2. Pull repository to ensure you have the latest changes

git pull --rebase develop
  1. Start new branch from develop
git checkout -b feature/short_issue_description (e.g. feature/add_domain_settings)
  1. Make changes you need for the feature, commit them to the repo
git add .
git commit -m 'short commit description' (e.g. git commit -m 'added domain settings')
git push origin BRANCH_NAME
  1. You already can create PR with develop branch as a target. Once the feature is ready let us know in the channel - we will review

  2. Merge your feature to qa branch and push. Ensure your pipeline is successful

git checkout qa
git pull --rebase qa
git merge --no-ff BRANCH_NAME
git push origin qa

Running linter

docker-compose run --rm web bundle exec rubocop -A

Running test

docker-compose run --rm core bash
bin/rails test

Health checks

The default health check uri is health_check. To use a custom uri please add the HEALTH_CHECK_URI environment variable to the docker-compose.yml

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/UffizziCloud/uffizzi_app.