Last active
August 26, 2024 04:52
-
-
Save itsMapleLeaf/0fea3021b6e29fc86f6111bd5fec9659 to your computer and use it in GitHub Desktop.
Revisions
-
itsMapleLeaf revised this gist
Aug 26, 2024 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -28,6 +28,7 @@ Good: - Very good onboarding experience - DB queries and updates can be made from anywhere, including the backend - A robust permissions system which makes free database access less scary - Builtin auth support - Builtin app devtools - very cool! - No enforced frontend/backend separation makes it really quick and painless to iterate and add features -
itsMapleLeaf revised this gist
Aug 26, 2024 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -34,7 +34,7 @@ Good: Not good: - Type safety is lacking and feels like an afterthought: - No way to sync your schema type with `instant.schema.ts` - `instant.perms.ts` is untyped - DB updates are completely untyped - Types in `instant.schema.ts` are not enforced on the backend; you can insert invalid documents without any warnings or errors -
itsMapleLeaf revised this gist
Aug 26, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -18,7 +18,7 @@ Not good: - No built-in support for relationships beyond ID pointers, e.g. cascading deletes, enforced related documents - This is a design decision, and this exists in the form of the [convex-ents](https://labs.convex.dev/convex-ents) third party library, but is not enforced at the DB level - The Convex Auth library only has backend support for Next.js - No `v.record()` validator (it exists, but it's not a part of the public API for some reason) - No `v.unknown()` validator, only the very unsafe `v.any()` # Instant -
itsMapleLeaf created this gist
Aug 26, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,40 @@ Comparison between two modern BaaS services # Convex Good: - Realtime - Alongside DB, also supports auth, file uploads, server functions, and background tasks - Experience from end to end is very typesafe - Backend is open-source - DB is very strictly validated by the schema - Very extensible Not good: - No direct database access outside of mutations - Convex requires queries, mutations, and actions for technical reasons, but not being able to let trusted backends directly access the database is a huge pain sometimes - No built-in support for relationships beyond ID pointers, e.g. cascading deletes, enforced related documents - This is a design decision, and this exists in the form of the [convex-ents](https://labs.convex.dev/convex-ents) third party library, but is not enforced at the DB level - The Convex Auth library only has backend support for Next.js - No `v.record()` validator (it exists, but it's not a part of the public API yet for some reason) - No `v.unknown()` validator, only the very unsafe `v.any()` # Instant Good: - Very good onboarding experience - DB queries and updates can be made from anywhere, including the backend - A robust permissions system which makes free database access less scary - Builtin app devtools - very cool! - No enforced frontend/backend separation makes it really quick and painless to iterate and add features Not good: - Type safety is lacking and feels like an afterthought: - No way to sync the database accessor types with your schema - `instant.perms.ts` is untyped - DB updates are completely untyped - Column types are not enforced on the backend; you can insert invalid documents without any warnings or errors