Metadata-Version: 2.1
Name: quantready
Version: 0.2.0
Summary: A CLI to quickly launch data-driven and API-first businesses - using the modern python stack
License: MIT
Author: Sean Kruzel
Author-email: sean@closedloop.tech
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: colorama (>=0.4.6,<0.5.0)
Requires-Dist: gcloud (>=0.18.3,<0.19.0)
Requires-Dist: pre-commit (>=3.3.1,<4.0.0)
Requires-Dist: pydantic (>=1.10.7,<2.0.0)
Requires-Dist: pyfiglet (>=0.8.post1,<0.9)
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
Requires-Dist: termcolor (>=2.3.0,<3.0.0)
Requires-Dist: twine (>=4.0.2,<5.0.0)
Requires-Dist: typer (>=0.9.0,<0.10.0)
Project-URL: Bug Tracker, https://github.com/closedloop-technologies/quantready/issues
Project-URL: Repository, https://github.com/closedloop-technologies/quantready
Description-Content-Type: text/markdown

# quantready

A CLI to quickly launch data-driven and API-first businesses - using the modern python stack

## ✅✅✅ QuantReady Stack - Templates ✨

### [quantready](https://github.com/closedloop-technologies/quantready)

CLI for creating and configuring projects and using the quantready-* templates

### [quantready-base](https://github.com/closedloop-technologies/quantready)

build and publish python libraries and docker images

* ✔️ [poetry](https://python-poetry.org/) for dependency management
* ✔️ [pre-commit](https://pre-commit.com/) hooks for code formatting, linting, and testing
* ✔️ [unittest](https://docs.python.org/3/library/unittest.html) for testing
* ✔️ [gitleaks](https://gitleaks.io/) for secrets scanning
* ✔️ [github actions](https://github.com/actions) for CI/CD
* ✔️ [docker](https://docker.com) for building containers
* ✔️ [twine](https://twine.readthedocs.io/en/latest/) for publishing to pypi or private repositories
* 🔲 [gcloud](https://cloud.google.com/sdk/gcloud) for publishing to private repositories

### [quantready-api](https://github.com/closedloop-technologies/quantready-api) - A template to build and deploy fastapi applications

* authentication - api key or oauth
* authorization - RBAC via OSO
* rate limiting - via redis
* job-queues to support long-running tasks
* workers
* caching
* github actions to deploy to gcloud
* all other features of quantready

### [quantready-vendor](https://github.com/closedloop-technologies/quantready-vendor) - A template to sell and meter access to your APIs. Supports time-based and usage-based pricing

* supports free and paid endpoints
* billing per API call or per time-period
* stripe-cli integration for managing products and billing
* pricing-tables, account management and checkout
* usage tracking api
* all other features of quantready-api
* [quantready-chat]
  * A template to build and deploy chatbots
  * Supports Websockets
  * Slack Integration
  * all other features of quantready-vendor

## 📦 Installation

There are two ways to install:

### 1. Install using `quantready` cli

It is best to install as a template using [gh](https://cli.github.com/)

```bash
pip install quantready

# Create a new repo
quantready create <your-repo> --template quantready/quantready-base

```

### 2. Install as a template

To install and configure yourself using [gh](https://cli.github.com/)

```bash
gh template copy quantready/quantready <your-repo>

pip install typer
python configure.py
```

## 💻 Development

### Install dependencies

Requires poetry and python3.10 or higher

Install Poetry from <https://github.com/python-poetry/install.python-poetry.org#python-poetry-installer>

```bash
  curl -sSL https://install.python-poetry.org | python3 -
```

```bash
# Create a virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
poetry install

# Install pre-commit hooks
poetry run pre-commit install --install-hooks

# Create a .env file and modify it's contents
cp .env.example .env

```

## 🚀 Deployment

The best way is to use quantready cli

```bash
# Configure the project and cloud providers
quantready configure
```

This will create a .quantready file in the root of the project.

### GitHub Actions: On creation of a new release

**Configuration**
Set a GitHub Repository Secret `PYPI_API_TOKEN` equal to an API key generated from your PYPI account:
1. Generate Token here: https://pypi.org/manage/account/token/
2. Set it as a Repository Secret here: https://github.com/<username>/<repo>/settings/secrets/actions

**Create a new Release**

1. Goto https://github.com/closedloop-technologies/quantready/releases/new

or

1. Goto https://github.com/<username>/<repo>/releases
2. Click "Draft a new Release"

This will trigger the GitHub Action to deploy your new release to PyPi

### Push Docker image

```bash
# Build the image
docker build -t quantready/quantready .

# Run the image
docker run -it --rm quantready/quantready

# Push the image to docker hub
docker push quantready/quantready

# Push the image to gcr
docker tag quantready/quantready gcr.io/<your-project>/quantready
```

### Publish to pypi

```bash
# Build the package
poetry build
poetry run twine upload dist/*
```

Get `PYPI_API_TOKEN` from <https://pypi.org/manage/account/token/>
And set it as a github secret <https://github.com/><username>/<repo>/settings/secrets/actions

### Publish to private repository

```bash
# Build the package
poetry build
poetry run twine upload --repository-url https://pypi.yourdomain.com dist/*

```

## 📝 License

This project is licensed under the terms of the [MIT license](/LICENSE).

## 📚 Resources

* [Python Packaging User Guide](https://packaging.python.org/)
* [Poetry](https://python-poetry.org/)
* [Pre-commit](https://pre-commit.com/)
* [Github Actions](
https://docs.github.com/en/actions)
* [Docker](https://docker.com)
* [Twine](https://twine.readthedocs.io/en/latest/)
* [Gcloud](https://cloud.google.com/sdk/gcloud)
* [GitHub CLI](https://cli.github.com/)

