You’re a solo developer. You’ve built something people want. Now someone on Hacker News asks: “Is this GDPR compliant?”
Panic.
You Google “GDPR compliance” and find 47-page guides about Data Protection Officers, Binding Corporate Rules, and privacy impact assessments. None of it applies to your 500-user SaaS.
This guide is different. It’s what you actually need to know as a solo developer shipping products to EU users.
The Truth: GDPR Isn’t That Scary
Here’s what the compliance industry won’t tell you: GDPR for small operators is mostly common sense.
Don’t be creepy with data. Tell people what you collect. Let them delete their stuff. Done.
The complex stuff—DPOs, impact assessments, binding corporate rules—that’s for companies processing data “on a large scale” or handling sensitive categories like health records or biometric data.
If you’re running a todo app, a SaaS tool, or an indie game, you probably don’t need any of that.
Do I Even Need to Care About GDPR?
Yes, if any of these apply:
- You have users in the EU (even one)
- You accept payments in Euros
- Your website is available in EU languages
- You target EU customers in any way
The test isn’t where you’re located. It’s whether you’re offering goods or services to people in the EU.
Running a SaaS from Austin that has 50 users in Germany? GDPR applies.
What You Actually Need: The Minimum Viable GDPR
Let’s cut through the noise. Here’s what a solo developer actually needs:
1. A Privacy Policy
Required: Yes Effort: 30 minutes
You need a page that explains:
- What data you collect
- Why you collect it
- Who you share it with (Stripe, analytics, etc.)
- How long you keep it
- How users can delete their data
That’s it. It doesn’t need to be 10,000 words. Our free template works fine.
Common mistake: Copying a privacy policy from a Fortune 500 company. Their policy mentions dozens of services you don’t use. Write one that’s accurate for YOUR app.
2. Cookie Consent (If You Use Cookies)
Required: If you use non-essential cookies Effort: 1-2 hours
If you use Google Analytics, Facebook Pixel, or any tracking cookies, you need consent before loading them.
The easy path:
- Use privacy-focused analytics that don’t need consent (Plausible, Fathom, Simple Analytics)
- Or implement a basic cookie banner with accept/reject
The important rule: “Reject All” must be as easy to click as “Accept All.” Same size, same prominence, same number of clicks.
What you can skip: If you only use essential cookies (session management, auth tokens), you don’t need a cookie banner. Just mention them in your privacy policy.
3. A Way to Delete User Data
Required: Yes Effort: Build a “Delete Account” button
Users have the right to erasure (Article 17). You need a way for them to delete their data.
Minimum implementation:
/settings → Delete Account → Confirm → Actually delete their data
Common mistake: Soft-deleting and keeping everything. If a user asks you to delete their data, you need to actually delete it (with some exceptions for legal requirements like tax records).
4. A Way to Export User Data
Required: Yes (but rarely requested) Effort: 2-4 hours
Users have the right to data portability (Article 20). They can ask for a copy of their data in a machine-readable format.
Minimum implementation:
- A “Download My Data” button that exports a JSON or CSV file
- Or just handle it manually when someone emails you (rare for small apps)
For a solo app with 500 users, you might get one data export request per year. Building an automated system is nice but not critical on day one.
5. Secure Data Handling
Required: Yes Effort: Should already be doing this
GDPR requires “appropriate technical and organizational measures.” For a solo developer, this means:
- HTTPS everywhere (free with Let’s Encrypt/Cloudflare)
- Passwords hashed (bcrypt, argon2—never plain text)
- Database not publicly accessible (use environment variables, not hardcoded credentials)
- Keep dependencies updated (security patches)
If you’re following basic security hygiene, you’re probably fine.
What You DON’T Need
Here’s the enterprise theater you can skip:
❌ Data Protection Officer (DPO)
Required only if:
- Your core business is large-scale monitoring of individuals
- You process special category data (health, religion, etc.) at scale
- You’re a public authority
A solo developer with a project management SaaS? No DPO needed.
❌ Data Protection Impact Assessment (DPIA)
Required only if:
- Processing is likely to result in high risk to individuals
- You’re doing systematic monitoring, profiling, or processing sensitive data at scale
Building a notes app? Not high risk. Skip it.
❌ Records of Processing Activities (ROPA)
Technically required for all controllers, but there’s an exemption for organizations with fewer than 250 employees IF processing is occasional, low-risk, and doesn’t involve sensitive data.
Most solo developer projects qualify for this exemption. That said, it’s good practice to keep a simple list of what data you process and why. A Notion page is fine.
❌ EU Representative
Required only if:
- You’re not established in the EU
- You regularly offer goods/services to EU residents OR monitor their behavior
- AND you don’t have any EU presence
Technically, a US-based solo developer with EU users might need this. In practice, enforcement against small operators is essentially zero. Focus on the basics first.
❌ Binding Corporate Rules
This is for multinational corporations transferring data between entities. If you’re a solo developer, you have one entity. Not applicable.
Real Talk: What Does Enforcement Look Like?
GDPR fines make headlines: “Meta fined €1.2 billion!”
Here’s the reality for small operators:
Who actually gets fined:
- Big Tech companies (Google, Meta, Amazon)
- Companies with massive data breaches they tried to hide
- Organizations that flagrantly ignore data subject requests
- Repeat offenders who don’t fix issues after warnings
Who doesn’t get fined:
- Solo developers who are trying to comply in good faith
- Small businesses that respond to complaints and fix issues
- Anyone who isn’t processing data “at scale”
The typical enforcement path:
- Someone complains to a Data Protection Authority
- DPA contacts you asking for information
- You explain what you do and show you’re trying to comply
- They tell you to fix specific issues
- You fix them
- Case closed
Fines are for the willfully negligent, not the honestly trying.
The 2-Hour GDPR Setup for Solo Developers
Here’s a realistic Saturday afternoon project:
Hour 1: Privacy Policy & Cookie Consent
- Use our privacy policy template or a generator
- Fill in your actual services (be accurate!)
- Add a link in your footer
- If using tracking cookies, add a basic consent banner
- Make sure analytics only loads after consent
Hour 2: User Rights
-
Build a “Delete Account” button
- Actually delete user data from your database
- Cancel any subscriptions in Stripe
- Send a confirmation email
-
Build a “Download My Data” button
- Export user’s data as JSON
- Include all tables where their data exists
- Let them download the file
That’s it. You’re now more compliant than 90% of indie projects.
Common Questions
”What if someone in the EU signs up and I didn’t know?”
GDPR applies regardless. But here’s the thing: you’re not expected to verify citizenship. You’re expected to treat EU users properly if you’re targeting the EU market or if they show up.
If you’re genuinely only serving the US market (pricing in USD, US-only shipping, etc.) and someone from the EU signs up anyway, the regulatory risk is minimal.
”Do I need to block EU users?”
No, and that’s usually overkill. It’s easier to just be compliant. GDPR requirements for small operators are not that burdensome.
The only reason to block EU users is if you’re doing something genuinely incompatible with GDPR (like selling data to brokers), which you probably shouldn’t be doing anyway.
”What about the cookie consent pop-up? Users hate them.”
Two options:
-
Use privacy-respecting analytics that don’t require consent:
- Plausible - €9/month
- Fathom - $14/month
- Simple Analytics - €9/month
- PostHog - free tier available (self-host for no cookies)
-
Accept that cookie banners are the cost of using free tracking tools. Google Analytics is free because you’re paying with user data. If you want to use it, you need consent.
”I’m using Stripe/SendGrid/AWS. Do I need a DPA with each of them?”
Technically, yes. You need a Data Processing Agreement with every service that processes personal data on your behalf.
Good news: Most major services include DPA terms in their standard terms of service or offer them automatically:
- Stripe: Included in their terms
- AWS: Available in console
- SendGrid: Included in their DPA
- Google Cloud: Available in console
You don’t need to negotiate custom contracts. Just accept their standard DPAs.
”Someone emailed asking for their data. What do I do?”
- Verify it’s actually them (reply to their registered email, ask for account details)
- Respond within 30 days (the legal deadline)
- Provide what they ask for:
- Access request → Export their data
- Deletion request → Delete their data
- Rectification → Let them correct it
Most solo apps get maybe 1-2 of these per year. It’s usually faster to handle manually than to build elaborate self-service systems.
”What if I just… don’t comply?”
Realistically? Probably nothing, for a while.
But:
- You might lose a customer who cares about privacy
- You might get a complaint that takes time to deal with
- You’re building on a shaky foundation as you grow
- It’s just not that hard to do the basics
The 2-hour setup is worth it for peace of mind.
Tools That Make This Easy
Privacy Policy Generators
- GDPR.Direct - Built for SaaS, generates all documents
- Termly - Free tier available
- iubenda - Popular, more enterprise-focused
Cookie Consent
- Cookie Consent by Osano - Free, open source
- Klaro - Free, open source, privacy-focused
- Or just switch to Plausible and skip the banner entirely
Data Export
For most small apps, a simple script works:
// Example: Export user data as JSON
async function exportUserData(userId) {
const user = await db.users.findById(userId);
const posts = await db.posts.findByUser(userId);
const settings = await db.settings.findByUser(userId);
return JSON.stringify({ user, posts, settings }, null, 2);
}
Data Deletion
// Example: Actually delete user data
async function deleteUserData(userId) {
await db.posts.deleteByUser(userId);
await db.settings.deleteByUser(userId);
await db.users.delete(userId);
await stripe.customers.del(user.stripeCustomerId);
// Actually delete, don't soft-delete
}
The Bottom Line
GDPR for solo developers comes down to this:
- Tell people what you collect → Privacy policy
- Ask before tracking → Cookie consent (or use privacy-friendly analytics)
- Let people delete their data → Delete account button
- Let people export their data → Download button
- Keep data secure → Basic security hygiene
That’s the minimum viable GDPR. It’s a Saturday afternoon project, not a year-long compliance initiative.
The complex stuff—DPOs, impact assessments, representatives—is for enterprises processing data at scale. If you’re a solo developer building useful products for people, focus on the basics and ship.
Need help generating compliant documents? GDPR.Direct creates privacy policies, cookie notices, and terms of service tailored to your SaaS. Takes 5 minutes, not 5 hours.