Serverless event-driven queues, background jobs, and scheduled jobs for Typescript.
Works with any framework and platform.
Read the
documentation and get started in minutes.
Inngest allows you to:
- ๐ Write background jobs in any framework, on any platform
- ๐ Create scheduled & cron jobs for any serverless platform
- ๐ Build serverless queues without configuring infra
- ๐ Write complex step functions anywhere
- ๐ Build serverless event-driven systems
- ๐ Reliably respond to webhooks, with retries & payloads stored for history
๐ Have a question or feature request? Join our Discord!
Getting started ยท
Features ยท
Contributing ยท
Documentation
Getting started
Install Inngest:
npm install inngest
Writing functions: Write serverless functions and background jobs right in your own code:
import { createFunction } from "inngest";
export default createFunction(
"Send welcome email",
"app/user.created",
({ event }) => {
sendEmailTo(event.data.id, "Welcome!");
}
);
Functions listen to events which can be triggered by API calls, webhooks, integrations, or external services. When a matching event is received, the serverless function runs automatically, with built in retries.
Triggering functions by events:
import { Inngest } from "inngest";
const inngest = new Inngest({ name: "My App" });
inngest.send("app/user.created", { data: { id: 123 } });
Events trigger any number of functions automatically, in parallel, in the background. Inngest also stores a history of all events for observability, testing, and replay.
Features
- Fully serverless: Run background jobs, scheduled functions, and build event-driven systems without any servers, state, or setup
- Deploy anywhere: works with NextJS, Netlify, Vercel, Redwood, Express, Cloudflare, and Lambda
- Use your existing code: write functions within your current project, zero learning required
- A complete platform: complex functionality built in, such as event replay, canary deploys, version management and git integration
- Fully typed: Event schemas, versioning, and governance out of the box
- Observable: A full UI for managing and inspecting your functions
- Any language: Use our CLI to write functions using any language
Contributing
Clone the repository, then:
yarn
yarn dev
We use Volta to manage Node/Yarn versions.
When making a pull request, make sure to commit the changed etc/inngest.api.md
file; this is a generated types/docs file that will highlight changes to the exposed API.
Locally linking (npm|yarn link
)
In order to provide sensible namespaced imports such as "inngest/next"
, the package actually builds to and deploys from dist/
.
To replicate this locally to test changes with other local repos, you can link the project like so (replace npm
for yarn
if desired):
yarn build
yarn prelink
cd dist/
yarn link
yarn link inngest