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
“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 stackSelect 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.
SendGrid
Inbound email routing. Calls Node.js API (forwards).
Nothing else on the diagram depends on it.
Next.js Web App
In Frontend
Portal and dashboard. Calls Node.js API and Sentry (reports).
Nothing else on the diagram depends on it.
Embeddable Widget
In Frontend
Customer feedback widget. Calls Node.js API.
Nothing else on the diagram depends on it.
Inngest Worker
In Core Services
Async job processor. Calls OpenAI (tags), Sentry (reports) and PostgreSQL (updates).
Nothing else on the diagram depends on it.
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.
OpenAI
LLM tagging API. Called by Inngest Worker (tags).
If it goes down, 1 of 9 components degrades.
Supabase Auth
Workspace authentication. Called by Node.js API (auths).
If it goes down, 4 of 9 components stop working.
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.
Supabase Storage
In Data & Storage
EU file storage. Called by Node.js API (stores).
If it goes down, 1 of 9 components degrades.
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
- Docs
Next.js Web App
Portal and dashboard
npm install next
Embeddable Widget
Customer feedback widget
Backend & APIs2
- Docs
Node.js API
Main request path
Inngest Worker
Async job processor
Data1
- Docs
PostgreSQL
Supabase hosted DB
Auth1
- Docs
Supabase Auth
Workspace authentication
npm install @supabase/supabase-js
Email & messaging1
- Docs
SendGrid
Inbound email routing
npm install @sendgrid/mail
AI1
- Docs
OpenAI
LLM tagging API
npm install openai
Storage & CDN1
- Docs
Supabase Storage
EU file storage
npm install @supabase/supabase-js
Observability1
- Docs
Sentry
Error tracking
npm install @sentry/nextjs
Install
npm install next @supabase/supabase-js @sendgrid/mail openai @sentry/nextjs
SDKs only. Pick your own database driver or ORM.