Skip to content
Open
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions .autorc
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"prereleaseBranches": ["next"],
"versionBranches": true,
"onlyPublishWithReleaseLabel": true,
"plugins": [
[
"npm",
{
"monorepoChangelog": true
}
],
"all-contributors",
"conventional-commits",
"first-time-contributor",
"released",
[
"slack",
{
"auth": "app",
"channels": ["C017RNCQV70", "C02F2NT7F0R"]
}
]
]
}
6 changes: 3 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
directory: "/packages" # Location of package manifests
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
interval: "weekly"
19 changes: 19 additions & 0 deletions .github/workflows/modules-index.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Modules index

on:
pull_request:
branches: [next, main]
push:
branches: [next, main]

jobs:
modules-index:
name: MODULES.md up to date
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Check MODULES.md is not stale
run: node scripts/gen-modules-index.js --check
36 changes: 36 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Contributing

## Layout

API modules live in a **flat** `modules/<name>/` directory (formerly `packages/v1-ready/<name>` and `packages/needs-updating/<name>`).

- Put new modules under `modules/<name>/`.
- Do **not** add packages under `packages/`, `archive/`, or `tools/` unless you intend non-published tooling or an archive.
- Package names stay `@friggframework/api-module-<name>`; only the filesystem path changed.

Retired modules go under `archive/<name>/` and are excluded from workspaces / Lerna publish.

Scale-test helpers live under `tools/scale-test/` (lambda + OpenAPI) and remain `private`.

## MODULES.md index

`MODULES.md` is generated. After adding, removing, or renaming a module (or changing `package.json` name/version or auth definition):

```bash
npm run modules:index
```

Commit the updated `MODULES.md`. CI fails if it is stale (`npm run modules:index:check`).

## Local checks

```bash
npm install
npm test --workspaces --if-present
npm run modules:index:check
npx lerna ls # should list only modules/* packages
```

## Releases

Publishing is handled by `auto` + Lerna on merge to `next` / `main`. Only `modules/*` is in `lerna.json` `packages`. Apply the `release` label for canary/release publishes.
64 changes: 64 additions & 0 deletions MODULES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!-- Generated by scripts/gen-modules-index.js. Do not edit by hand. -->
<!-- Run: npm run modules:index -->

# Modules

Flat index of API modules. Publishable packages live under `modules/*`
(see `lerna.json`). `archive/*` and `tools/*` are not published.

| Module | Package name | Version | Auth type | Status |
| --- | --- | --- | --- | --- |
| [`42matters`](modules/42matters/) | `@friggframework/api-module-42matters` | 1.1.4 | apiKey | v1-ready |
| [`activecampaign`](modules/activecampaign/) | `—` | — | apiKey | needs-updating |
| [`airwallex`](modules/airwallex/) | `—` | — | oauth2 | needs-updating |
| [`asana`](modules/asana/) | `@friggframework/api-module-asana` | 1.1.5 | oauth2 | v1-ready |
| [`attentive`](modules/attentive/) | `—` | — | oauth2 | needs-updating |
| [`attio`](modules/attio/) | `@friggframework/api-module-attio` | 1.0.0 | oauth2 | v1-ready |
| [`clio`](modules/clio/) | `@friggframework/api-module-clio` | 1.0.0 | oauth2 | v1-ready |
| [`clyde`](modules/clyde/) | `—` | — | basic | needs-updating |
| [`connectwise`](modules/connectwise/) | `@friggframework/api-module-connectwise` | 1.0.4 | basic | v1-ready |
| [`contentful`](modules/contentful/) | `@friggframework/api-module-contentful` | 1.1.3 | oauth2 | v1-ready |
| [`contentstack`](modules/contentstack/) | `@friggframework/api-module-contentstack` | 1.1.3 | oauth2 | v1-ready |
| [`crossbeam`](modules/crossbeam/) | `@friggframework/api-module-crossbeam` | 1.0.0 | oauth2 | v1-ready |
| [`deel`](modules/deel/) | `@friggframework/api-module-deel` | 1.1.3 | oauth2 | v1-ready |
| [`fastspring-iq`](modules/fastspring-iq/) | `—` | — | oauth2 | needs-updating |
| [`fathom`](modules/fathom/) | `@friggframework/api-module-fathom` | 1.0.0 | apiKey | v1-ready |
| [`fireflies`](modules/fireflies/) | `@friggframework/api-module-fireflies` | 1.0.0 | apiKey | v1-ready |
| [`freshbooks`](modules/freshbooks/) | `—` | — | oauth2 | needs-updating |
| [`frigg-scale-test`](modules/frigg-scale-test/) | `@friggframework/api-module-frigg-scale-test` | 0.1.0 | apiKey | v1-ready |
| [`front`](modules/front/) | `—` | — | oauth2 | needs-updating |
| [`frontify`](modules/frontify/) | `@friggframework/api-module-frontify` | 1.3.0 | oauth2 | v1-ready |
| [`gong`](modules/gong/) | `@friggframework/api-module-gong` | 1.0.0 | basic | v1-ready |
| [`google-calendar`](modules/google-calendar/) | `@friggframework/api-module-google-calendar` | 1.1.3 | oauth2 | v1-ready |
| [`google-drive`](modules/google-drive/) | `@friggframework/api-module-google-drive` | 1.1.3 | oauth2 | v1-ready |
| [`gorgias`](modules/gorgias/) | `—` | — | oauth2 | needs-updating |
| [`helpscout`](modules/helpscout/) | `@friggframework/api-module-helpscout` | 0.1.2 | oauth2 | v1-ready |
| [`hubspot`](modules/hubspot/) | `@friggframework/api-module-hubspot` | 1.1.7 | oauth2 | v1-ready |
| [`huggg`](modules/huggg/) | `—` | — | oauth2 | needs-updating |
| [`ironclad`](modules/ironclad/) | `@friggframework/api-module-ironclad` | 1.0.1 | oauth2 | v1-ready |
| [`linear`](modules/linear/) | `@friggframework/api-module-linear` | 1.1.3 | oauth2 | v1-ready |
| [`marketo`](modules/marketo/) | `—` | — | unknown | needs-updating |
| [`microsoft-teams`](modules/microsoft-teams/) | `@friggframework/api-module-microsoft-teams` | 1.1.5 | oauth2 | needs-updating |
| [`monday`](modules/monday/) | `—` | — | oauth2 | needs-updating |
| [`netx`](modules/netx/) | `—` | — | oauth2 | needs-updating |
| [`otter`](modules/otter/) | `@friggframework/api-module-otter` | 1.0.0 | apiKey | v1-ready |
| [`outreach`](modules/outreach/) | `—` | — | oauth2 | needs-updating |
| [`personio`](modules/personio/) | `—` | — | apiKey | needs-updating |
| [`pipedrive`](modules/pipedrive/) | `@friggframework/api-module-pipedrive` | 2.0.0 | oauth2 | v1-ready |
| [`qbo`](archive/qbo/) | `—` | — | oauth2 | archived |
| [`quo`](modules/quo/) | `@friggframework/api-module-quo` | 1.0.0 | apiKey | v1-ready |
| [`reevo`](modules/reevo/) | `@friggframework/api-module-reevo` | 1.0.0 | apiKey | v1-ready |
| [`revio`](modules/revio/) | `—` | — | unknown | needs-updating |
| [`rollworks`](modules/rollworks/) | `—` | — | oauth2 | needs-updating |
| [`salesforce`](modules/salesforce/) | `@friggframework/api-module-salesforce` | 1.0.2 | oauth2 | v1-ready |
| [`salesloft`](modules/salesloft/) | `—` | — | oauth2 | needs-updating |
| [`sharepoint`](modules/sharepoint/) | `—` | — | oauth2 | needs-updating |
| [`slack`](modules/slack/) | `@friggframework/api-module-slack` | 1.1.3 | oauth2 | needs-updating |
| [`stripe`](modules/stripe/) | `@friggframework/api-module-stripe` | 1.0.0 | oauth2 | v1-ready |
| [`terminus`](modules/terminus/) | `—` | — | apiKey | needs-updating |
| [`unbabel`](modules/unbabel/) | `@friggframework/api-module-unbabel` | 1.1.5 | oauth2 | v1-ready |
| [`unbabel-projects`](modules/unbabel-projects/) | `@friggframework/api-module-unbabel-projects` | 1.0.2 | oauth2 | v1-ready |
| [`yotpo`](modules/yotpo/) | `—` | — | apiKey | needs-updating |
| [`zoho-crm`](modules/zoho-crm/) | `@friggframework/api-module-zoho-crm` | 1.0.2 | oauth2 | v1-ready |
| [`zoom`](modules/zoom/) | `@friggframework/api-module-zoom` | 1.0.0 | oauth2 | v1-ready |

