{"@context":"https://ihatereading.in/roadmap/schema/v1","type":"roadmap-chapter","roadmap":{"slug":"vibe-coding-mobile-app-development","title":"Vibe Coding Mobile App Roadmap (Expo, Tailwind & AI Agents)","url":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development","machineUrl":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development.json"},"slug":"databases-and-backends","title":"Databases & Backends: Supabase, PostgreSQL, Firebase & Turso","url":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/databases-and-backends","machineUrl":"https://ihatereading.in/roadmap/vibe-coding-mobile-app-development/databases-and-backends.json","summary":{"breadcrumb":"Vibe Coding Mobile App Roadmap (Expo, Tailwind & AI Agents) → Databases & Backends: Supabase, PostgreSQL, Firebase & Turso","purpose":"Choose and connect a real database for your Expo app — Supabase, PostgreSQL, Firebase, Turso — with schemas, security rules and prompts for agents.","prerequisites":["Mobile Storage & Memory"],"afterThisChapter":["Auth, Security & Secrets"]},"agentLens":null,"topics":[{"id":"backend-as-a-service-vs-your-own-api","slug":"backend-as-a-service-vs-your-own-api","title":"Backend-as-a-service vs your own API","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Supabase and Firebase give you a database, auth and APIs with little server code."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Supabase and Firebase give you a database, auth and APIs with little server code. A custom API on a managed PostgreSQL such as Neon gives more control and more work.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Backend-as-a-service vs your own API and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/guides/using-supabase/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"supabase-postgresql-auth-storage","slug":"supabase-postgresql-auth-storage","title":"Supabase (PostgreSQL + auth + storage)","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["A hosted PostgreSQL with auth, storage, realtime and edge functions."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"A hosted PostgreSQL with auth, storage, realtime and edge functions. Security comes from Row Level Security policies, so the client can talk to the database directly.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Supabase (PostgreSQL + auth + storage) and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://supabase.com/docs/guides/getting-started/quickstarts/expo-react-native"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"postgresql-fundamentals","slug":"postgresql-fundamentals","title":"PostgreSQL fundamentals","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Tables, primary and foreign keys, indexes and migrations."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Tables, primary and foreign keys, indexes and migrations. Learn them once and every Postgres host works the same.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is PostgreSQL fundamentals and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://www.postgresql.org/docs/current/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"firebase-firestore-auth","slug":"firebase-firestore-auth","title":"Firebase (Firestore + Auth)","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["A document database with realtime listeners and strong auth tooling."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"A document database with realtime listeners and strong auth tooling. React Native Firebase needs a development build; the JS SDK works in Expo Go with limits.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Firebase (Firestore + Auth) and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/guides/using-firebase/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"turso-libsql","slug":"turso-libsql","title":"Turso (libSQL)","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["A hosted, SQLite-compatible database often used at the edge."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"A hosted, SQLite-compatible database often used at the edge. In mobile apps you usually reach it through your backend or edge functions; check current React Native support before using it directly. Not to be confused with Turborepo, a build tool.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Turso (libSQL) and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.turso.tech/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"schema-first-with-migrations","slug":"schema-first-with-migrations","title":"Schema first, with migrations","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["Design tables from your spec, keep migrations in version control and let the agent generate SQL that you review before running."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"Design tables from your spec, keep migrations in version control and let the agent generate SQL that you review before running.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Schema first, with migrations and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://supabase.com/docs/guides/functions"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]},{"id":"never-ship-secrets-in-the-app","slug":"never-ship-secrets-in-the-app","title":"Never ship secrets in the app","level":"intermediate","category":null,"importance":null,"difficulty":"intermediate","learn":["The app holds only public keys."],"why":["Syncing across devices, accounts and analytics all need a server-side source of truth, and a wrong access model is the most expensive mistake to fix after launch."],"prerequisites":[],"nextTopics":[],"relatedTopics":[],"usedIn":[],"understand":{"summary":"The app holds only public keys. Privileged keys (service role, admin) live on a server and never in `EXPO_PUBLIC_` variables.","example":null,"mentalModel":"The on-device database is your personal notebook; the backend database is the bank vault with a teller (access rules) who checks who you are before handing anything over.","howItWorks":null,"underTheHood":null,"misconceptions":[]},"questions":{"learning":["What is Never ship secrets in the app and when do you use it in a mobile app?"],"practice":["Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos."],"interview":["Why is Row Level Security important when the client talks to the database directly?"],"advanced":[],"debugging":[],"comparison":[]},"projects":{"beginner":"Build a todo app with Supabase: a todos table with user_id, RLS policies so users see only their rows, and an Expo screen that lists and adds todos.","intermediate":null,"advanced":null},"commonMistakes":[],"bestPractices":[],"debug":null,"compare":[],"resources":{"official":["https://docs.expo.dev/guides/environment-variables/"],"tutorials":[],"videos":[],"websites":[],"youtube":[],"ihateReading":["/blogs/firebase-supabase-and-clerk-authentication","/blogs/how-to-build-ai-chat-app-next-vercel-ai-sdk-firebase","/blogs/how-were-keeping-ihatereading-in-under-100-month-at-10k-visitors"]},"agentLens":null,"skipIf":null,"build":null,"next":[],"prerequisite":[]}],"updatedAt":"2026-10-23T06:00:10.877Z"}