Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,98 @@
---
title: Handling Downtime
icon: turn-down
---
![Downtime Incident](https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExdTZnbGxjc3k5d3NxeXQwcmhxeTRsbnNybnd4NG41ZnkwaDdsa3MzeSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/2UCt7zbmsLoCXybx6t/giphy.gif)
## 📋 What You Need Before Starting
Make sure these are ready:
- **[Incident.io Setup](../playbooks/setup-incident-io)**: For managing incidents.
- **ClickStack**: For checking logs and errors.
- **Checkly Debugging**: For testing and monitoring.
---
## 🚨 Stay Calm and Take Action
<Warning>
Dont panic! Follow these steps to fix the issue.
</Warning>
1. **Tell Your Users**:
- Let your users know theres an issue. Post on [Community](https://community.activepieces.com) and Discord.
- Example message: *“Were looking into a problem with our services. Thanks for your patience!”*
2. **Find Out Whats Wrong**:
- Gather details. Whats not working? When did it start?
3. **Update the Status Page**:
- Use [Incident.io](https://incident.io) to update the status page. Set it to *“Investigating”* or *“Partial Outage”*.
---
## 🔍 Check for Infrastructure Problems
1. **Look at DigitalOcean**:
- Check if the CPU, memory, or disk usage is too high.
- If it is:
- **Increase the machine size** temporarily to fix the issue.
- Keep looking for the root cause.
---
## 📜 Check Logs and Errors
1. **Use Clickstack**:
- Go to [https://watch.activepieces.com](https://watch.activepieces.com).
- Search for recent errors in the logs.
- Credentials are in the [Master Playbook](https://docs.google.com/document/d/15OwWnRwkhlx9l-EN5dXFoysw0OoxC0lVvnjbdbId4BE/edit?pli=1&tab=t.4lk480a2s8yh#heading=h.1qegnmb1w65k).
2. **Check Sentry**:
- Look for grouped errors (errors that happen a lot).
- Try to **reproduce the error** and fix it if possible.
---
## 🛠️ Debugging with Checkly
1. **Check Checkly Logs**:
- Watch the **video recordings** of failed checks to see what went wrong.
- If the issue is a **timeout**, it might mean theres a bigger performance problem.
- If it's an E2E test failure due to UI changes, it's likely not urgent.
- Fix the test and the issue will go away.
---
## 🚨 When Should You Ask for Help?
Ask for help right away if:
- Flows are failing.
- The whole platform is down.
- There's a lot of data loss or corruption.
- You're not sure what is causing the issue.
- You've spent **more than 5 minutes** and still don't know what's wrong.
💡 **How to Ask for Help**:
- Use **Incident.io** to create a **critical alert**.
- Go to the **Slack incident channel** and escalate the issue to the engineering team.
<Warning>
If youre unsure, **ask for help!** Its better to be safe than sorry.
</Warning>
---
## 💡 Helpful Tips
1. **Stay Organized**:
- Keep a list of steps to follow during downtime.
- Write down everything you do so you can refer to it later.
2. **Communicate Clearly**:
- Keep your team and users updated.
- Use simple language in your updates.
3. **Take Care of Yourself**:
- If you feel stressed, take a short break. Grab a coffee ☕, take a deep breath, and tackle the problem step by step.

View File

@@ -0,0 +1,31 @@
---
title: "Engineering Workflow"
icon: 'lightbulb'
---
Activepieces work is based on one-week sprints, as priorities change fast, the sprint has to be short to adapt.
## Sprints
Sprints are shared publicly on our GitHub account. This would give everyone visibility into what we are working on.
* There should be a GitHub issue for the sprint set up in advance that outlines the changes.
* Each _individual_ should come prepared with specific suggestions for what they will work on over the next sprint. **if you're in an engineering role, no one will dictate to you what to build it is up to you to drive this.**
* Teams generally meet once a week to pick the **priorities** together.
* Everyone in the team should attend the sprint planning.
* Anyone can comment on the sprint issue before or after the sprint.
## Pull Requests
When it comes to code review, we have a few guidelines to ensure efficiency:
- Create a pull request in draft state as soon as possible.
- Be proactive and review other peoples pull requests. Dont wait for someone to ask for your review; its your responsibility.
- Assign only one reviewer to your pull request.
- Add the PR to the current project (sprint) so we can keep track of unmerged PRs at the end of each sprint.
- It is the **responsibility** of the **PR owner** to draft the test scenarios within the PR description. Upon review, the reviewer may assume that these scenarios have been tested and provide additional suggestions for scenarios.
- Large, incomplete features should be broken down into smaller tasks and continuously merged into the main branch.
## Planning is everyone's job.
Every engineer is responsible for discovering bugs/opportunities and bringing them up in the sprint to convert them into actionable tasks.

View File

@@ -0,0 +1,64 @@
---
title: 'On-Call'
icon: 'phone'
---
## Prerequisites:
- [Setup Incident IO](../playbooks/setup-incident-io)
## Why On-Call?
We need to ensure there is **exactly one person** at the same time who is the main point of contact for the users and the **first responder** for the issues. It's also a great way to learn about the product and the users and have some fun.
<Tip>
You can listen to [Queen - Under Pressure](https://www.youtube.com/watch?v=a01QQZyl-_I) while on-call, it's fun and motivating.
</Tip>
<Tip>
If you ever feel burn out in middle of your rotation, please reach out to the team and we will help you with the rotation or take over the responsibility.
</Tip>
## On-Call Schedule
The on-call rotation is managed through Incident.io, with each engineer taking a one-week shift. You can:
- View the current schedule and upcoming rotations on [Incident.io On-Call Schedule](https://app.incident.io/activepieces/on-call/schedules)
- Add the schedule to your Google Calendar using [this link](https://calendar.google.com/calendar/r?cid=webcal://app.incident.io/api/schedule_feeds/cc024d13704b618cbec9e2c4b2415666dfc8b1efdc190659ebc5886dfe2a1e4b)
<Warning>
Make sure to update the on-call schedule in Incident.io if you cannot be available during your assigned rotation. This ensures alerts are routed to the correct person and maintains our incident response coverage.
To modify the schedule:
1. Go to [Incident.io On-Call Schedule](https://app.incident.io/activepieces/on-call/schedules)
2. Find your rotation slot
3. Click "Override schedule" to mark your unavailability
4. Coordinate with the team to find coverage for your slot
</Warning>
## What it means to be on-call
The primary objective of being on-call is to triage issues and assist users. It is not about fixing the issues or coding missing features. Delegation is key whenever possible.
You are responsible for the following:
* Respond to Slack messages as soon as possible, referring to the [customer support guidelines](/handbook/customer-support/overview).
* Check [community.activepieces.com](https://community.activepieces.com) for any new issues or to learn about existing issues.
* Monitor your Incident.io notifications and respond promptly when paged.
<Tip>
**Friendly Tip #1**: always escalate to the team if you are unsure what to do.
</Tip>
## How do you get paged?
Monitor and respond to incidents that come through these channels:
#### Slack Fire Emoji (🔥)
When a customer reports an issue in Slack and someone reacts with 🔥, you'll be automatically paged and a dedicated incident channel will be created.
#### Automated Alerts
Watch for notifications from:
- Digital Ocean about CPU, Memory, or Disk outages
- Checkly about e2e test failures or website downtime

View File

@@ -0,0 +1,52 @@
---
title: "Onboarding Check List"
icon: 'lightbulb'
---
🎉 Welcome to Activepieces!
This guide provides a checklist for the new hire onboarding process.
---
## 📧 Essentials
- [ ] Set up your @activepieces.com email account and setup 2FA
- [ ] Confirm access to out private Discord server.
- [ ] Get Invited to the Activepieces Github Organization and Setup 2FA
- [ ] Get Assigned to a buddy who will be your onboarding buddy.
<Tip>
During your first two months, we'll schedule 1:1 meetings every two weeks to ensure you're progressing well and to maintain open communication in both directions.
After two months, we will decrease the frequency of the 1:1 to once a month.
</Tip>
<Tip>
If you don't setup the 2FA, We will be alerted from security perspective.
</Tip>
---
### Engineering Checklist
- [ ] Setup your development environment using our setup guide
- [ ] Learn the repository structure and our tech stack (Fastify, React, PostgreSQL, SQLite, Redis)
- [ ] Understand the key database tables (Platform, Projects, Flows, Connections, Users)
- [ ] Complete your first "warmup" task within your first day (it's our tradition!)
---
## 🌟 Tips for Success
- Don't hesitate to ask questions—the team is especially helpful during your first days
- Take time to understand the product from a business perspective
- Work closely with your onboarding buddy to get up to speed quickly
- Review our documentation, explore the codebase, and check out community resources, outside your scope.
- Provide your ideas and feedback regularly
---
Welcome again to the team. We can't wait to see the impact you'll make at Activepieces! 😉

View File

@@ -0,0 +1,51 @@
---
title: "Stack & Tools"
icon: "hammer"
---
## Language
Activepieces uses **Typescript** as its one and only language.
The reason behind unifying the language is the ability for it to break data models and features into packages, which can be shared across its components (worker / frontend / backend).
This enables it to focus on learning fewer tooling options and perfect them across all its packages.
## Frontend
- Web framework/library: [React](https://reactjs.org/)
- Layout/components: [shadcn](https://shadcn.com/) / Tailwind
## Backend
- Framework: [Fastify](https://www.fastify.io/)
- Database: [PostgreSQL](https://www.postgresql.org/)
- Task Queuing: [Redis](https://redis.io/)
- Task Worker: [BullMQ](https://github.com/taskforcesh/bullmq)
## Testing
- Unit & Integration Tests: [Jest](https://jestjs.io/)
- E2E Test: [Playwright](https://playwright.dev/)
## Additional Tools
- Application monitoring: [Sentry](https://sentry.io/welcome/)
- CI/CD: [GitHub Actions](https://github.com/features/actions) / [Depot](https://depot.dev/) / [Kamal](https://kamal-deploy.org/)
- Containerization: [Docker](https://www.docker.com/)
- Linter: [ESLint](https://eslint.org/)
- Logging: [OpenTelemetry](https://opentelemetry.io/)
- Building: [NX Monorepo](https://nx.dev/)
## Adding New Tool
Adding a new tool isn't a simple choice. A simple choice is one that's easy to do or undo, or one that only affects your work and not others'.
We avoid adding new stuff to increase the ease of setup, which increases adoption. Having more dependencies means more moving parts and support.
If you're thinking about a new tool, ask yourself these:
- Is this tool open source? How can we give it to customers who use their own servers?
- What does it fix, and why do we need it now?
- Can we use what we already have instead?
These questions only apply to required services for everyone. If this tool speeds up your own work, we don't need to think so hard.