29 changes: 18 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
# Frigg API Module Library

Overview
Welcome to the Frigg API Module Library! This repository contains API modules that connect third-party services with Frigg.

Welcome to the Frigg API Module Library! This repository contains all the API modules ready to connect third-party services with Frigg.
Browse the generated index: **[MODULES.md](./MODULES.md)** (module, package name, version, auth type, status).

To view our API Modules, please visit the [v1-ready directory](https://github.com/friggframework/api-module-library/tree/main/packages/v1-ready).
## Directory layout

As part of our efforts to streamline development and prepare for future growth, we’ve made some significant changes to how our API Modules are organized and maintained.
| Path | Purpose |
| --- | --- |
| [`modules/`](./modules/) | All API modules (flat). Publishable npm packages discovered by Lerna / `auto`. |
| [`archive/`](./archive/) | Retired modules (not published). Example: `qbo` (replaced by `quickbooks`). |
| [`tools/`](./tools/) | Non-published tooling (e.g. scale-test lambda + OpenAPI). Marked `private`. |

## Directory Structure
Status in `MODULES.md` records whether a module is `v1-ready`, `needs-updating` (legacy Frigg v0-era), or `archived`.

### v1-ready API Modules
These [v1-ready API Modules](https://github.com/friggframework/api-module-library/tree/main/packages/v1-ready) are refactored and optimized to align with the new, simplified architecture of Frigg v1. They are designed to be more intuitive, easier to integrate, and provide better performance.
## Releases

### Older API Modules
This monorepo uses [intuit/auto](https://github.com/intuit/auto) with Lerna independent versioning.

The [needs-updating directory](https://github.com/friggframework/api-module-library/tree/main/packages/needs-updating) contains our original API modules that were included in the v0 Frigg repository. These modules are not ready to work with Frigg v1. If your project is still using
Frigg v0, these modules should work.
- Publishable packages: `modules/*` only (`lerna.json` + `.autorc` / `package.json` `"auto"`).
- Not published: `archive/*`, `tools/*`.
- Canary / release publishes require the `release` label (`onlyPublishWithReleaseLabel`).

## Contributing

Thank you for your interest in the Frigg project! We’re excited to see how the community will continue to grow and improve these API modules. If you have any questions or need assistance, feel free to [contact us](https://docs.friggframework.org/support/support).
See [CONTRIBUTING.md](./CONTRIBUTING.md) for how to add or update a module, regenerate `MODULES.md`, and run tests.

Thank you for your interest in the Frigg project! If you have questions, [contact us](https://docs.friggframework.org/support/support).

**~ The Frigg Maintainers** (Should we start a band?)
7 changes: 7 additions & 0 deletions archive/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Archive

Modules here are **not** published and are excluded from npm workspaces / Lerna.

| Module | Reason |
| --- | --- |
| `qbo` | Replaced by the QuickBooks Online module (`quickbooks`, PR #111). |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading
Loading