Regulated data

Tech stack for an EU-hosted SaaS under GDPR (2026)

Customer feedback tool for EU companies, designed by StackPrism from one sentence: 10 components, a reason for each, and the live checks that watch them.

The stack

  • SendGrid
  • Next.js
  • Inngest
  • Node.js
  • OpenAI
  • Supabase
  • PostgreSQL
  • Sentry
GDPREU hostingAIUpdated
The idea someone typed
“A customer feedback tool for European companies: collect feedback from an in-app widget and by email, tag it automatically with AI, and show trends on a dashboard. Customers require that all personal data stays in the EU.”

Their answers on the constraints step

Where users are
Mostly EU
Compliance
GDPR data residency

Make it yours. Open this stack in the editor to check its health, harden it and hand it to your coding agent. No sign-up, nothing to generate.

Start from this stack
goes down

Select a component to see what it does and what it connects to, or pick one above to see what breaks if it goes down. Pinch or use the buttons to zoom.

Why this stack

Personal data has to be stored in the EU, so the data that lasts lives in Supabase in an EU region: PostgreSQL holds workspaces, feedback and tags, Supabase Storage keeps attachments, and Supabase Auth signs in each customer’s team. Feedback arrives from the embeddable widget and by email, which SendGrid forwards to a Node.js API on Vercel. An Inngest worker sends new feedback to OpenAI for tagging and writes the tags back to PostgreSQL, and the Next.js app shows the trends. OpenAI, SendGrid and Sentry also see feedback text, so check where each one processes data, or strip personal details before it reaches them.

Why each piece

All 10 components on the diagram: what each one does, what it talks to, and what stops if it goes down.

  1. SendGrid

    Inbound email routing. Calls Node.js API (forwards).

    Nothing else on the diagram depends on it.

  2. Next.js Web App

    In Frontend

    Portal and dashboard. Calls Node.js API and Sentry (reports).

    Nothing else on the diagram depends on it.

  3. Embeddable Widget

    In Frontend

    Customer feedback widget. Calls Node.js API.

    Nothing else on the diagram depends on it.

  4. Inngest Worker

    In Core Services

    Async job processor. Calls OpenAI (tags), Sentry (reports) and PostgreSQL (updates).

    Nothing else on the diagram depends on it.

  5. Node.js API

    In Core Services

    Main request path. Calls Supabase Auth (auths), Sentry (reports), PostgreSQL (writes) and Supabase Storage (stores). Called by Next.js Web App, Embeddable Widget and SendGrid (forwards).

    If it goes down, 3 of 9 components stop working.

  6. OpenAI

    LLM tagging API. Called by Inngest Worker (tags).

    If it goes down, 1 of 9 components degrades.

  7. Supabase Auth

    Workspace authentication. Called by Node.js API (auths).

    If it goes down, 4 of 9 components stop working.

  8. PostgreSQL

    In Data & Storage

    Supabase hosted DB. Called by Node.js API (writes) and Inngest Worker (updates).

    If it goes down, 5 of 9 components stop working.

  9. Supabase Storage

    In Data & Storage

    EU file storage. Called by Node.js API (stores).

    If it goes down, 1 of 9 components degrades.

  10. Sentry

    Error tracking. Called by Node.js API (reports), Next.js Web App (reports) and Inngest Worker (reports).

    If it goes down, 3 of 9 components degrade.

When this stack fits

  • Your customers’ contracts say personal data must be stored in the EU.
  • You want managed services in an EU region rather than your own servers.
  • Feedback comes in through several channels and has to end up in one place.

When to pick something else

  • Customers also forbid processing outside the EU: every service that sees feedback text, OpenAI and SendGrid included, then needs an EU region or an EU-based alternative.
  • Customers want an EU-owned provider, not only EU storage: look at European cloud providers instead.

What you need to build this

10 components across 8 areas of the stack.

Build it with your AI agent

Hand the stack to Claude Code, Codex, Cursor or any coding agent as a brief: how it connects, install steps and a build plan.

Frontend2

  • Next.js Web App

    Portal and dashboard

    npm install next

    Docs
  • Embeddable Widget

    Customer feedback widget

Backend & APIs2

  • Node.js API

    Main request path

    Docs
  • Inngest Worker

    Async job processor

Data1

  • PostgreSQL

    Supabase hosted DB

    Docs

Auth1

  • Supabase Auth

    Workspace authentication

    npm install @supabase/supabase-js

    Docs

Email & messaging1

  • SendGrid

    Inbound email routing

    npm install @sendgrid/mail

    Docs

AI1

  • OpenAI

    LLM tagging API

    npm install openai

    Docs

Storage & CDN1

  • Supabase Storage

    EU file storage

    npm install @supabase/supabase-js

    Docs

Observability1

  • Sentry

    Error tracking

    npm install @sentry/nextjs

    Docs

Install

npm install next @supabase/supabase-js @sendgrid/mail openai @sentry/nextjs

SDKs only. Pick your own database driver or ORM.