Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zenith - Open Source Automation Engine

Project Status License: CC BY-NC 4.0

Zenith is a premium, highly fluid, and source-available alternative to IFTTT and Zapier. It empowers users to build automated workflows (Applets) connecting various third-party services and webhooks, featuring a beautifully designed Flutter frontend and a rock-solid, scalable backend.

🚀 Features

  • Visual Builder: A fluid, Dual-Flow (Canvas vs. Wizard) Flutter interface bursting with premium animations and micro-interactions.
  • Background Execution: A robust queue-based NestJS Microservice worker system to reliably execute actions without blocking.
  • Self-Hosted & Open Source: Full control over your data and APIs. No enterprise paywalls.
  • Custom Integrations: Easily add your own webhooks, API endpoints, or OAuth services (with AES-256-GCM token encryption natively integrated).

🛠 Tech Stack

  • Frontend: Flutter (Riverpod for state, go_router for navigation, fluid animations via AnimatedSwitcher)
  • Backend API: Node.js (NestJS)
  • Database: PostgreSQL (TypeORM, JSONB dynamic payloads)
  • Task Queue / Engine: Redis + BullMQ (NestJS Microservice)
  • Security: @boringnode/encryption (chacha20poly1305)

💻 Getting Started (Local Development)

1. Infrastructure

Start the PostgreSQL database and Redis queue:

cd infrastructure
podman-compose up -d

If you are using Docker instead of Podman, use docker-compose up -d.

2. Backend (NestJS)

Install dependencies and start the development server:

cd backend
npm install
npm run start:dev

3. Backend Worker (NestJS Microservice)

Start the background BullMQ consumer in a separate terminal:

cd backend
npm run start:worker

4. Frontend (Flutter)

Install Flutter dependencies:

cd frontend
flutter pub get
dart run build_runner build -d

📲 Running & Building for Devices

Prerequisites

Ensure Flutter is installed and set up by running:

flutter doctor

Fix any issues reported before proceeding.


▶️ Run in Development (Hot Reload)

Platform Command
Auto-detect flutter run
Android Emulator / Device flutter run -d android
Windows Desktop flutter run -d windows
Web (Chrome) flutter run -d chrome
iOS Simulator (macOS only) flutter run -d ios

Android Note: The emulator uses 10.0.2.2 to reach your host machine's localhost. The ApiConstants helper in lib/core/constants/api_constants.dart handles this automatically.

Windows Note: Developer Mode must be enabled in Windows Settings to allow Flutter to create symlinks required for building with plugins.


📦 Build for Production / Release

Android APK (for direct installation)

cd frontend
flutter build apk --release

Output: build/app/outputs/flutter-apk/app-release.apk

Android App Bundle (for Google Play Store)

cd frontend
flutter build appbundle --release

Output: build/app/outputs/bundle/release/app-release.aab

Windows Desktop (EXE)

Requires Developer Mode to be enabled in Windows Settings.

cd frontend
flutter build windows --release

Output: build/windows/x64/runner/Release/

Web (Static Files)

cd frontend
flutter build web --release

Output: build/web/ — deploy this folder to any static hosting provider (e.g., Firebase Hosting, Vercel, Netlify).

iOS (macOS only)

cd frontend
flutter build ios --release

Then open ios/Runner.xcworkspace in Xcode and archive for distribution via App Store Connect.


🧹 Clean Build Cache

If you encounter stale errors after code changes, always run a clean build:

# Run each on a separate line in PowerShell
flutter clean
flutter pub get
flutter run

License

This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International Public License (CC BY-NC 4.0).

About

Zenith is the smart automation hub that links your favorite apps and devices. Set simple triggers, watch tasks complete themselves, and reach peak productivity — without lifting a finger.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages