Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs Release 2024-02-003 #258

Merged
merged 21 commits into from
Feb 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions docs/create/clone-project.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Clone a project

One of the simplest ways to get started with Quix is to clone one of the projects in the [project gallery](https://quix.io/templates){target=_blank}.

![Clone a project](../images/clone-project/clone-project-template.png)

If you see a project that you are interested in, click the `Clone this project` button.

This **copies** the project into your Quix account. The `Import project` dialog is displayed:

![import project](../images/clone-project/import-project.png)

You have a couple of options here. The quickest and simplest way is to use the "One click" option, where are the configuration is done for you.

If you want more control, such as your broker options and data and streaming services option, choose the "Five click" option.

The wizard then creates a copy of the project in your Quix account.

Enter the project's environment, and the `Sync your environment` dialog is displayed:

![Sync your environment](../images/clone-project/sync-your-environment.png)

Click the `Sync environment` button to make sure all data is synchronized between the project's repository, and your environment.

You now have the opportunity to configure any **secrets** required, such as [Personal Access Tokens (PATs)](../develop/authentication/personal-access-token.md), sometimes referred to as bearer tokens, or input credentials required for external services such as InfluxDB, Redpanda, Aiven, and so on.

Click `Add secrets`, configure your secrets as required,

See also the [secrets management documentation](../deploy/secrets-management.md).

Once you have added your secrets, click `Synchronize pipeline` and `Go to pipeline` to complete the project configuration. The services in the pipeline now start.

## See also

* [Forking a project](./fork-project.md)
* [Creating a project](./create-project.md)
96 changes: 96 additions & 0 deletions docs/create/fork-project.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Fork a project

In this section you to learn how to fork a project, and get it up and running in your own Quix account.

Once you have the project running in your Quix account, you can modify the project as required, and save your changes to your copy of the project.

With a fork of the repository, you can also receive upstream bug fixes and improvements if you want to, by syncing your fork with the upstream repository.

In the following sections you learn how to:

1. Fork an existing project repository.
2. Create a new project (and environment) in Quix, linked to your forked repository.

## Watch a video

This video shows you how to fork a template project and create your project in Quix:

<div style="position: relative; padding-bottom: 49.61664841182914%; height: 0;"><iframe src="https://www.loom.com/embed/f1a462a7db8a44429261df1c03b26c48?sid=1e9fbaef-0961-4ccb-a597-d823e3a08b64" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></iframe></div>

Note, this is for the computer vision template project, but the process is the same.

## Fork the project repository

Quix provides the template project as a public GitHub repository.

!!! tip

Search the Quix GitHub repositories for projects with `template` in them, or see the [project gallery](https://quix.io/templates){target=_blank}.

If you want to use this template as a starting point for your own project, then you can fork the project.

Using fork enables you to create a complete copy of the project, but also benefit from future bug fixes and improvements by using the upstream changes.

To fork the repository:

1. Navigate to the template's [GitHub repository](https://github.com/quixio?q=template&type=all&language=&sort=){target=_blank}.

2. Click the `Fork` button to fork the repo into your GitHub account (or equivalent Git provider if you don't have a GitHub account).

!!! important

With template repositories, by default the `tutorial` branch is selected for you when you fork. If not, make sure you deselect the `fork main only` checkbox, so you fork all branches, as the `tutorial` branch is desgined to work with the free Quix account.

!!! tip

If you don't have GitHub account you can use another Git provider, such as GitLab or Bitbucket. If using Bitbucket, for example, you could import the repository - this would act as a clone (a static snapshot) of the repository. This is a simple option for Bitbucket, but you would not receive upstream changes from the original repository once the repository has been imported. You would however have a copy of the project you could then modify to suit your use case. Other providers support other options, check the documentation for your Git provider.

## Create your Quix project

Now that you have a forked copy of the repository in your GitHub account, you can now link your Quix account to it. Doing this enables you to build and deploy the project in your Quix account, and examine the pipeline much more closely.

To link Quix to this forked repository:

1. Log into your Quix account.

2. Click `+ Create project`.

3. Give your project a name. For example, "My Project".

4. Select `Connect to your own Git repo`, and follow the setup guide for your provider.

!!! tip

A setup guide is provided for each of the common Git providers. Other Git providers are supported, as long as they support SSH keys.

The setup guide for GitHub is shown here:

![Git seup guide](../images/git-setup-guide.png)

5. Assuming you are connecting to a GitHub account, you'll now need to copy the SSH key provided by Quix into your GitHub account. See the setup guide for further details.

!!! important

It is recommended that you create a new user in your Git provider for managing your Quix projects. You are reminded of this when you create a project (the notice is shown in the following screenshot).

![Create new user](../images/create-new-github-user.png)

6. Click `Validate` to test the connection between Quix and GitHub.

!!! tip

If errors occur you need to address them before continuing. For example, make sure you have the correct link to the repository, and you have have added the provided SSH key to your provider account, as outlined in the setup guide for that provider.

7. Click `Done` to proceed.

You now need to add an environment to your project. This is explained in the following section.

## Create your environment

You now need to create an environment. See the [create environment documentation](create-environment.md) for details.

## Configure secrets

You'll need to [create any secrets](../deploy/secrets-management.md) the project requires, for example, for external services such as InfluxDB Cloud.

Once you've added your secrets, you can Synchronize and then go to the completed pipeline and monitor all services as they start.
28 changes: 17 additions & 11 deletions docs/get-started/what-is-quix.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: What is Quix?
title: Quix - Python stream processing made simple
description: Quix is a complete solution for building, deploying, and monitoring stream processing pipelines with Python, Docker, Kafka, and Git.
---

Expand All @@ -24,7 +24,7 @@ Quix has excellent synergy with Machine Learning (ML) systems too. You can quick
Briefly, here's how you would build a Python stream processing pipeline with Quix:

1. Configure data sources and destinations (see [connectors](#connectors)).
2. Write your stream processing application in Python using [Quix Streams](../quix-streams/quix-streams-intro.md), an open source stream processing library.
2. Write your stream processing application in Python using [Quix Streams](../quix-streams/quix-streams-intro.md), an open source stream processing client library.
3. Deploy your application to production. The application takes input data from a source and transforms it. When stream processing is finished, output data is sent to a destination system.
4. Use Quix’s built-in observability tools to continuously monitor your pipeline and quickly identify any issues.

Expand Down Expand Up @@ -102,15 +102,15 @@ Quix has the ability to create projects where all code and configuration is cont

### Kafka integrations

Quix requires Kafka to provide streaming infrastructure for your solutions.
Quix requires a Kafka broker (or a broker compatible with the Apache Kafka broker) to provide streaming infrastructure for your solutions.

When you create a new Quix environment, there are three hosting options:
When you create a new Quix environment, there are three Kafka [broker hosting options](../create/create-environment.md#broker-settings):

1. Quix Broker - Quix hosts Kafka for you. This is the simplest option as Quix provides hosting and configuration.
2. Managed Kafka - use Quix integrations with common Kafka hosting providers such as Confluent Cloud, Redpanda, and Aiven.
3. Self-Hosted Kafka - use your own Kafka installation, as long as the cluster is available on the Internet.
1. Quix Broker - Quix hosts Apache Kafka for you. This is the simplest option as Quix provides hosting and configuration.
2. Managed Kafka - use Quix integrations with common Kafka broker hosting providers such as Confluent Cloud, Redpanda, Aiven, and Upstash.
3. Self-Hosted Kafka - use your own Apache Kafka broker installation, as long as the cluster is available on the Internet.

This enables you to select a Kafka hosting option according to requirements. For example, your production environment may be hosted on your own Kafka infrastructure, while your develop environment is hosted by Quix.
This enables you to select a Kafka broker hosting option according to requirements. For example, your production environment may be hosted on your own Kafka infrastructure, while your develop environment is hosted by Quix.

!!! tip

Expand Down Expand Up @@ -151,13 +151,19 @@ Quix provides several APIs to help you work with streaming data. These include:

### Quix Streams

As you will notice as you explore the various open source code samples and connectors that come with Quix, Quix also provides a complete client library, Quix Streams, to reduce development times, and provide advanced features such as automatic scaling through Streams. Quix Streams is somewhat similar to Kafka Streams, in the sense that both libraries process data from a Kafka topic. However, unlike Kafka Streams, Quix Streams enables you to process data using pure Python.
As you will notice as you explore the various open source code samples and connectors that come with Quix, Quix also provides a complete Python client library, Quix Streams, to reduce development times, and provide advanced features such as automatic scaling through Streams.

Using Quix Streams you can rapidly build a Python client that implements your stream processing use case.

Quix Streams is somewhat similar to Kafka Streams, in the sense that both libraries process data from a Kafka topic. However, unlike Kafka Streams, Quix Streams enables you to process data using pure Python.

Python is the dominant language for data science, data engineering, and machine learning, but it needs to be interfaced carefully with streaming technologies, such as Kafka, which are predominantly written in Java and Scala.

For Python developers, Quix Streams can provide streaming data packaged in a data frame, so you can write data processing logic and connect it directly to the abstracted broker. Developers can read about the most important streaming concepts in the [Quix Streams introduction](../quix-streams/quix-streams-intro.md).
For Python developers, the Quix Streams client library can provide streaming data packaged in a data frame, so you can write data processing logic and connect it directly to the abstracted broker. Developers can read about the most important streaming concepts in the [Quix Streams introduction](../quix-streams/quix-streams-intro.md).

Quix streams is an open source Python library, and the [GitHub repository](https://github.com/quixio/quix-streams){target=_blank} contains all code and documentation.

## Building with Quix
## Building Python stream processing pipelines with Quix

The basic flow that pipelines follow is ingestion, processing, and serving of data. These correlate to source, transform, and destination components within Quix.

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/clone-project/import-project.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions docs/integrations/databases/influxdb/alerting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Alerting

It is possible to add alerting into your InfluxDB processing pipelines using a variety of tools such as:

* PagerDuty
* Vonage APIs
* Twilio
* Pushover

Quix has a built in [connector for Twilio](https://quix.io/docs/connectors/twilio-destination.html), but it is straightforward to built your own connectors, as shown in the resources listed in the next section.

You can write Python code to examine data, detect anomalies, or check thresholds.

The alerting can be placed in the inbound pipeline, where you can detect issues in the real-time streaming data. You could also query data from InfluxDB, and check for certain conditions in the outbound pipeline, generating alerts as required. This is demonstrated in detail in the [in-depth tutorial on using Quix, Quix Streams, InfluxDB, and PagerDuty](../../../tutorials/influxdb-alerting/overview.md).

## Next steps

* Quix Tour demonstrates [building alerting](../../../get-started/quixtour/serve-sms.md) from scratch with the Vonage APIs, which are simple to use.
* Currency alerting tutorial demonstrates using [Pushover to implement alerting](../../../tutorials/currency-alerting/currency-alerting.md#setting-up-the-pushover-destination).
* The Predictive maintrenance project tutorial uses the Pushover service for [sending alerts](../../../tutorials/predictive-maintenance/phone-alerts.md).
* In-depth tutorial that takes you through setting up pipelines using Quix, Quix Streams, InfluxDB, and [PagerDuty for alerting](../../../tutorials/influxdb-alerting/overview.md).
Loading
Loading