[{"data":1,"prerenderedAt":1137},["ShallowReactive",2],{"navigation_docs":3,"-tu-hoc-database-supabase":420,"-tu-hoc-database-supabase-surround":1132},[4,153],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Phỏng vấn .NET","i-lucide-briefcase","\u002Fphong-van","1.phong-van",[10,27,66,111,128],{"title":11,"icon":12,"path":13,"stem":14,"children":15,"page":26},"Tổng quan","i-lucide-compass","\u002Fphong-van\u002Ftong-quan","1.phong-van\u002F1.tong-quan",[16,21],{"title":17,"path":18,"stem":19,"icon":20},"Thị trường HCM","\u002Fphong-van\u002Ftong-quan\u002Fthi-truong","1.phong-van\u002F1.tong-quan\u002F1.thi-truong","i-lucide-trending-up",{"title":22,"path":23,"stem":24,"icon":25},"Lộ trình 7 ngày","\u002Fphong-van\u002Ftong-quan\u002Flo-trinh","1.phong-van\u002F1.tong-quan\u002F2.lo-trinh","i-lucide-calendar-days",false,{"title":22,"icon":25,"path":28,"stem":29,"children":30,"page":26},"\u002Fphong-van\u002Flo-trinh","1.phong-van\u002F2.lo-trinh",[31,36,41,46,51,56,61],{"title":32,"path":33,"stem":34,"icon":35},"Ngày 1 — C# cơ bản","\u002Fphong-van\u002Flo-trinh\u002Fngay-1-csharp-co-ban","1.phong-van\u002F2.lo-trinh\u002F1.ngay-1-csharp-co-ban","i-lucide-1",{"title":37,"path":38,"stem":39,"icon":40},"Ngày 2 — OOP và SOLID","\u002Fphong-van\u002Flo-trinh\u002Fngay-2-oop-solid","1.phong-van\u002F2.lo-trinh\u002F2.ngay-2-oop-solid","i-lucide-2",{"title":42,"path":43,"stem":44,"icon":45},"Ngày 3 — C# nâng cao","\u002Fphong-van\u002Flo-trinh\u002Fngay-3-csharp-nang-cao","1.phong-van\u002F2.lo-trinh\u002F3.ngay-3-csharp-nang-cao","i-lucide-3",{"title":47,"path":48,"stem":49,"icon":50},"Ngày 4 — Database và SQL","\u002Fphong-van\u002Flo-trinh\u002Fngay-4-database-sql","1.phong-van\u002F2.lo-trinh\u002F4.ngay-4-database-sql","i-lucide-4",{"title":52,"path":53,"stem":54,"icon":55},"Ngày 5 — ASP.NET Core và EF Core","\u002Fphong-van\u002Flo-trinh\u002Fngay-5-aspnet-efcore","1.phong-van\u002F2.lo-trinh\u002F5.ngay-5-aspnet-efcore","i-lucide-5",{"title":57,"path":58,"stem":59,"icon":60},"Ngày 6 — DSA coding","\u002Fphong-van\u002Flo-trinh\u002Fngay-6-dsa","1.phong-van\u002F2.lo-trinh\u002F6.ngay-6-dsa","i-lucide-6",{"title":62,"path":63,"stem":64,"icon":65},"Ngày 7 — Mock và HR","\u002Fphong-van\u002Flo-trinh\u002Fngay-7-mock-interview","1.phong-van\u002F2.lo-trinh\u002F7.ngay-7-mock-interview","i-lucide-7",{"title":67,"icon":68,"path":69,"stem":70,"children":71,"page":26},"Ngân hàng câu hỏi","i-lucide-database","\u002Fphong-van\u002Fngan-hang-cau-hoi","1.phong-van\u002F3.ngan-hang-cau-hoi",[72,77,82,87,92,97,102,107],{"title":73,"path":74,"stem":75,"icon":76},"C# (60+ câu)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fcsharp","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F1.csharp","i-lucide-hash",{"title":78,"path":79,"stem":80,"icon":81},"OOP và SOLID (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Foop","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F2.oop","i-lucide-shapes",{"title":83,"path":84,"stem":85,"icon":86},"SQL (40+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fsql","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F3.sql","i-lucide-database-zap",{"title":88,"path":89,"stem":90,"icon":91},"ASP.NET và EF (50+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-ef","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F4.aspnet-ef","i-lucide-server",{"title":93,"path":94,"stem":95,"icon":96},"DSA và Coding (30+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdsa-coding","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F5.dsa-coding","i-lucide-binary",{"title":98,"path":99,"stem":100,"icon":101},"HR và Soft skill (25+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fhr-behavior","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F6.hr-behavior","i-lucide-users",{"title":103,"path":104,"stem":105,"icon":106},"Design Pattern (55+)","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Fdesign-pattern","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F7.design-pattern","i-lucide-puzzle",{"title":108,"path":109,"stem":110,"icon":91},"ASP.NET MVC và Web API","\u002Fphong-van\u002Fngan-hang-cau-hoi\u002Faspnet-mvc-webapi","1.phong-van\u002F3.ngan-hang-cau-hoi\u002F8.aspnet-mvc-webapi",{"title":112,"itle":113,"icon":114,"path":115,"stem":116,"children":117,"page":26},"Tai Lieu","Tài liệu và Cheat sheet","i-lucide-book-marked","\u002Fphong-van\u002Ftai-lieu","1.phong-van\u002F4.tai-lieu",[118,123],{"title":119,"path":120,"stem":121,"icon":122},"Cheat Sheet","\u002Fphong-van\u002Ftai-lieu\u002Fcheatsheet","1.phong-van\u002F4.tai-lieu\u002F1.cheatsheet","i-lucide-clipboard-list",{"title":124,"path":125,"stem":126,"icon":127},"Nguồn tham khảo","\u002Fphong-van\u002Ftai-lieu\u002Fnguon","1.phong-van\u002F4.tai-lieu\u002F2.nguon","i-lucide-link",{"title":129,"icon":130,"path":131,"stem":132,"children":133,"page":26},"Phỏng vấn English","i-lucide-globe","\u002Fphong-van\u002Fenglish-interview","1.phong-van\u002F5.english-interview",[134,138,143,148],{"title":135,"path":136,"stem":137,"icon":130},"Tổng quan English","\u002Fphong-van\u002Fenglish-interview\u002Ftong-quan","1.phong-van\u002F5.english-interview\u002F1.tong-quan",{"title":139,"path":140,"stem":141,"icon":142},"Vocabulary","\u002Fphong-van\u002Fenglish-interview\u002Fvocabulary","1.phong-van\u002F5.english-interview\u002F2.vocabulary","i-lucide-book-a",{"title":144,"path":145,"stem":146,"icon":147},"Technical Q và A (EN)","\u002Fphong-van\u002Fenglish-interview\u002Ftechnical-en","1.phong-van\u002F5.english-interview\u002F3.technical-en","i-lucide-code",{"title":149,"path":150,"stem":151,"icon":152},"Behavioral (EN)","\u002Fphong-van\u002Fenglish-interview\u002Fbehavioral-en","1.phong-van\u002F5.english-interview\u002F4.behavioral-en","i-lucide-message-square-text",{"title":154,"icon":155,"path":156,"stem":157,"children":158},"Tự học","i-lucide-graduation-cap","\u002Ftu-hoc","2.tu-hoc",[159,161,287,310,333,357,384],{"title":154,"path":156,"stem":160,"icon":155},"2.tu-hoc\u002Findex",{"title":162,"icon":68,"path":163,"stem":164,"children":165},"Database","\u002Ftu-hoc\u002Fdatabase","2.tu-hoc\u002F1.database\u002Findex",[166,167,197,222,243,248],{"title":162,"path":163,"stem":164,"icon":68},{"title":168,"icon":91,"path":169,"stem":170,"children":171,"page":26},"SQL Server","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server","2.tu-hoc\u002F1.database\u002F2.sql-server",[172,177,182,187,192],{"title":173,"path":174,"stem":175,"icon":176},"1. Giới thiệu và Cài đặt","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F1.gioi-thieu-cai-dat","i-lucide-play-circle",{"title":178,"path":179,"stem":180,"icon":181},"2. Cú pháp cơ bản","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F2.cu-phap-co-ban","i-lucide-code-2",{"title":183,"path":184,"stem":185,"icon":186},"3. Truy vấn nâng cao","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F3.truy-van-nang-cao","i-lucide-git-merge",{"title":188,"path":189,"stem":190,"icon":191},"4. Đặc thù và Performance","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F4.dac-thu-performance","i-lucide-gauge",{"title":193,"path":194,"stem":195,"icon":196},"5. Q và A phỏng vấn","\u002Ftu-hoc\u002Fdatabase\u002Fsql-server\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F2.sql-server\u002F5.cau-hoi-phong-van","i-lucide-message-circle-question",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":26},"PostgreSQL","i-simple-icons-postgresql","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql","2.tu-hoc\u002F1.database\u002F3.postgresql",[203,206,209,212,215,218],{"title":173,"path":204,"stem":205,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":207,"stem":208,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F2.cu-phap-co-ban",{"title":183,"path":210,"stem":211,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F3.truy-van-nang-cao",{"title":188,"path":213,"stem":214,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F4.dac-thu-performance",{"title":193,"path":216,"stem":217,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F5.cau-hoi-phong-van",{"title":219,"path":220,"stem":221,"icon":96},"6. Tích hợp C# và Postgres","\u002Ftu-hoc\u002Fdatabase\u002Fpostgresql\u002Ftich-hop-csharp","2.tu-hoc\u002F1.database\u002F3.postgresql\u002F6.tich-hop-csharp",{"title":223,"icon":224,"path":225,"stem":226,"children":227,"page":26},"MySQL","i-simple-icons-mysql","\u002Ftu-hoc\u002Fdatabase\u002Fmysql","2.tu-hoc\u002F1.database\u002F4.mysql",[228,231,234,237,240],{"title":173,"path":229,"stem":230,"icon":176},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F1.database\u002F4.mysql\u002F1.gioi-thieu-cai-dat",{"title":178,"path":232,"stem":233,"icon":181},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcu-phap-co-ban","2.tu-hoc\u002F1.database\u002F4.mysql\u002F2.cu-phap-co-ban",{"title":183,"path":235,"stem":236,"icon":186},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Ftruy-van-nang-cao","2.tu-hoc\u002F1.database\u002F4.mysql\u002F3.truy-van-nang-cao",{"title":188,"path":238,"stem":239,"icon":191},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fdac-thu-performance","2.tu-hoc\u002F1.database\u002F4.mysql\u002F4.dac-thu-performance",{"title":193,"path":241,"stem":242,"icon":196},"\u002Ftu-hoc\u002Fdatabase\u002Fmysql\u002Fcau-hoi-phong-van","2.tu-hoc\u002F1.database\u002F4.mysql\u002F5.cau-hoi-phong-van",{"title":244,"path":245,"stem":246,"icon":247},"So sánh 3 RDBMS","\u002Ftu-hoc\u002Fdatabase\u002Fso-sanh","2.tu-hoc\u002F1.database\u002F5.so-sanh","i-lucide-columns-3",{"title":249,"path":250,"stem":251,"children":252,"icon":254},"Supabase (BaaS)","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002Findex",[253,255,259,264,269,274,278,283],{"title":249,"path":250,"stem":251,"icon":254},"i-simple-icons-supabase",{"title":256,"path":257,"stem":258,"icon":68},"1. Database","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fdatabase","2.tu-hoc\u002F1.database\u002F6.supabase\u002F1.database",{"title":260,"path":261,"stem":262,"icon":263},"2. Authentication","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fauthentication","2.tu-hoc\u002F1.database\u002F6.supabase\u002F2.authentication","i-lucide-key",{"title":265,"path":266,"stem":267,"icon":268},"3. Storage & Realtime","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fstorage-realtime","2.tu-hoc\u002F1.database\u002F6.supabase\u002F3.storage-realtime","i-lucide-zap",{"title":270,"path":271,"stem":272,"icon":273},"4. Edge Functions & AI","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Ffunctions-ai","2.tu-hoc\u002F1.database\u002F6.supabase\u002F4.functions-ai","i-lucide-brain",{"title":275,"path":276,"stem":277,"icon":181},"5. API & SDKs","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fapi-sdk","2.tu-hoc\u002F1.database\u002F6.supabase\u002F5.api-sdk",{"title":279,"path":280,"stem":281,"icon":282},"6. Platform & Deploy","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Fplatform-deploy","2.tu-hoc\u002F1.database\u002F6.supabase\u002F6.platform-deploy","i-lucide-cloud",{"title":284,"path":285,"stem":286,"icon":196},"7. Interview & Q&A","\u002Ftu-hoc\u002Fdatabase\u002Fsupabase\u002Finterview","2.tu-hoc\u002F1.database\u002F6.supabase\u002F7.interview",{"title":288,"icon":289,"path":290,"stem":291,"children":292},"TypeScript","i-simple-icons-typescript","\u002Ftu-hoc\u002Ftypescript","2.tu-hoc\u002F2.typescript\u002Findex",[293,294,297,301,306],{"title":288,"path":290,"stem":291,"icon":289},{"title":173,"path":295,"stem":296,"icon":176},"\u002Ftu-hoc\u002Ftypescript\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F2.typescript\u002F1.gioi-thieu-cai-dat",{"title":298,"path":299,"stem":300,"icon":81},"2. Type System","\u002Ftu-hoc\u002Ftypescript\u002Ftype-system","2.tu-hoc\u002F2.typescript\u002F2.type-system",{"title":302,"path":303,"stem":304,"icon":305},"3. Advanced types","\u002Ftu-hoc\u002Ftypescript\u002Fadvanced-types","2.tu-hoc\u002F2.typescript\u002F3.advanced-types","i-lucide-braces",{"title":307,"path":308,"stem":309,"icon":196},"4. Q và A phỏng vấn","\u002Ftu-hoc\u002Ftypescript\u002Fcau-hoi-phong-van","2.tu-hoc\u002F2.typescript\u002F4.cau-hoi-phong-van",{"title":311,"icon":81,"path":312,"stem":313,"children":314},"OOP","\u002Ftu-hoc\u002Foop","2.tu-hoc\u002F3.oop\u002Findex",[315,316,321,326,330],{"title":311,"path":312,"stem":313,"icon":81},{"title":317,"path":318,"stem":319,"icon":320},"1. Bốn tính chất","\u002Ftu-hoc\u002Foop\u002F4-tinh-chat","2.tu-hoc\u002F3.oop\u002F1.4-tinh-chat","i-lucide-circle-dot",{"title":322,"path":323,"stem":324,"icon":325},"2. SOLID","\u002Ftu-hoc\u002Foop\u002Fsolid","2.tu-hoc\u002F3.oop\u002F2.solid","i-lucide-shield",{"title":327,"path":328,"stem":329,"icon":106},"3. Design Pattern","\u002Ftu-hoc\u002Foop\u002Fdesign-pattern","2.tu-hoc\u002F3.oop\u002F3.design-pattern",{"title":307,"path":331,"stem":332,"icon":196},"\u002Ftu-hoc\u002Foop\u002Fcau-hoi-phong-van","2.tu-hoc\u002F3.oop\u002F4.cau-hoi-phong-van",{"title":334,"icon":305,"path":335,"stem":336,"children":337},"Generic","\u002Ftu-hoc\u002Fgeneric","2.tu-hoc\u002F4.generic\u002Findex",[338,339,344,349,354],{"title":334,"path":335,"stem":336,"icon":305},{"title":340,"path":341,"stem":342,"icon":343},"1. Khái niệm và cú pháp","\u002Ftu-hoc\u002Fgeneric\u002Fkhai-niem","2.tu-hoc\u002F4.generic\u002F1.khai-niem","i-lucide-book",{"title":345,"path":346,"stem":347,"icon":348},"2. Constraint và Variance","\u002Ftu-hoc\u002Fgeneric\u002Fconstraint-variance","2.tu-hoc\u002F4.generic\u002F2.constraint-variance","i-lucide-filter",{"title":350,"path":351,"stem":352,"icon":353},"3. C# vs TS","\u002Ftu-hoc\u002Fgeneric\u002Fso-sanh","2.tu-hoc\u002F4.generic\u002F3.so-sanh","i-lucide-git-compare",{"title":307,"path":355,"stem":356,"icon":196},"\u002Ftu-hoc\u002Fgeneric\u002Fcau-hoi-phong-van","2.tu-hoc\u002F4.generic\u002F4.cau-hoi-phong-van",{"title":358,"icon":359,"path":360,"stem":361,"children":362},"Nuxt 4","i-simple-icons-nuxt","\u002Ftu-hoc\u002Fnuxt-4","2.tu-hoc\u002F5.nuxt-4\u002Findex",[363,364,367,372,376,379],{"title":358,"path":360,"stem":361,"icon":359},{"title":173,"path":365,"stem":366,"icon":176},"\u002Ftu-hoc\u002Fnuxt-4\u002Fgioi-thieu-cai-dat","2.tu-hoc\u002F5.nuxt-4\u002F1.gioi-thieu-cai-dat",{"title":368,"path":369,"stem":370,"icon":371},"2. Routing và Rendering","\u002Ftu-hoc\u002Fnuxt-4\u002Frouting-rendering","2.tu-hoc\u002F5.nuxt-4\u002F2.routing-rendering","i-lucide-route",{"title":373,"path":374,"stem":375,"icon":91},"3. Data và Server","\u002Ftu-hoc\u002Fnuxt-4\u002Fdata-server","2.tu-hoc\u002F5.nuxt-4\u002F3.data-server",{"title":307,"path":377,"stem":378,"icon":196},"\u002Ftu-hoc\u002Fnuxt-4\u002Fcau-hoi-phong-van","2.tu-hoc\u002F5.nuxt-4\u002F4.cau-hoi-phong-van",{"title":380,"path":381,"stem":382,"icon":383},"5. Practical Todo App","\u002Ftu-hoc\u002Fnuxt-4\u002Fpractical-todo-app","2.tu-hoc\u002F5.nuxt-4\u002F5.practical-todo-app","i-lucide-check-square",{"title":385,"path":386,"stem":387,"children":388,"icon":390},"Tailwind CSS","\u002Ftu-hoc\u002Ftailwindcss","2.tu-hoc\u002F6.tailwindcss\u002Findex",[389,391,396,401,406,411,416],{"title":385,"path":386,"stem":387,"icon":390},"i-simple-icons-tailwindcss",{"title":392,"path":393,"stem":394,"icon":395},"1. Layout & Spacing","\u002Ftu-hoc\u002Ftailwindcss\u002Flayout-spacing","2.tu-hoc\u002F6.tailwindcss\u002F1.layout-spacing","i-lucide-layout",{"title":397,"path":398,"stem":399,"icon":400},"2. Typography & Colors","\u002Ftu-hoc\u002Ftailwindcss\u002Ftypography-colors","2.tu-hoc\u002F6.tailwindcss\u002F2.typography-colors","i-lucide-type",{"title":402,"path":403,"stem":404,"icon":405},"3. Interactive & Effects","\u002Ftu-hoc\u002Ftailwindcss\u002Finteractive-effects","2.tu-hoc\u002F6.tailwindcss\u002F3.interactive-effects","i-lucide-sparkles",{"title":407,"path":408,"stem":409,"icon":410},"4. Responsive & Dark Mode","\u002Ftu-hoc\u002Ftailwindcss\u002Fresponsive-darkmode","2.tu-hoc\u002F6.tailwindcss\u002F4.responsive-darkmode","i-lucide-monitor-smartphone",{"title":412,"path":413,"stem":414,"icon":415},"5. Customization & Theme","\u002Ftu-hoc\u002Ftailwindcss\u002Fcustomization","2.tu-hoc\u002F6.tailwindcss\u002F5.customization","i-lucide-settings-2",{"title":417,"path":418,"stem":419,"icon":181},"6. Practical Projects","\u002Ftu-hoc\u002Ftailwindcss\u002Fpractical-projects","2.tu-hoc\u002F6.tailwindcss\u002F6.practical-projects",{"id":421,"title":422,"body":423,"description":1125,"extension":1126,"links":1127,"meta":1128,"navigation":1129,"path":250,"seo":1130,"stem":251,"__hash__":1131},"docs\u002F2.tu-hoc\u002F1.database\u002F6.supabase\u002Findex.md","Supabase — Nền tảng Backend-as-a-Service với PostgreSQL",{"type":424,"value":425,"toc":1113},"minimark",[426,431,443,448,451,581,585,654,658,775,779,912,925,928,932,935,1084,1086,1106,1108],[427,428,430],"h2",{"id":429},"supabase-là-gì","Supabase là gì?",[432,433,434,435,439,440,442],"p",{},"Supabase là một nền tảng ",[436,437,438],"strong",{},"Backend-as-a-Service (BaaS)"," mã nguồn mở, được xây dựng trên nền ",[436,441,198],{},". Được biết đến như một giải pháp thay thế Firebase, Supabase cung cấp tất cả các thành phần backend mà một ứng dụng hiện đại cần, bao gồm database, authentication, storage, realtime, edge functions, và AI\u002Fvector.",[444,445,447],"h3",{"id":446},"kiến-trúc-tổng-thể","Kiến trúc tổng thể",[432,449,450],{},"Mỗi dự án Supabase bao gồm:",[452,453,454,467],"table",{},[455,456,457],"thead",{},[458,459,460,464],"tr",{},[461,462,463],"th",{},"Thành phần",[461,465,466],{},"Mô tả",[468,469,470,481,491,501,511,521,531,541,551,561,571],"tbody",{},[458,471,472,478],{},[473,474,475],"td",{},[436,476,477],{},"PostgreSQL Database",[473,479,480],{},"Database đầy đủ, không phải abstraction. Hỗ trợ tất cả extension Postgres",[458,482,483,488],{},[473,484,485],{},[436,486,487],{},"Auth (GoTrue)",[473,489,490],{},"Xác thực người dùng với JWT, hỗ trợ 50+ OAuth providers",[458,492,493,498],{},[473,494,495],{},[436,496,497],{},"Storage",[473,499,500],{},"Lưu trữ file tương thích S3 với CDN toàn cầu",[458,502,503,508],{},[473,504,505],{},[436,506,507],{},"REST API (PostgREST)",[473,509,510],{},"API tự động sinh từ database schema",[458,512,513,518],{},[473,514,515],{},[436,516,517],{},"Realtime",[473,519,520],{},"WebSocket subscriptions: Broadcast, Presence, Postgres Changes",[458,522,523,528],{},[473,524,525],{},[436,526,527],{},"Edge Functions",[473,529,530],{},"Serverless functions chạy trên Deno, phân phối toàn cầu",[458,532,533,538],{},[473,534,535],{},[436,536,537],{},"AI & Vectors",[473,539,540],{},"pgvector cho embedding, semantic search, RAG",[458,542,543,548],{},[473,544,545],{},[436,546,547],{},"GraphQL (pg_graphql)",[473,549,550],{},"GraphQL API tự động từ schema",[458,552,553,558],{},[473,554,555],{},[436,556,557],{},"Cron (pg_cron)",[473,559,560],{},"Lập lịch job định kỳ trong Postgres",[458,562,563,568],{},[473,564,565],{},[436,566,567],{},"Queues (pgmq)",[473,569,570],{},"Message queue bền vững trong Postgres",[458,572,573,578],{},[473,574,575],{},[436,576,577],{},"Supabase Studio",[473,579,580],{},"Dashboard quản lý trực quan",[444,582,584],{"id":583},"pricing","Pricing",[452,586,587,600],{},[455,588,589],{},[458,590,591,594,597],{},[461,592,593],{},"Plan",[461,595,596],{},"Giá",[461,598,599],{},"Điểm nổi bật",[468,601,602,615,628,641],{},[458,603,604,609,612],{},[473,605,606],{},[436,607,608],{},"Free",[473,610,611],{},"$0\u002Ftháng",[473,613,614],{},"2 dự án, 500MB DB, 50K MAU, 5GB băng thông, 1GB file storage",[458,616,617,622,625],{},[473,618,619],{},[436,620,621],{},"Pro",[473,623,624],{},"Từ $25\u002Ftháng",[473,626,627],{},"100K MAU ($0.00325\u002FMAU thêm), 8GB disk\u002Fproject, 250GB băng thông, daily backups 7 ngày, email support",[458,629,630,635,638],{},[473,631,632],{},[436,633,634],{},"Team",[473,636,637],{},"Từ $599\u002Ftháng",[473,639,640],{},"SOC2 & ISO 27001, SSO, HIPAA (add-on), daily backups 14 ngày, 28-day log retention",[458,642,643,648,651],{},[473,644,645],{},[436,646,647],{},"Enterprise",[473,649,650],{},"Custom",[473,652,653],{},"Support manager riêng, SLAs, BYO Cloud, 24x7x365 support",[444,655,657],{"id":656},"supabase-vs-firebase-khác-biệt-cốt-lõi","Supabase vs Firebase — Khác biệt cốt lõi",[452,659,660,673],{},[455,661,662],{},[458,663,664,667,670],{},[461,665,666],{},"Tiêu chí",[461,668,669],{},"Supabase",[461,671,672],{},"Firebase",[468,674,675,687,700,712,724,737,749,762],{},[458,676,677,681,684],{},[473,678,679],{},[436,680,162],{},[473,682,683],{},"PostgreSQL (SQL quan hệ)",[473,685,686],{},"Firestore (NoSQL document)",[458,688,689,694,697],{},[473,690,691],{},[436,692,693],{},"Auth",[473,695,696],{},"JWT, 50+ OAuth, MFA, SSO",[473,698,699],{},"Proprietary, nhiều providers",[458,701,702,706,709],{},[473,703,704],{},[436,705,497],{},[473,707,708],{},"S3-compatible, CDN, image transform",[473,710,711],{},"Google Cloud Storage",[458,713,714,718,721],{},[473,715,716],{},[436,717,517],{},[473,719,720],{},"WebSocket (Broadcast, Presence, CDC)",[473,722,723],{},"Firestore listeners",[458,725,726,731,734],{},[473,727,728],{},[436,729,730],{},"Open-source",[473,732,733],{},"Có",[473,735,736],{},"Không",[458,738,739,744,747],{},[473,740,741],{},[436,742,743],{},"Self-host",[473,745,746],{},"Có (Docker)",[473,748,736],{},[458,750,751,756,759],{},[473,752,753],{},[436,754,755],{},"API",[473,757,758],{},"REST + GraphQL auto-generated",[473,760,761],{},"REST + gRPC",[458,763,764,769,772],{},[473,765,766],{},[436,767,768],{},"Vector search",[473,770,771],{},"pgvector, hybrid search built-in",[473,773,774],{},"Vector Search (add-on)",[444,776,778],{"id":777},"khi-nào-chọn-supabase-thay-vì-firebase-hay-custom-backend","Khi nào chọn Supabase thay vì Firebase hay custom backend?",[780,781,782,839,874],"field-group",{},[783,784,786],"field",{"name":785},"Chọn Supabase khi",[787,788,789,797,807,813,819,825,832],"ul",{},[790,791,792,793,796],"li",{},"Cần ",[436,794,795],{},"SQL quan hệ"," (JOINs, transactions, constraints)",[790,798,799,800,803,804],{},"Muốn ",[436,801,802],{},"open-source"," và có option ",[436,805,806],{},"self-host",[790,808,809,810,812],{},"Đã quen với ",[436,811,198],{}," hoặc hệ sinh thái SQL",[790,814,792,815,818],{},[436,816,817],{},"tích hợp chặt"," giữa Auth + Database (RLS + JWT)",[790,820,799,821,824],{},[436,822,823],{},"REST API + GraphQL"," auto-generated từ schema",[790,826,827,828,831],{},"Đang xây dựng ứng dụng ",[436,829,830],{},"AI \u002F vector search"," với pgvector",[790,833,834,835,838],{},"Team nhỏ, muốn ",[436,836,837],{},"phát triển nhanh"," không cần viết backend",[783,840,842],{"name":841},"Chọn Firebase khi",[787,843,844,850,856,862,868],{},[790,845,792,846,849],{},[436,847,848],{},"NoSQL"," flexible schema, document-based data",[790,851,852,853],{},"Deep integration với ",[436,854,855],{},"Google Cloud ecosystem",[790,857,799,858,861],{},[436,859,860],{},"managed service"," hoàn toàn, không lo infrastructure",[790,863,792,864,867],{},[436,865,866],{},"Cloud Messaging (FCM)"," cho push notifications",[790,869,870,871],{},"Ứng dụng mobile-first với ",[436,872,873],{},"Firebase Analytics \u002F Crashlytics",[783,875,877],{"name":876},"Chọn Custom Backend khi",[787,878,879,885,892,899,905],{},[790,880,792,881,884],{},[436,882,883],{},"kiểm soát hoàn toàn"," kiến trúc và công nghệ",[790,886,887,888,891],{},"Có ",[436,889,890],{},"team backend"," mạnh, muốn tự xây dựng",[790,893,894,895,898],{},"Yêu cầu ",[436,896,897],{},"compliance"," đặc thù không được hỗ trợ bởi BaaS",[790,900,792,901,904],{},[436,902,903],{},"performance tối đa"," với kiến trúc tùy chỉnh",[790,906,907,908,911],{},"Hệ thống ",[436,909,910],{},"legacy"," cần tích hợp phức tạp",[913,914,917,920,921,924],"callout",{"color":915,"icon":916},"primary","i-lucide-star",[436,918,919],{},"Interview tip:"," Supabase là ",[436,922,923],{},"open-source Firebase alternative",". Điểm khác biệt lớn nhất: Firebase dùng Firestore (NoSQL), Supabase dùng PostgreSQL (SQL quan hệ). Supabase hỗ trợ self-host, Firebase thì không.",[926,927],"hr",{},[427,929,931],{"id":930},"lộ-trình-học-supabase","Lộ trình học Supabase",[432,933,934],{},"Tài liệu được chia thành các phần chuyên sâu. Học theo thứ tự từ trên xuống dưới:",[452,936,937,953],{},[455,938,939],{},[458,940,941,944,947,950],{},[461,942,943],{},"#",[461,945,946],{},"Chủ đề",[461,948,949],{},"Nội dung chính",[461,951,952],{},"Thời lượng",[468,954,955,974,992,1008,1023,1037,1053,1068],{},[458,956,957,962,968,971],{},[473,958,959],{},[436,960,961],{},"1",[473,963,964],{},[965,966,162],"a",{"href":967},".\u002F1.database",[473,969,970],{},"PostgreSQL đầy đủ, RLS, Supavisor connection pooling, 20+ extensions, backup PITR",[473,972,973],{},"~45 phút",[458,975,976,981,987,990],{},[473,977,978],{},[436,979,980],{},"2",[473,982,983],{},[965,984,986],{"href":985},".\u002F2.authentication","Authentication",[473,988,989],{},"Email\u002Fpassword, Magic Link, OAuth 50+ providers, SSO, MFA, Passkey, session management",[473,991,973],{},[458,993,994,999,1002,1005],{},[473,995,996],{},[436,997,998],{},"3",[473,1000,1001],{},"Storage & Realtime",[473,1003,1004],{},"File storage S3-compatible, CDN, image transform, WebSocket Broadcast\u002FPresence\u002FCDC",[473,1006,1007],{},"~30 phút",[458,1009,1010,1015,1017,1020],{},[473,1011,1012],{},[436,1013,1014],{},"4",[473,1016,527],{},[473,1018,1019],{},"Serverless Deno functions, webhooks, API proxies, CORS, scheduling với cron",[473,1021,1022],{},"~25 phút",[458,1024,1025,1030,1032,1035],{},[473,1026,1027],{},[436,1028,1029],{},"5",[473,1031,537],{},[473,1033,1034],{},"pgvector, semantic\u002Fhybrid search, RAG với LLM, embedding generation",[473,1036,1007],{},[458,1038,1039,1044,1047,1050],{},[473,1040,1041],{},[436,1042,1043],{},"6",[473,1045,1046],{},"API & Client Libraries",[473,1048,1049],{},"REST API (PostgREST), GraphQL (pg_graphql), supabase-js, Flutter, Python SDKs",[473,1051,1052],{},"~20 phút",[458,1054,1055,1060,1063,1066],{},[473,1056,1057],{},[436,1058,1059],{},"7",[473,1061,1062],{},"Platform & DevOps",[473,1064,1065],{},"Studio dashboard, migrations, branching, logging, CI\u002FCD, compute sizing",[473,1067,1052],{},[458,1069,1070,1075,1078,1081],{},[473,1071,1072],{},[436,1073,1074],{},"8",[473,1076,1077],{},"Self-Hosting",[473,1079,1080],{},"Docker Compose, Kubernetes, enterprise considerations",[473,1082,1083],{},"~15 phút",[926,1085],{},[913,1087,1090,1093,1094,1097,1098,1101,1102,1105],{"color":1088,"icon":1089},"warning","i-lucide-lightbulb",[436,1091,1092],{},"Ghi chú:"," Nếu bạn đang chuẩn bị phỏng vấn, tập trung vào ",[436,1095,1096],{},"Database (RLS)",", ",[436,1099,1100],{},"Authentication (JWT + session)",", và ",[436,1103,1104],{},"so sánh Supabase vs Firebase"," — đây là những câu hỏi phổ biến nhất.",[926,1107],{},[1109,1110],"navigation",{":next":1111,":prev":1112,"nextIcon":68,"nextTitle":256,"nextTo":967},"true","false",{"title":1114,"searchDepth":1115,"depth":1115,"links":1116},"",2,[1117,1124],{"id":429,"depth":1115,"text":430,"children":1118},[1119,1121,1122,1123],{"id":446,"depth":1120,"text":447},3,{"id":583,"depth":1120,"text":584},{"id":656,"depth":1120,"text":657},{"id":777,"depth":1120,"text":778},{"id":930,"depth":1115,"text":931},"Học Supabase toàn diện — Database, Auth, Storage, Realtime, Edge Functions, AI\u002FVector. Tài liệu tham khảo từ supabase.com\u002Fdocs.","md",null,{},{"title":249,"icon":254},{"title":422,"description":1125},"Mt7nPAYxi5NZvzE36Jd7llAlCyRU8YdLAalxtqhYzsI",[1133,1135],{"title":244,"path":245,"stem":246,"description":1134,"icon":247,"children":-1},"So sánh chi tiết 3 RDBMS phổ biến — feature, performance, use case, syntax difference. Bảng tham chiếu cuối khi đã học cả 3.",{"title":256,"path":257,"stem":258,"description":1136,"icon":68,"children":-1},"Supabase Database — PostgreSQL với Row Level Security, Supavisor connection pooling, 20+ extensions, backup PITR.",1783490367549]