zverhope / Pizzly

The simplest, fastest way to integrate your app with an OAuth API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

+ Using Pizzly v0.2.x? Please read this about migrating to v0.3+: https://docs.nango.dev/pizzly/migration +

The fast & flexible way to get OAuth tokens for 50+ APIs

Pizzly takes care of the OAuth dance for you and makes sure your access tokens always stay fresh.


Explore the docs »

All supported APIs · Contribute an API · Report Bug · Community Slack

⭐ Pizzly at a glance

Pizzly is a small, self-contained service (docker container) that contains everything you need to work with APIs that use OAuth.

Pizzly has been designed for modern web apps/backends and contains:

  • a full OAuth 2 and OAuth 1.0a dance implementation for 50+ APIs (and more coming)
  • a frontend SDK that makes it easy to trigger new OAuth flows from your web app
  • a backend SDK & REST API that make it easy to get always-fresh access tokens for your API calls
  • a CLI that makes it easy to manage your OAuth provider configs, setup different environments and debug OAuth issues

Pizzly is easy to try in 5 minutes and can be deployed in 15.

Start a new OAuth flow with 2 lines of code in your frontend:

var pizzly = new Pizzly('https://localhost:3004')

// Trigger an OAuth flow for the user to authenticate with Slack
let result = await pizzly.auth('slack', '<user-id>')

Then get and use the current access token in your backend (with our SDK or a simple REST API):

var slackAccessToken = await pizzly.accessToken('slack', '<user-id>') // Always fresh & ready to use

👾 Out of the box support for 50+ APIs

More than 50 APIs are preconfigured to work out-of-the-box. Including:

  • CRM: Front, Hubspot, Salesforce, etc.
  • Accounting: Xero, Sellsy, Zoho Books, etc.
  • Developer tools: GitHub, GitLab, Linear, Jira etc.
  • Communication: Gmail, Microsoft Teams, Slack, Zoom etc.
  • Productivity: Asana, Airtable, Google Drive, Google Calendar, Trello, Google sheets, ClickUp etc.
  • Social: Twitter, LinkedIn, Reddit, Facebook etc.
  • and more...

If your favorite API is missing open a GitHub issue or contribute it right away: The API configurations are just simple entries in a YAML file.

🛡️ Small, self-contained & ready for production

We built Pizzly because we wanted a simple and fast way to get (fresh) access tokens for any API that requires OAuth.

On purpose Pizzly is small, focused on its one task and easy to deploy in production:

  • It runs as a single docker container in your stack
  • Updating it is as simple as docker pull and restarting the container
  • Securing it for production is quick & easy
  • Our CLI helps you with all admin tasks (such as setting scopes, enabling APIs etc.)

Last but not least, Pizzly's active community continuously expands & updates the 50+ blueprints. So your OAuth flows & tokens will keep on working even 5 years down the road.

🚀 Quickstart

Clone the repo and start Pizzly:

git clone https://github.com/NangoHQ/Pizzly.git
cd Pizzly
docker compose up

Make sure you have a client ID & secret ready for the API you want to use, e.g. for GitHub register it here. Use http://localhost:3004/oauth/callback as the callback URL.

Enable the GitHub API and add your OAuth client id & secret with the CLI:

npx pizzly config:create github github <client-id> <client-secret> "user,public_repo"

CD to the demo page and start a small webserver to serve the demo page:

cd packages/frontend
python3 -m http.server 8080

Open the demo page in your browser at http://localhost:8080/bin/sample.html and try the OAuth flow with github as the config key and 1 as the connection id.

Once the flow is finished you can use our SDKs or REST API to get access tokens in the backend (automatically refreshed) and make API calls:

import Pizzly from '@nangohq/pizzly-node'
let pizzly = new Pizzly('http://localhost:3004');
var githubAccessToken = await pizzly.accessToken('github', '1') // Always fresh & ready to use

When you are ready to add Pizzly to your application read our Getting started guide.

♻️ Easily sync data with Nango.Sync

Pizzly gets you OAuth tokens so you can start making API calls.

If you need to continuously sync data from the external API (e.g. syncing in contacts, users, notes, tasks, issues, repos etc.) take a look at our sister project Nango.Sync (works with Pizzly tokens out of the box):

Nango.sync('https://any.rest.api/any/endpoint', options) // Sync data from endpoint to your DB & keep it fresh

Nango make syncing data from APIs to your database fast & flexible: It takes care of all the heavy lifting whilst giving you access to the full power of the API.

🔍 Where to learn more

⭐  Follow our development by starring us here on GitHub ⭐

🐻 History

Pizzly was originally developed by the team at Bearer with contributions of more than 40+ individuals. Over time the focus of Bearer shifted and they could no longer maintain Pizzly. In late 2022 the team at Nango adopted the project and has since maintained and evolved it together with the growing Pizzly community.

About

The simplest, fastest way to integrate your app with an OAuth API

License:Other


Languages

Language:TypeScript 84.4%Language:JavaScript 11.5%Language:HTML 3.6%Language:Dockerfile 0.5%Language:Shell 0.1%