Skip to content

feat: coolify template for self-hosting - #156

Merged
pranavp10 merged 8 commits into
mainfrom
feat/coolify-one-click
Sep 27, 2026
Merged

pranavp10 merged 8 commits into
mainfrom
feat/coolify-one-click

Conversation

@ohemilyy

@ohemilyy ohemilyy commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

Summary

Adds a Coolify template (install/coolify/reloop.yaml) so Reloop can be deployed on Coolify by pasting it into a Docker Compose resource, plus a full self-host/coolify docs page. I deployed it on a fresh Coolify 4.3.23 in a VM and went through setup, sending, SMTP submission, inbound, click tracking, restart and redeploy. That turned up a few bugs that hit every self-host install, not just Coolify, so they're fixed here too:

  • drizzle-kit push re-diffed two unique constraints and three over-long FK names on every run. Once a table had rows it stopped at a TTY prompt and exited 0, so upgrades silently skipped schema changes (Coolify and the VPS installer). Push now reports no changes on both fresh and existing databases.
  • API sends authenticated with Authorization: Bearer went out without a DKIM signature because the send routes only read x-api-key.
  • The links app sent clicks to link.reloop.sh (baked NEXT_PUBLIC_URL) and its fallback redirects pointed at http://0.0.0.0:3005. The dashboard baked wss://reloop.sh for template collaboration.
  • Admin setup needed the installer's writable .env. Auth can now seed the setup key from ADMIN_SETUP_KEY, rotates it until it's used, creates the env file if missing, clears a stale lock on boot, and a failed setup no longer reopens signup.
  • Mail's session auth now honours AUTH_INTERNAL_BASE_URL like the other services.

Also removes em dashes from the frontend apps (separate commits), and the matching generated files and sources.

Linked issue

None, this came out of the self-host work. Happy to open one if you want it tracked.

Type of change

  • fix: bug fix
  • feat: new feature
  • docs: documentation only
  • refactor: no feature or fix
  • perf: performance improvement
  • test: adding or updating tests
  • chore: tooling, CI, dependencies

Affected areas

  • install/coolify (new), install/install.sh (em dashes only)
  • @reloop/db schema, @reloop/auth setup, be-auth, be-mail, be-tools (spoof checker headline)
  • fe-links, fe-dashboard, fe-web, fe-docs, fe-console, @reloop/pricing, @reloop/code-samples

How tested

  • End to end on Coolify 4.3.23 in a local VM with locally built be-auth, be-mail, fe-links and fe-dashboard: deploy through the Docker Compose flow, domains, setup via SERVICE_PASSWORD_64_SETUPKEY, domain verification against a local DNS, API and SMTP sends (DKIM signed), click and open tracking, inbound on 25, websockets, restart, redeploy with pull, setup key rotation.
  • drizzle-kit push twice against a fresh Postgres and once against a database created by the old schema: both end with "No changes detected". migrate on the populated VM database printed the same.
  • bun test in packages/auth (170), packages/db (33), be-mail (40), be-tools spoof checker; dashboard vitest (359); tsc --noEmit for web, dashboard, console, links, mail, auth; biome on touched files.

Deploy / breaking notes

  • Needs new images from main before the template works: the setup key seeding lives in be-auth.
  • Self-host installs still get free-plan send limits until fix/self-host-no-plan-limits is merged.
  • Schema changes are metadata only; existing databases need no migration.
  • Coolify's official catalog needs 1000 stars on the repo, so for now the template is used through a Docker Compose resource.

Checklist

  • Linked the related issue above (or noted why none is needed)
  • bun run check passes (lint + format). Ran biome on touched files only; the repo has existing findings.
  • Tests added or updated where it matters; affected service tests pass
  • No secrets, API keys, tokens, or PII in the diff
  • New backend endpoints include OpenAPI/Swagger annotations (or N/A)
  • Docs updated if behaviour, setup, ports, or env vars changed (or N/A)
  • Follows the Code of Conduct

RetriggerConfidence Score: 0/5

The PR is not ready to merge: Coolify still enforces hosted quotas, and self-hosted sending and settings do not match the new unlimited behavior.

Findings

  1. P1 Dedicated IP settings become inaccessible ▶
  2. P1 Credits service is missing ▶
  3. P1 Support chat has no backend ▶

Summary

The PR adds a Coolify deployment template and self-hosting documentation, fixes setup and mail-delivery behavior, and adds self-hosted quota handling and dashboard presentation. The latest changes also update pricing, testimonials, and disposable-domain data.

  • Coolify does not enable the new self-hosted quota flag.
  • Self-hosted administrators lose access to Dedicated IP settings, and young domains remain subject to a daily send cap.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Config[Deployment environment] --> Flag[SELF_HOSTED flag]
  Flag --> Credits[Credit reservation]
  Flag --> Resource[Domain and inbox quotas]
  Credits --> Age[Domain-age send cap]
  Age --> Send[Mail handoff]
  Flag --> Usage[Usage response]
  Usage --> Permission[Dashboard billing permission]
  Permission --> IP[Dedicated IP settings]
Loading

Reviews (2) · Last reviewed commit: "Merge remote-tracking branch 'origin/mai..."

@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 658 files, which is 558 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: bf63337c-3151-4189-8ee4-d4d76753129a

📥 Commits

Reviewing files that changed from the base of the PR and between 92bd2dd and 944b7e7.

⛔ Files ignored due to path filters (1)
  • apps/frontend/dashboard/public/reloop-logo-domain-connect.svg is excluded by !**/*.svg
📒 Files selected for processing (658)
  • apps/backend/auth/src/loader.ts
  • apps/backend/mail/src/middleware/auth.ts
  • apps/backend/mail/src/routes/mail/send-email/resend-email.route.ts
  • apps/backend/mail/src/routes/mail/send-email/send-email.route.ts
  • apps/backend/tools/src/routes/tools/spoof-checker/spoof-checker.service.ts
  • apps/backend/tools/test/spoof-checker.test.ts
  • apps/frontend/console/src/app/(protected)/(layout)/audit/audit-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/credits/credits-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/emails/[emailId]/email-detail-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/emails/emails-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/inbound/inbound-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/organizations/[orgId]/org-detail-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/organizations/[orgId]/org-sending-ips.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/organizations/organizations-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/overview-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/sending-ips/sending-ips-page.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/support/support-context-panel.tsx
  • apps/frontend/console/src/app/(protected)/(layout)/users/[userId]/user-detail-page.tsx
  • apps/frontend/console/src/app/(public)/login/login-form.tsx
  • apps/frontend/console/src/components/inbound-detail-drawer.tsx
  • apps/frontend/console/src/components/inline-action-panel.tsx
  • apps/frontend/console/src/components/ui/attachment-chips.tsx
  • apps/frontend/console/src/constants/quick-actions.ts
  • apps/frontend/console/src/lib/format.ts
  • apps/frontend/dashboard/Dockerfile
  • apps/frontend/dashboard/README.md
  • apps/frontend/dashboard/playwright.config.ts
  • apps/frontend/dashboard/src/app/(protected)/(dashboard)/(mail)/page.tsx
  • apps/frontend/dashboard/src/app/(protected)/(dashboard)/agent-inbox/page.tsx
  • apps/frontend/dashboard/src/app/(protected)/(dashboard)/campaigns/[campaignId]/edit/page.tsx
  • apps/frontend/dashboard/src/app/(protected)/(dashboard)/layout.tsx
  • apps/frontend/dashboard/src/app/(protected)/(dashboard)/settings/shortcuts/page.tsx
  • apps/frontend/dashboard/src/app/(protected)/layout.tsx
  • apps/frontend/dashboard/src/app/providers.tsx
  • apps/frontend/dashboard/src/components/api-details/api-details-drawer.tsx
  • apps/frontend/dashboard/src/components/data-table/action-bar.tsx
  • apps/frontend/dashboard/src/components/lazy-icons-sprite.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/agent-inbox-provider.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/ai-sidebar.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/compose/ai-composer-slot.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/compose/ai-prompt-popover.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/compose/compose-body-editor.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/compose/compose-modal.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/compose/undo-send-toast.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/create-inbox-inline-card.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/email-address-input.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/layout/inbox-top-navbar.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/mail-list/inbox-command-palette.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/mail-list/mail-list-skeleton.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/mail-list/thread-list.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/mailbox-rail/mailbox-rail.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/shared/email-pills-input.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/shared/loading-dot.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/shared/section-error.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/sidebar/inbox-nav-user.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/date-utils.ts
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/detail-panel-skeleton.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/forward-composer.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/message-body.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/message-delivery-error.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/reply-composer.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/thread-ai-summary.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/thread-detail.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/zero-mail-display.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/components/thread-detail/zero-thread-toolbar.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/hooks/use-draft-autosave.ts
  • apps/frontend/dashboard/src/features/agent-inbox/lib/email-address.ts
  • apps/frontend/dashboard/src/features/agent-inbox/modals/delete-agent-mailbox-modal.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/pages/mailbox-folder-pages.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/pages/mailbox-layout.tsx
  • apps/frontend/dashboard/src/features/agent-inbox/utils/build-display-messages.ts
  • apps/frontend/dashboard/src/features/api-keys/create/create-api-key-page.tsx
  • apps/frontend/dashboard/src/features/api-keys/detail/api-key-summary.tsx
  • apps/frontend/dashboard/src/features/api-keys/filters/base-ui-select.tsx
  • apps/frontend/dashboard/src/features/api-keys/list/api-key-list-header.tsx
  • apps/frontend/dashboard/src/features/api-keys/modals/create-api-key-modal/index.tsx
  • apps/frontend/dashboard/src/features/api-keys/modals/create-api-key-modal/success-step.tsx
  • apps/frontend/dashboard/src/features/api-keys/modals/delete-api-key-modal.tsx
  • apps/frontend/dashboard/src/features/api-keys/modals/rotate-api-key-modal/index.tsx
  • apps/frontend/dashboard/src/features/api-keys/table/columns.tsx
  • apps/frontend/dashboard/src/features/auth/auth-card.tsx
  • apps/frontend/dashboard/src/features/auth/auth-shell.tsx
  • apps/frontend/dashboard/src/features/auth/login/login-form.tsx
  • apps/frontend/dashboard/src/features/auth/login/social-login.tsx
  • apps/frontend/dashboard/src/features/auth/organizations-query.ts
  • apps/frontend/dashboard/src/features/auth/session-query.test.ts
  • apps/frontend/dashboard/src/features/auth/session-query.ts
  • apps/frontend/dashboard/src/features/auth/signup/signup-form.tsx
  • apps/frontend/dashboard/src/features/auth/signup/signup-page.tsx
  • apps/frontend/dashboard/src/features/auth/signup/social-signup.tsx
  • apps/frontend/dashboard/src/features/auth/verify-otp.tsx
  • apps/frontend/dashboard/src/features/campaigns/components/campaign-metrics-cards.tsx
  • apps/frontend/dashboard/src/features/campaigns/components/columns.tsx
  • apps/frontend/dashboard/src/features/campaigns/components/create-campaign-modal.tsx
  • apps/frontend/dashboard/src/features/campaigns/components/delete-campaign.tsx
  • apps/frontend/dashboard/src/features/campaigns/create/create-campaign-page.tsx
  • apps/frontend/dashboard/src/features/campaigns/editor/campaign-editor-provider.tsx
  • apps/frontend/dashboard/src/features/campaigns/editor/campaign-editor-store.ts
  • apps/frontend/dashboard/src/features/campaigns/editor/components/campaign-editor-header.tsx
  • apps/frontend/dashboard/src/features/campaigns/editor/components/campaign-send-modal.tsx
  • apps/frontend/dashboard/src/features/campaigns/editor/components/campaign-test-email-modal.tsx
  • apps/frontend/dashboard/src/features/campaigns/editor/components/campaign-variables-dropdown.tsx
  • apps/frontend/dashboard/src/features/campaigns/editor/lib/campaign-variables.ts
  • apps/frontend/dashboard/src/features/contacts/components/channels/channel-list.tsx
  • apps/frontend/dashboard/src/features/contacts/components/channels/delete-channel.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/add-contact-to-group/use-add-contact-to-group.ts
  • apps/frontend/dashboard/src/features/contacts/components/contacts/columns.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/contact-export-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/contact-list.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/delete-contact-confirm-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/delete-contact-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/edit-contact-form.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/edit-contact-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/membership-fields.tsx
  • apps/frontend/dashboard/src/features/contacts/components/contacts/subscription-activity-chart.tsx
  • apps/frontend/dashboard/src/features/contacts/components/groups/columns.tsx
  • apps/frontend/dashboard/src/features/contacts/components/groups/delete-group-confirm-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/groups/group-select.tsx
  • apps/frontend/dashboard/src/features/contacts/components/properties/add-property-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/properties/columns.tsx
  • apps/frontend/dashboard/src/features/contacts/components/properties/delete-property-confirm-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/properties/delete-property-modal.tsx
  • apps/frontend/dashboard/src/features/contacts/components/properties/properties-empty-state.tsx
  • apps/frontend/dashboard/src/features/contacts/contacts-shell.tsx
  • apps/frontend/dashboard/src/features/contacts/create/components/api-sync-step.tsx
  • apps/frontend/dashboard/src/features/contacts/create/components/csv-import-step.tsx
  • apps/frontend/dashboard/src/features/contacts/create/components/property-mapping/csv-column-select.tsx
  • apps/frontend/dashboard/src/features/contacts/create/components/property-mapping/csv-property-mapping.tsx
  • apps/frontend/dashboard/src/features/contacts/create/components/property-mapping/reloop-field-list.tsx
  • apps/frontend/dashboard/src/features/contacts/create/utils/csv-parser.ts
  • apps/frontend/dashboard/src/features/contacts/detail/contact-email-history.tsx
  • apps/frontend/dashboard/src/features/contacts/detail/contact-header.tsx
  • apps/frontend/dashboard/src/features/contacts/group-detail/group-summary.tsx
  • apps/frontend/dashboard/src/features/contacts/hooks/use-contacts-export.ts
  • apps/frontend/dashboard/src/features/dashboard/command-menu-context.tsx
  • apps/frontend/dashboard/src/features/dashboard/command-menu.tsx
  • apps/frontend/dashboard/src/features/dashboard/dashboard-loading-chrome.tsx
  • apps/frontend/dashboard/src/features/dashboard/hooks/use-support-unread.ts
  • apps/frontend/dashboard/src/features/dashboard/keyboard-shortcuts-reveal.tsx
  • apps/frontend/dashboard/src/features/dashboard/layout/support-chat-panel.tsx
  • apps/frontend/dashboard/src/features/dashboard/navigation.ts
  • apps/frontend/dashboard/src/features/dashboard/page-header/copy-prompt-button.tsx
  • apps/frontend/dashboard/src/features/dashboard/page-header/pixel-avatar.tsx
  • apps/frontend/dashboard/src/features/dashboard/page-header/plan-badge.tsx
  • apps/frontend/dashboard/src/features/dashboard/page-header/use-active-organization.ts
  • apps/frontend/dashboard/src/features/dashboard/page-header/user-dropdown.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-billing-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-campaigns-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-channels-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-globe-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-groups-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-integration-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-logs-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-mail-action-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-mail-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-organization-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-profile-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-security-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-sidebar-toggle-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-smtp-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-theme-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/animated-workflow-icon.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/main-sidebar.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/mobile-sidebar-sheet.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/settings-sidebar-items.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/sidebar-items.tsx
  • apps/frontend/dashboard/src/features/dashboard/sidebar/use-play-animation-on-hover.ts
  • apps/frontend/dashboard/src/features/dashboard/sidebar/use-sidebar-hover-box.ts
  • apps/frontend/dashboard/src/features/domain/add/components/advanced-options.tsx
  • apps/frontend/dashboard/src/features/domain/add/setup/components/forward-dns-records-modal.tsx
  • apps/frontend/dashboard/src/features/domain/add/setup/components/forward-dns-records.tsx
  • apps/frontend/dashboard/src/features/domain/components/columns.tsx
  • apps/frontend/dashboard/src/features/domain/components/delete-domain.tsx
  • apps/frontend/dashboard/src/features/domain/detail/components/created-time-hover.tsx
  • apps/frontend/dashboard/src/features/domain/detail/components/dns-records-section.tsx
  • apps/frontend/dashboard/src/features/domain/detail/components/domain-events.tsx
  • apps/frontend/dashboard/src/features/domain/dns-provider.ts
  • apps/frontend/dashboard/src/features/emails/components/email-list.tsx
  • apps/frontend/dashboard/src/features/emails/components/emails-empty-state.tsx
  • apps/frontend/dashboard/src/features/emails/components/received-email-list.tsx
  • apps/frontend/dashboard/src/features/emails/detail/email-detail.tsx
  • apps/frontend/dashboard/src/features/emails/detail/email-insights-panel.tsx
  • apps/frontend/dashboard/src/features/emails/emails-shell.tsx
  • apps/frontend/dashboard/src/features/home/components/activity-chart-card.tsx
  • apps/frontend/dashboard/src/features/home/components/agent-inbox-card.tsx
  • apps/frontend/dashboard/src/features/home/components/audit-logs-card.tsx
  • apps/frontend/dashboard/src/features/home/components/domain-card.tsx
  • apps/frontend/dashboard/src/features/home/components/emails-card.tsx
  • apps/frontend/dashboard/src/features/home/components/framework-integrations-card.tsx
  • apps/frontend/dashboard/src/features/home/components/home-card-shell.tsx
  • apps/frontend/dashboard/src/features/home/components/recent-emails-card.tsx
  • apps/frontend/dashboard/src/features/home/components/send-first-email-button.tsx
  • apps/frontend/dashboard/src/features/home/components/send-health-card.tsx
  • apps/frontend/dashboard/src/features/home/components/webhooks-card.tsx
  • apps/frontend/dashboard/src/features/home/components/workflows-card.tsx
  • apps/frontend/dashboard/src/features/home/home-page.tsx
  • apps/frontend/dashboard/src/features/integrations/catalog.ts
  • apps/frontend/dashboard/src/features/logs/log-detail-page.tsx
  • apps/frontend/dashboard/src/features/logs/log-detail-panel.tsx
  • apps/frontend/dashboard/src/features/logs/log-list.tsx
  • apps/frontend/dashboard/src/features/logs/log-table.tsx
  • apps/frontend/dashboard/src/features/logs/logs-calendar.tsx
  • apps/frontend/dashboard/src/features/onboarding/animated-hover-background.tsx
  • apps/frontend/dashboard/src/features/onboarding/step1/create-org-step.tsx
  • apps/frontend/dashboard/src/features/onboarding/step1/simple-icon.tsx
  • apps/frontend/dashboard/src/features/onboarding/step1/step-one-skeleton.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/bun-icon.ts
  • apps/frontend/dashboard/src/features/onboarding/step4/copy-agent-prompt-button.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/copy-code-block.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/integration-language-pills.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/post-generate.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/pre-generate.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/step-two-skeleton.tsx
  • apps/frontend/dashboard/src/features/onboarding/step4/use-generate-api-key.ts
  • apps/frontend/dashboard/src/features/settings/billing/plans-page.tsx
  • apps/frontend/dashboard/src/features/settings/organization/organization-danger-zone.tsx
  • apps/frontend/dashboard/src/features/settings/profile/account-danger-zone.tsx
  • apps/frontend/dashboard/src/features/settings/security/session-management.tsx
  • apps/frontend/dashboard/src/features/settings/settings-placeholder-page.tsx
  • apps/frontend/dashboard/src/features/settings/shortcuts/shortcuts-page.tsx
  • apps/frontend/dashboard/src/features/settings/teams/change-role-modal.tsx
  • apps/frontend/dashboard/src/features/settings/teams/invite-dropdown.tsx
  • apps/frontend/dashboard/src/features/settings/teams/invite-modal.tsx
  • apps/frontend/dashboard/src/features/settings/teams/team-list.tsx
  • apps/frontend/dashboard/src/features/settings/usage/usage-page.tsx
  • apps/frontend/dashboard/src/features/settings/use-org-permissions.ts
  • apps/frontend/dashboard/src/features/setup-banner/onboarding-banner.tsx
  • apps/frontend/dashboard/src/features/smtp/smtp-code-panel.tsx
  • apps/frontend/dashboard/src/features/smtp/smtp-page.tsx
  • apps/frontend/dashboard/src/features/templates/components/template-grid.tsx
  • apps/frontend/dashboard/src/features/templates/editor/collobration/Collabpresence.tsx
  • apps/frontend/dashboard/src/features/templates/editor/collobration/hooks/useRemoteCursors.ts
  • apps/frontend/dashboard/src/features/templates/editor/components/canvas/email-canvas.css
  • apps/frontend/dashboard/src/features/templates/editor/components/panels/code/code-view.tsx
  • apps/frontend/dashboard/src/features/templates/editor/components/panels/variables/add-variable-modal.tsx
  • apps/frontend/dashboard/src/features/templates/editor/components/panels/variables/delete-variable-modal.tsx
  • apps/frontend/dashboard/src/features/templates/editor/components/panels/variables/edit-variable-modal.tsx
  • apps/frontend/dashboard/src/features/templates/editor/inspector/color-picker.tsx
  • apps/frontend/dashboard/src/features/templates/editor/inspector/index.tsx
  • apps/frontend/dashboard/src/features/templates/editor/inspector/scrub-field.tsx
  • apps/frontend/dashboard/src/features/templates/editor/inspector/spacing-control.tsx
  • apps/frontend/dashboard/src/features/templates/editor/inspector/text-panel.tsx
  • apps/frontend/dashboard/src/features/templates/editor/inspector/typography/mark-controls.tsx
  • apps/frontend/dashboard/src/features/templates/editor/providers/editor-provider.tsx
  • apps/frontend/dashboard/src/features/templates/editor/utils/apply-pasted-email-theme.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/container-style-parse.test.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/email-starter-kit.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/inline-email-stylesheet.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/pick-pasted-email-html.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/preserve-email-link-underlines.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/pretty-print-html.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/promote-table-spacing.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/readable-text-color.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/resolve-inspector-text-style.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/sanitize-email-html.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/should-show-source-html-preview.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/strip-email-centering.test.ts
  • apps/frontend/dashboard/src/features/templates/editor/utils/strip-email-centering.ts
  • apps/frontend/dashboard/src/features/templates/lib/template-ai-models.ts
  • apps/frontend/dashboard/src/features/templates/lib/template-variables.ts
  • apps/frontend/dashboard/src/features/webhooks/common-use-cases-sidebar.tsx
  • apps/frontend/dashboard/src/features/webhooks/components/blurred-secret.tsx
  • apps/frontend/dashboard/src/features/webhooks/components/delete-webhook-modal/index.tsx
  • apps/frontend/dashboard/src/features/webhooks/components/trigger-webhook-tester.tsx
  • apps/frontend/dashboard/src/features/webhooks/components/webhook-event-inline-selector.tsx
  • apps/frontend/dashboard/src/features/webhooks/components/webhook-table.tsx
  • apps/frontend/dashboard/src/features/webhooks/detail/delivery-logs.tsx
  • apps/frontend/dashboard/src/features/webhooks/detail/webhook-meta-grid.tsx
  • apps/frontend/dashboard/src/features/webhooks/test/test-page.tsx
  • apps/frontend/dashboard/src/features/workflows/automation-shell.tsx
  • apps/frontend/dashboard/src/features/workflows/components/automation-list-header.tsx
  • apps/frontend/dashboard/src/features/workflows/components/create-event-modal.tsx
  • apps/frontend/dashboard/src/features/workflows/components/delete-event-modal.tsx
  • apps/frontend/dashboard/src/features/workflows/components/delete-workflow-modal.tsx
  • apps/frontend/dashboard/src/features/workflows/components/workflow-empty-state.tsx
  • apps/frontend/dashboard/src/lib/query-keys.ts
  • apps/frontend/dashboard/src/lib/rate-limit-toast.ts
  • apps/frontend/dashboard/src/store/use-ui-store.ts
  • apps/frontend/dashboard/src/utils/format-relative-time.ts
  • apps/frontend/dashboard/src/utils/invitations.ts
  • apps/frontend/dashboard/src/utils/pixel-art.ts
  • apps/frontend/dashboard/src/utils/post-auth-destination.ts
  • apps/frontend/dashboard/tests/browser/README.md
  • apps/frontend/dashboard/tests/browser/auth.e2e.ts
  • apps/frontend/dashboard/tests/browser/auth/flows.ts
  • apps/frontend/dashboard/tests/browser/global-setup.ts
  • apps/frontend/dashboard/tests/browser/onboarding.e2e.ts
  • apps/frontend/dashboard/tests/browser/onboarding/flows.ts
  • apps/frontend/docs/content/docs/api/errors.mdx
  • apps/frontend/docs/content/docs/api/index.mdx
  • apps/frontend/docs/content/docs/api/pagination.mdx
  • apps/frontend/docs/content/docs/api/tools/post-api-tools-v1temp-email-checker.mdx
  • apps/frontend/docs/content/docs/api/usage-limits.mdx
  • apps/frontend/docs/content/docs/api/webhook/post-api-webhook-v1.mdx
  • apps/frontend/docs/content/docs/examples/nodejs/nextjs.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/add-domain.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/auto-populate.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/dns-records-explained.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/find-dns-provider.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/index.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/manual-setup.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/cloudflare.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/domain-chief.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/dreamhost.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/gandi.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/glauca-digital.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/godaddy.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/hetzner.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/hostinger.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/index.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/ionos.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/namecheap.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/namesilo.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/plesk.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/porkbun.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/route53.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/squarespace.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/strato.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/unknown-provider.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/vercel.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/providers/wordpress-com.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/registrar-vs-dns-host.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/sending-vs-receiving.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/dkim-dmarc-typos.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/domain-already-registered.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/domain-mismatch.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/index.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/mx-conflicts.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/not-verifying.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/troubleshoot/spf-conflicts.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/verification/how-verification-works.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/verification/propagation.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/what-is-a-domain.mdx
  • apps/frontend/docs/content/docs/guides/connect-domain/what-is-dns.mdx
  • apps/frontend/docs/content/docs/guides/error-reloop-dev-domain.mdx
  • apps/frontend/docs/content/docs/guides/handling-api-keys.mdx
  • apps/frontend/docs/content/docs/guides/index.mdx
  • apps/frontend/docs/content/docs/guides/pricing.mdx
  • apps/frontend/docs/content/docs/guides/supabase-deliverability.mdx
  • apps/frontend/docs/content/docs/integrations/agent-skills/agent-email-inbox.mdx
  • apps/frontend/docs/content/docs/integrations/agent-skills/email-best-practices.mdx
  • apps/frontend/docs/content/docs/integrations/ai-tools/cli-agents.mdx
  • apps/frontend/docs/content/docs/integrations/ai-tools/mcp-server.mdx
  • apps/frontend/docs/content/docs/learn/ai/api-keys.curl.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.dotnet.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.go.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.java.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.node.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.php.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.python.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.ruby.md
  • apps/frontend/docs/content/docs/learn/ai/api-keys.rust.md
  • apps/frontend/docs/content/docs/learn/api-keys.mdx
  • apps/frontend/docs/content/docs/learn/contacts/channels.mdx
  • apps/frontend/docs/content/docs/learn/contacts/groups.mdx
  • apps/frontend/docs/content/docs/learn/contacts/index.mdx
  • apps/frontend/docs/content/docs/learn/contacts/properties.mdx
  • apps/frontend/docs/content/docs/learn/domain.mdx
  • apps/frontend/docs/content/docs/self-host/coolify.mdx
  • apps/frontend/docs/content/docs/self-host/index.mdx
  • apps/frontend/docs/content/docs/self-host/requirements.mdx
  • apps/frontend/docs/content/docs/self-host/services.mdx
  • apps/frontend/docs/content/docs/self-host/vps.mdx
  • apps/frontend/docs/content/docs/setup/backend/api-key.mdx
  • apps/frontend/docs/content/docs/setup/backend/auth.mdx
  • apps/frontend/docs/content/docs/setup/backend/campaigns.mdx
  • apps/frontend/docs/content/docs/setup/backend/contacts.mdx
  • apps/frontend/docs/content/docs/setup/backend/credits.mdx
  • apps/frontend/docs/content/docs/setup/backend/domain.mdx
  • apps/frontend/docs/content/docs/setup/backend/email.mdx
  • apps/frontend/docs/content/docs/setup/backend/inbound.mdx
  • apps/frontend/docs/content/docs/setup/backend/inbox.mdx
  • apps/frontend/docs/content/docs/setup/backend/logs.mdx
  • apps/frontend/docs/content/docs/setup/backend/mail.mdx
  • apps/frontend/docs/content/docs/setup/backend/smtp.mdx
  • apps/frontend/docs/content/docs/setup/backend/spam.mdx
  • apps/frontend/docs/content/docs/setup/backend/template.mdx
  • apps/frontend/docs/content/docs/setup/backend/upload.mdx
  • apps/frontend/docs/content/docs/setup/backend/webhook.mdx
  • apps/frontend/docs/content/docs/setup/backend/workflow.mdx
  • apps/frontend/docs/content/docs/setup/frontend/dashboard.mdx
  • apps/frontend/docs/content/docs/setup/frontend/docs.mdx
  • apps/frontend/docs/content/docs/setup/frontend/links.mdx
  • apps/frontend/docs/content/docs/setup/frontend/web.mdx
  • apps/frontend/docs/content/docs/setup/index.mdx
  • apps/frontend/docs/content/docs/setup/overview.mdx
  • apps/frontend/docs/content/docs/setup/port.mdx
  • apps/frontend/docs/content/docs/webhooks/emails/suppressed.mdx
  • apps/frontend/docs/content/docs/webhooks/retries-and-replays.mdx
  • apps/frontend/docs/next.config.ts
  • apps/frontend/docs/scripts/generate-api-docs.ts
  • apps/frontend/docs/scripts/generate-api-keys-agent-md.ts
  • apps/frontend/docs/scripts/lib/python-sample-utils.ts
  • apps/frontend/docs/scripts/standardize-reloop-email-samples.ts
  • apps/frontend/docs/scripts/update-java-sdk-v2-samples.ts
  • apps/frontend/docs/src/app/[[...slug]]/page.tsx
  • apps/frontend/docs/src/app/api/og/route.tsx
  • apps/frontend/docs/src/app/global.css
  • apps/frontend/docs/src/components/docs/animated-hover-background.tsx
  • apps/frontend/docs/src/components/docs/docs-home.tsx
  • apps/frontend/docs/src/components/docs/layout.tsx
  • apps/frontend/docs/src/components/docs/navbar.tsx
  • apps/frontend/docs/src/components/docs/sidebar-webhook.tsx
  • apps/frontend/docs/src/components/docs/sidebar.tsx
  • apps/frontend/docs/src/components/footer.tsx
  • apps/frontend/docs/src/components/mdx/APIPage.tsx
  • apps/frontend/docs/src/components/mdx/CodeSamples.tsx
  • apps/frontend/docs/src/components/mdx/RelatedTopics.tsx
  • apps/frontend/docs/src/components/mdx/SimpleIcon.tsx
  • apps/frontend/docs/src/components/mdx/Tabs.tsx
  • apps/frontend/docs/src/components/mdx/reloop-client.tsx
  • apps/frontend/docs/src/lib/reloop-icon-names.ts
  • apps/frontend/docs/src/mdx-components.tsx
  • apps/frontend/links/.env.dev
  • apps/frontend/links/Dockerfile
  • apps/frontend/links/src/app/api/contacts/v1/preferences/one-click/[token]/route.ts
  • apps/frontend/links/src/app/api/mail/v1/track/click/[token]/route.ts
  • apps/frontend/links/src/app/api/mail/v1/track/open/[token]/route.ts
  • apps/frontend/links/src/app/globals.css
  • apps/frontend/links/src/app/opengraph-image.tsx
  • apps/frontend/links/src/app/preferences/[token]/preferences-content.tsx
  • apps/frontend/links/src/app/redirect/[token]/route.ts
  • apps/frontend/links/src/components/links-landing.tsx
  • apps/frontend/links/src/lib/mail-api.ts
  • apps/frontend/links/src/lib/site.ts
  • apps/frontend/web/Dockerfile
  • apps/frontend/web/content/agent/home.md
  • apps/frontend/web/content/blog/ai-generate-transactional-email-templates.mdx
  • apps/frontend/web/content/blog/bimi-email-setup-guide.mdx
  • apps/frontend/web/content/blog/block-disposable-emails-at-signup.mdx
  • apps/frontend/web/content/blog/build-ai-agent-sends-emails.mdx
  • apps/frontend/web/content/blog/building-in-public-lessons.mdx
  • apps/frontend/web/content/blog/building-webhook-delivery-system.mdx
  • apps/frontend/web/content/blog/categories.json
  • apps/frontend/web/content/blog/disposable-email.mdx
  • apps/frontend/web/content/blog/email-bounce-processing-automation.mdx
  • apps/frontend/web/content/blog/email-infrastructure-for-ai-agents.mdx
  • apps/frontend/web/content/blog/email-provider-comparison-2026.mdx
  • apps/frontend/web/content/blog/email-reduce-churn-sequences.mdx
  • apps/frontend/web/content/blog/how-temp-email-checker-saves-you-money.mdx
  • apps/frontend/web/content/blog/how-we-built-email-delivery-queue-bullmq.mdx
  • apps/frontend/web/content/blog/introducing-reloop.mdx
  • apps/frontend/web/content/blog/ip-warming-guide.mdx
  • apps/frontend/web/content/blog/migrating-from-sendgrid.mdx
  • apps/frontend/web/content/blog/reloop-coolify-setup.mdx
  • apps/frontend/web/content/blog/reloop-flyio-deployment.mdx
  • apps/frontend/web/content/blog/self-host-email-5-dollars.mdx
  • apps/frontend/web/content/blog/self-hosted-email-infrastructure.mdx
  • apps/frontend/web/content/blog/send-email-cloudflare-workers.mdx
  • apps/frontend/web/content/blog/send-email-nextjs-app-router.mdx
  • apps/frontend/web/content/blog/send-email-remix.mdx
  • apps/frontend/web/content/blog/send-email-sveltekit.mdx
  • apps/frontend/web/content/blog/transactional-email-as-growth-channel.mdx
  • apps/frontend/web/content/blog/transactional-email-best-practices.mdx
  • apps/frontend/web/content/blog/vercel-ai-sdk-reloop-notifications.mdx
  • apps/frontend/web/content/blog/welcome-email-sequences-that-convert.mdx
  • apps/frontend/web/content/blog/why-emails-land-in-spam-fix.mdx
  • apps/frontend/web/content/blog/why-we-open-sourced-email-infrastructure.mdx
  • apps/frontend/web/next.config.ts
  • apps/frontend/web/public/.well-known/agent-skills/reloop/SKILL.md
  • apps/frontend/web/public/index.md
  • apps/frontend/web/public/install.sh
  • apps/frontend/web/public/llms-docs.txt
  • apps/frontend/web/public/llms-full-docs.txt
  • apps/frontend/web/public/llms-full.txt
  • apps/frontend/web/public/llms.txt
  • apps/frontend/web/public/pricing.md
  • apps/frontend/web/public/skill.md
  • apps/frontend/web/src/app/(home)/components/_shared/scene-header.tsx
  • apps/frontend/web/src/app/(home)/components/email-analytics/preview-stage.tsx
  • apps/frontend/web/src/app/(home)/components/emails/detail/reloop-message-preview.tsx
  • apps/frontend/web/src/app/(home)/components/emails/preview.tsx
  • apps/frontend/web/src/app/(home)/components/hero-agents-preview.tsx
  • apps/frontend/web/src/app/(home)/components/open-source.tsx
  • apps/frontend/web/src/app/(home)/components/platform-tabs.tsx
  • apps/frontend/web/src/app/(home)/components/templates/preview-stage.tsx
  • apps/frontend/web/src/app/(home)/components/transactional-email/email-stack.tsx
  • apps/frontend/web/src/app/(home)/components/transactional-email/preview-scenes.tsx
  • apps/frontend/web/src/app/(home)/opengraph-image.tsx
  • apps/frontend/web/src/app/about/opengraph-image.tsx
  • apps/frontend/web/src/app/about/page.tsx
  • apps/frontend/web/src/app/alternatives/page.tsx
  • apps/frontend/web/src/app/careers/components/careers-section.tsx
  • apps/frontend/web/src/app/careers/page.tsx
  • apps/frontend/web/src/app/changelog/page.tsx
  • apps/frontend/web/src/app/community/opengraph-image.tsx
  • apps/frontend/web/src/app/community/page.tsx
  • apps/frontend/web/src/app/compare/aws-ses/page.tsx
  • apps/frontend/web/src/app/compare/components/compare-feature-slide.tsx
  • apps/frontend/web/src/app/compare/components/compare-hero-icons.tsx
  • apps/frontend/web/src/app/compare/components/compare-hero.tsx
  • apps/frontend/web/src/app/compare/components/compare-interactive-spotlight.tsx
  • apps/frontend/web/src/app/compare/components/compare-migrate.tsx
  • apps/frontend/web/src/app/compare/components/compare-og-image.tsx
  • apps/frontend/web/src/app/compare/components/comparison-table.tsx
  • apps/frontend/web/src/app/compare/components/crosshair-frame.tsx
  • apps/frontend/web/src/app/compare/components/infrastructure-diagram.tsx
  • apps/frontend/web/src/app/compare/loops/comparison-data.ts
  • apps/frontend/web/src/app/compare/loops/page.tsx
  • apps/frontend/web/src/app/compare/mailchimp/page.tsx
  • apps/frontend/web/src/app/compare/postmark/page.tsx
  • apps/frontend/web/src/app/compare/resend/comparison-data.ts
  • apps/frontend/web/src/app/compare/resend/page.tsx
  • apps/frontend/web/src/app/compare/sendgrid/page.tsx
  • apps/frontend/web/src/app/contact/contact-form.tsx
  • apps/frontend/web/src/app/contact/page.tsx
  • apps/frontend/web/src/app/contact/support-chat.tsx
  • apps/frontend/web/src/app/dpa/page.tsx
  • apps/frontend/web/src/app/features/email-analytics/components/hero.tsx
  • apps/frontend/web/src/app/features/email-analytics/components/sandbox.tsx
  • apps/frontend/web/src/app/features/email-marketing/components/frameworks-stack.tsx
  • apps/frontend/web/src/app/features/email-marketing/components/marketing-preview-section.tsx
  • apps/frontend/web/src/app/features/email-marketing/components/use-cases.tsx
  • apps/frontend/web/src/app/features/email-marketing/layout.tsx
  • apps/frontend/web/src/app/features/email-templates/components/bento.tsx
  • apps/frontend/web/src/app/features/email-templates/components/guide.tsx
  • apps/frontend/web/src/app/features/page.tsx
  • apps/frontend/web/src/app/features/smtp/components/features.tsx
  • apps/frontend/web/src/app/features/smtp/components/sandbox.tsx
  • apps/frontend/web/src/app/features/smtp/components/smtp-faq.tsx
  • apps/frontend/web/src/app/features/smtp/components/works-with.tsx
  • apps/frontend/web/src/app/features/transaction-emails/components/frameworks-stack.tsx
  • apps/frontend/web/src/app/frameworks/[slug]/opengraph-image.tsx
  • apps/frontend/web/src/app/frameworks/components/frameworks-index-hero.tsx
  • apps/frontend/web/src/app/globals.css
  • apps/frontend/web/src/app/license/components/license-faq.tsx
  • apps/frontend/web/src/app/license/opengraph-image.tsx
  • apps/frontend/web/src/app/pricing/components/pricing-section.tsx
  • apps/frontend/web/src/app/pricing/components/pricing-volume-slider.tsx
  • apps/frontend/web/src/app/privacy/page.tsx
  • apps/frontend/web/src/app/sdk/[slug]/opengraph-image.tsx
  • apps/frontend/web/src/app/sdk/components/bun-icon.ts
  • apps/frontend/web/src/app/sdk/components/framework-hero.tsx
  • apps/frontend/web/src/app/sdk/components/index-hero.tsx
  • apps/frontend/web/src/app/sdk/components/language-explorer.tsx
  • apps/frontend/web/src/app/sdk/components/resource-links.tsx
  • apps/frontend/web/src/app/sdk/components/sdk-code-block.tsx
  • apps/frontend/web/src/app/sdk/components/section-frame.tsx
  • apps/frontend/web/src/app/sdk/frameworks.ts
  • apps/frontend/web/src/app/sdk/languages.ts
  • apps/frontend/web/src/app/self-host/components/self-host-comparison.tsx
  • apps/frontend/web/src/app/terms-and-conditions/page.tsx
  • apps/frontend/web/src/app/tools/auth-checker/checker-panel.tsx
  • apps/frontend/web/src/app/tools/bimi-checker/components/api-request-response.tsx
  • apps/frontend/web/src/app/tools/bimi-checker/components/bimi-dns-records.tsx
  • apps/frontend/web/src/app/tools/bimi-checker/content.ts
  • apps/frontend/web/src/app/tools/blocklist-checker/checker-panel.tsx
  • apps/frontend/web/src/app/tools/blocklist-checker/content.ts
  • apps/frontend/web/src/app/tools/blocklist-checker/page.tsx
  • apps/frontend/web/src/app/tools/components/art/api-art.tsx
  • apps/frontend/web/src/app/tools/components/art/auth-art.tsx
  • apps/frontend/web/src/app/tools/components/art/bimi-art.tsx
  • apps/frontend/web/src/app/tools/components/art/blocklist-art.tsx
  • apps/frontend/web/src/app/tools/components/art/deliverability-art.tsx
  • apps/frontend/web/src/app/tools/components/art/dns-art.tsx
  • apps/frontend/web/src/app/tools/components/art/domain-age-art.tsx
  • apps/frontend/web/src/app/tools/components/art/html-editor-art.tsx
  • apps/frontend/web/src/app/tools/components/art/lookalike-art.tsx
  • apps/frontend/web/src/app/tools/components/art/reputation-art.tsx
  • apps/frontend/web/src/app/tools/components/art/spam-words-art.tsx
  • apps/frontend/web/src/app/tools/components/art/spoof-art.tsx
  • apps/frontend/web/src/app/tools/components/art/suggest-art.tsx
  • apps/frontend/web/src/app/tools/components/art/timer-art.tsx
  • apps/frontend/web/src/app/tools/components/art/validator-art.tsx
  • apps/frontend/web/src/app/tools/components/art/who-sends-art.tsx
  • apps/frontend/web/src/app/tools/deliverability-tester/content.ts
  • apps/frontend/web/src/app/tools/deliverability-tester/page.tsx
  • apps/frontend/web/src/app/tools/dns-lookup/lookup-panel.tsx
  • apps/frontend/web/src/app/tools/domain-age/components/api-request-response.tsx
  • apps/frontend/web/src/app/tools/domain-age/components/warmup-schedule.tsx
  • apps/frontend/web/src/app/tools/domain-age/content.ts
  • apps/frontend/web/src/app/tools/domain-reputation-checker/page.tsx
  • apps/frontend/web/src/app/tools/email-html-editor/content.ts
  • apps/frontend/web/src/app/tools/email-html-editor/page.tsx
  • apps/frontend/web/src/app/tools/email-spam-words-checker/api-section.tsx
  • apps/frontend/web/src/app/tools/email-spam-words-checker/checker-panel.tsx
  • apps/frontend/web/src/app/tools/email-spam-words-checker/language-pills.tsx
  • apps/frontend/web/src/app/tools/email-validator/content.ts
  • apps/frontend/web/src/app/tools/email-validator/page.tsx
  • apps/frontend/web/src/app/tools/email-validator/tester-panel.tsx
  • apps/frontend/web/src/app/tools/lookalike-watch/content.ts
  • apps/frontend/web/src/app/tools/opengraph-image.tsx
  • apps/frontend/web/src/app/tools/page.tsx
  • apps/frontend/web/src/app/tools/spoof-checker/checker-panel.tsx
  • apps/frontend/web/src/app/tools/spoof-checker/content.ts
  • apps/frontend/web/src/app/tools/temp-email-checker/components/api-request-response.tsx
  • apps/frontend/web/src/app/tools/temp-email-checker/content.ts
  • apps/frontend/web/src/app/tools/temp-email-checker/opengraph-image.tsx
  • apps/frontend/web/src/app/tools/temp-email-checker/syntax.ts
  • apps/frontend/web/src/app/tools/who-sends/content.ts
  • apps/frontend/web/src/app/twitter/components/twitter-automation-showcase.tsx
  • apps/frontend/web/src/app/twitter/components/twitter-create-webhook-comparison.tsx
  • apps/frontend/web/src/app/twitter/components/twitter-delete-api-key-comparison.tsx
  • apps/frontend/web/src/app/twitter/components/twitter-edit-contact-comparison.tsx
  • apps/frontend/web/src/app/twitter/components/twitter-modals-showcase.tsx
  • apps/frontend/web/src/app/use-cases/page.tsx
  • apps/frontend/web/src/app/why-open-source/components/open-source-faq.tsx
  • apps/frontend/web/src/app/why-open-source/components/open-source-section.tsx
  • apps/frontend/web/src/app/why-open-source/opengraph-image.tsx
  • apps/frontend/web/src/components/faq-section.tsx
  • apps/frontend/web/src/components/grainy-bg.tsx
  • apps/frontend/web/src/components/header.tsx
  • apps/frontend/web/src/components/landing/alternatives/alternative-page-view.tsx
  • apps/frontend/web/src/components/landing/blog/blog-cta.tsx
  • apps/frontend/web/src/components/landing/tools/auth-checker-page.tsx
  • apps/frontend/web/src/components/landing/tools/deliverability-tester-page.tsx
  • apps/frontend/web/src/components/landing/tools/email-validator-page.tsx
  • apps/frontend/web/src/components/mdx/code-block.tsx
  • apps/frontend/web/src/components/mdx/code-samples.tsx
  • apps/frontend/web/src/components/mdx/install-sdk-code.tsx
  • apps/frontend/web/src/components/mdx/language-icons.ts
  • apps/frontend/web/src/components/mdx/mdx-table.tsx
  • apps/frontend/web/src/lib/compare-content.ts
  • apps/frontend/web/src/lib/email-html-editor/apply-pasted-email-theme.ts
  • apps/frontend/web/src/lib/email-html-editor/email-canvas.css
  • apps/frontend/web/src/lib/email-html-editor/email-starter-kit.ts
  • apps/frontend/web/src/lib/email-html-editor/inline-email-stylesheet.ts
  • apps/frontend/web/src/lib/email-html-editor/inspector/color-picker.tsx
  • apps/frontend/web/src/lib/email-html-editor/inspector/scrub-field.tsx
  • apps/frontend/web/src/lib/email-html-editor/inspector/spacing-control.tsx
  • apps/frontend/web/src/lib/email-html-editor/inspector/typography/mark-controls.tsx
  • apps/frontend/web/src/lib/email-html-editor/pick-pasted-email-html.ts
  • apps/frontend/web/src/lib/email-html-editor/preserve-email-link-underlines.ts
  • apps/frontend/web/src/lib/email-html-editor/pretty-print-html.ts
  • apps/frontend/web/src/lib/email-html-editor/promote-table-spacing.ts
  • apps/frontend/web/src/lib/email-html-editor/readable-text-color.ts
  • apps/frontend/web/src/lib/email-html-editor/resolve-inspector-text-style.ts
  • apps/frontend/web/src/lib/email-html-editor/sanitize-email-html.ts
  • apps/frontend/web/src/lib/email-html-editor/strip-email-centering.ts
  • apps/frontend/web/src/lib/feature-marketing-configs.ts
  • apps/frontend/web/src/lib/landing/alternatives/aws-ses.ts
  • apps/frontend/web/src/lib/landing/alternatives/loops.ts
  • apps/frontend/web/src/lib/landing/alternatives/mailchimp.ts
  • apps/frontend/web/src/lib/landing/alternatives/postmark.ts
  • apps/frontend/web/src/lib/landing/alternatives/resend.ts
  • apps/frontend/web/src/lib/landing/alternatives/sendgrid.ts
  • apps/frontend/web/src/lib/landing/glossary/seo.ts
  • apps/frontend/web/src/lib/landing/tools/temp-email-checker.ts
  • apps/frontend/web/src/lib/pricing-faq.ts
  • apps/frontend/web/src/lib/pricing-md.ts
  • apps/frontend/web/src/lib/site.ts
  • apps/frontend/web/src/lib/sitemap-md.ts
  • apps/frontend/web/src/mdx-components.tsx
  • install/coolify/reloop.yaml
  • install/install.sh
  • packages/auth/src/server/config.ts
  • packages/auth/src/setup/complete-setup.ts
  • packages/auth/src/setup/setup-mode.ts
  • packages/auth/test/complete-setup.test.ts
  • packages/auth/test/setup-mode.test.ts
  • packages/code-samples/src/tools/temp-email-checker/temp-email-checker.ts
  • packages/code-samples/src/webhook/create-webhook/create-webhook.ts
  • packages/db/src/schema/automation.ts
  • packages/db/src/schema/billing.ts
  • packages/db/src/schema/contact.ts
  • packages/db/src/schema/sending-ip.ts
  • packages/db/src/schema/webhook.ts
  • packages/pricing/src/index.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

reverse_proxy email:8022
}

@removed path /api/credits* /api/tool* /api/admin*

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Credits service is missing

In a Coolify deployment, this rule returns 404 for the credits API, but the included dashboard still calls it for usage and billing periods. The Usage page cannot show the organization's balance. The template also omits the credits worker that handles email.sent, so sends do not create billing-audit records or emit quota warnings, even though the mail service still reserves credits.

Knowledge Base Used: Outbound email delivery

Comment on lines +138 to +139
handle @removed {
respond 404

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Support chat has no backend

The Coolify template includes the dashboard's support chat but omits the admin service and returns 404 for its API. Opening chat cannot create a conversation; unread counts and message requests also fail. The deployed dashboard needs that backend or must not offer the unavailable feature.

# Conflicts:
#	apps/frontend/dashboard/src/features/dashboard/page-header/user-dropdown.tsx
#	apps/frontend/dashboard/src/features/dashboard/sidebar/animated-campaigns-icon.tsx
// Only true once role is known as owner/admin, never while pending/unknown.
const isOrgAdmin = !isPending && (isOwner || isAdmin);
const canManageTeam = isOrgAdmin;
const canManageBilling = isOrgAdmin && billingEnabled;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Dedicated IP settings become inaccessible

For a self-hosted instance, billingEnabled is false, so this change also denies owners and admins access to Dedicated IP settings. The page redirects before it can show their assigned sending IPs or its new self-hosted state.

Knowledge Base Used: Product interfaces

@ohemilyy
ohemilyy requested a review from pranavp10 September 27, 2026 16:48
@pranavp10
pranavp10 merged commit a4c355d into main Sep 27, 2026
9 checks passed
@pranavp10
pranavp10 deleted the feat/coolify-one-click branch September 27, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants