Whale/snaplet (#28612)

* cats

* peter

* vale

* Adds bullets

* reordering

* re-reordering

* fix quote

* build stage item

* Adds a message for peter

---------

Co-authored-by: Francesco Sansalvadore <f.sansalvadore@gmail.com>
This commit is contained in:
CoppleandFrancesco Sansalvadore authored and GitHub committed 2024-08-14 09:40:21 +02:00
1 parent a692a30932
commit 293b9531be
9 files changed
+122 -7

No files matched your search

@@ -0,0 +1,64 @@
---
title: 'Snaplet is now open source'
description: 'Snaplet is closing their business and opening their source code'
author: paul_copplestone
image: lw12/day-3/og-snaplet.png
thumb: lw12/day-3/thumb-snaplet.png
launchweek: '12'
categories:
- launch-week
tags:
- engineering
date: '2024-08-14'
toc_depth: 3
---
Startups are hard. One of our favorite startups, Snaplet, is [shutting down](https://www.snaplet.dev/post/snaplet-is-shutting-down). Despite that, they built an amazing team (some who now work at Supabase) and some incredible products.
One way to ensure that your products out-live your business is to open source what you've built. I'm a huge fan of what Snaplet built so I reached out to [Peter](https://x.com/appfactory/) to see if Snaplet were interested in open sourcing. He said yes:
<Quote img="peter-snaplet.webp" caption="Peter Pistorius, Founder of Snaplet">
I built Snaplet because I believe developers write better software when they have access to
production-like data. Although the company is closing, my belief remains strong, so we are
open-sourcing the tools we've built.
</Quote>
## Open source products
There are 3 main tools that they are releasing under the MIT license:
### Copycat
Copycat generates fake data. It's like faker.js, but deterministic: for any given input it'll always produce the same output. For example, in if you generate an email with the user ID `user_1234`, the next time you generate an email with that email it will be the same, _guaranteed:_
![Fake data](/images/blog/lw12/day-3/snaplet-fake-data.png)
- Repo: [github.com/snaplet/copycat](https://github.com/snaplet/copycat)
### Snaplet Seed
Seed generates realistic synthetic data based off a database schema. It automatically determines the values in your database so you don't have to define each value. For example, if you want to generate a 3 `comments` for one of your `posts` you simply point it at your schema and let it handle the rest:
![Seed data](/images/blog/lw12/day-3/snaplet-seed-data.png)
- Repo: [github.com/snaplet/seed](https://github.com/snaplet/seed)
- Docs: [docs.snaplet.dev/seed](https://docs.snaplet.dev/seed)
### Snapshot
Snapshot is for capturing, transforming, and restoring snapshots of your database. It's like an advanced version of pg_dump/pg_restore. It has a particularly neat feature called “subsetting”. Point it at a database table and it tell it how much data you need. To maintain referential integrity, subsetting traverses tables, selecting all the rows that are connected to the target table through foreign key relationships:
![Subset data](/images/blog/lw12/day-3/snaplet-subset.png)
- Repo: [github.com/snaplet/snapshot](https://github.com/snaplet/snapshot)
- Docs: [docs.snaplet.dev/snapshot](https://docs.snaplet.dev/snapshot)
## The future of Snaplet tech
The Snaplet team who joined Supabase have been helping Peter to migrate these projects to open source. Over the next few weeks we'll move these into the Supabase GitHub org and pick up the ongoing maintenance.
We prefer to keep products decoupled (it's one of our [Principles](/docs/guides/getting-started/architecture#everything-works-in-isolation)), so you'll always be able to use these tools independently from Supabase. We can also see a lot of value providing a deep integration, so we've already started adding their [Snaplet Seed](/docs/guides/cli/seeding-your-database#generating-seed-data) to our official docs. This is just a start, watch this space!
## Where's Peter now?
Peter is back at [RedwoodJS](https://redwoodjs.com/), which he co-founded before Snaplet. He's been working on React Server Components, coming soon to Redwood.
@@ -94,12 +94,49 @@ export const days: AdventDay[] = [
),
},
{
title: '',
description: '',
id: '',
is_shipped: false,
links: [],
icon: null,
title: 'Snaplet is now open source',
description: 'Making it easier to build a secure and high-performing application',
id: 'snaplet',
is_shipped: true,
links: [
{
url: '/blog/snaplet-is-now-open-source',
label: 'Blog post',
target: '_blank',
},
],
icon: (
<svg
width="50"
height="51"
viewBox="0 0 50 51"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M7.48275 41.9973C7.37468 41.9977 7.26748 41.9782 7.16662 41.9398C7.05927 41.8991 6.96111 41.8378 6.87783 41.7593C6.79455 41.6808 6.72779 41.5869 6.6814 41.4827C6.63502 41.3785 6.60994 41.2662 6.6076 41.1524C6.60527 41.0386 6.62572 40.9255 6.66779 40.8195C6.68809 40.7621 7.51174 38.4239 7.89167 30.5016C8.09758 26.1929 8.10339 24.3 7.75246 20.0689C7.41314 16.0187 7.96708 13.6375 9.38527 12.9854C11.3748 12.0806 13.1787 13.5398 14.9246 14.953C16.8503 16.5128 18.8399 18.1128 21.508 17.7278C23.3264 17.4578 23.9935 15.7717 24.8027 13.2296L24.8056 13.2206C25.4369 11.2442 26.0875 9.20768 27.9929 8.92086C28.8919 8.7916 29.8809 9.1363 30.9308 9.94921C35.9713 13.8529 41.8964 27.6867 42.894 37.881C42.9053 37.9938 42.8939 38.1077 42.8606 38.2162C42.8273 38.3246 42.7726 38.4255 42.6999 38.5131C42.6271 38.6005 42.5377 38.673 42.4366 38.7262C42.3356 38.7794 42.2249 38.8124 42.111 38.8232C41.8814 38.8448 41.6526 38.7752 41.4747 38.6298C41.2969 38.4844 41.1846 38.275 41.1626 38.0476C40.1388 27.566 34.0919 14.5825 29.8519 11.305C29.2109 10.811 28.6396 10.5668 28.2365 10.6271C27.4019 10.7501 26.9412 12.1917 26.4505 13.7268L26.4442 13.7466L26.4432 13.7495C25.701 16.0815 24.7782 18.9804 21.7517 19.4312C18.3208 19.9425 15.815 17.9146 13.8052 16.2715C12.1259 14.9128 11.0471 14.1028 10.0929 14.548C9.68979 14.7319 9.16195 16.3519 9.46067 19.9224C9.8203 24.2512 9.81159 26.1815 9.60278 30.5763C9.19965 38.961 8.3035 41.3337 8.2658 41.4314C8.20667 41.592 8.10064 41.7316 7.9612 41.8323C7.82177 41.9331 7.65522 41.9905 7.48275 41.9973Z"
fill="hsl(var(--foreground-light))"
/>
<path
d="M11.5353 35.2812C11.4502 35.2805 11.3672 35.2555 11.2962 35.2091C11.2252 35.1627 11.1692 35.097 11.1351 35.0198C11.1112 34.9673 11.0982 34.9106 11.0969 34.853C11.0955 34.7955 11.1058 34.7382 11.1272 34.6847C11.1485 34.6311 11.1805 34.5823 11.2212 34.5412C11.2619 34.5001 11.3105 34.4675 11.3642 34.4453L14.7835 32.9918L11.1931 32.268C11.1372 32.257 11.0841 32.2352 11.0367 32.2038C10.9894 32.1724 10.9488 32.1321 10.9173 32.0851C10.8857 32.0381 10.8639 31.9854 10.853 31.9301C10.8421 31.8746 10.8423 31.8177 10.8538 31.7624C10.8645 31.7068 10.8863 31.6538 10.9178 31.6066C10.9494 31.5594 10.9901 31.5189 11.0375 31.4874C11.085 31.4559 11.1383 31.434 11.1944 31.4231C11.2505 31.412 11.3082 31.4122 11.3642 31.4234L16.3206 32.4231C16.4115 32.4409 16.4943 32.487 16.5569 32.5547C16.6195 32.6224 16.6586 32.7081 16.6686 32.7994C16.6778 32.8909 16.6574 32.983 16.6106 33.0625C16.5637 33.1419 16.4926 33.2047 16.4076 33.2417L11.7064 35.2439C11.6529 35.2687 11.5944 35.2815 11.5353 35.2812Z"
fill="hsl(var(--foreground-light))"
/>
<path
d="M37.8279 31.0817H37.8511C37.9587 31.0817 38.0625 31.0424 38.1427 30.9714C38.223 30.9005 38.274 30.8027 38.2861 30.6968C38.2917 30.5827 38.2515 30.471 38.1744 30.386C38.0973 30.301 37.9895 30.2496 37.8743 30.243L34.1591 30.0447L37.2798 28.1432C37.3773 28.0822 37.4467 27.9858 37.4734 27.8746C37.4999 27.7635 37.4814 27.6464 37.4219 27.5486C37.3608 27.4522 37.264 27.3835 37.1522 27.3571C37.0405 27.3307 36.9228 27.349 36.8245 27.4079L32.5177 30.0361C32.4386 30.0837 32.3771 30.1552 32.3421 30.2399C32.3072 30.3248 32.3006 30.4185 32.3234 30.5072C32.3497 30.5921 32.4022 30.6667 32.4734 30.7209C32.5446 30.7749 32.631 30.8056 32.7207 30.8089L37.8279 31.0817Z"
fill="hsl(var(--foreground-light))"
/>
<path
d="M24.2491 34.0434C23.538 34.0736 22.837 33.8691 22.2559 33.462C21.6749 33.055 21.2467 32.4684 21.0386 31.7943C20.9945 31.6515 21.0081 31.4971 21.0769 31.3641C21.1457 31.2311 21.2641 31.1299 21.4069 31.082C21.5519 31.0314 21.7113 31.0398 21.85 31.1056C21.9886 31.1713 22.0952 31.2888 22.1465 31.4324C22.5264 32.5814 23.527 33.0812 24.893 32.837C26.2589 32.5929 26.9898 31.7627 26.9637 30.5563C26.9637 30.4039 27.0248 30.2578 27.1336 30.1501C27.2424 30.0423 27.3899 29.9818 27.5437 29.9818C27.6975 29.9818 27.8451 30.0423 27.9538 30.1501C28.0627 30.2578 28.1238 30.4039 28.1238 30.5563C28.1615 32.3315 27.0014 33.647 25.0989 33.9889C24.8178 34.032 24.5334 34.0503 24.2491 34.0434Z"
fill="hsl(var(--foreground-light))"
/>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M25.7358 27.736C26.5975 28.5895 27.7659 29.0696 28.9846 29.0712C30.2032 29.0696 31.3715 28.5895 32.2333 27.736C33.095 26.8825 33.5798 25.7253 33.5813 24.5183C33.5808 24.0901 33.5194 23.668 33.4019 23.2636L34.1502 23.1279C34.3389 23.0931 34.5059 22.9855 34.6147 22.8288C34.7234 22.6721 34.765 22.4791 34.7302 22.2921C34.695 22.1058 34.5867 21.9408 34.4292 21.8331C34.2716 21.7256 34.0775 21.684 33.8892 21.7176L32.7958 21.9158C32.7886 21.9171 32.7815 21.9186 32.7743 21.9201C32.7692 21.9212 32.7641 21.9224 32.759 21.9236C32.6038 21.7023 32.4282 21.4937 32.2333 21.3006C31.3715 20.4472 30.2032 19.967 28.9846 19.9655C27.7659 19.967 26.5975 20.4472 25.7358 21.3006C25.2144 21.817 24.831 22.4446 24.6091 23.1272C24.3641 23.0873 24.1157 23.0674 23.8666 23.0677C23.0492 23.068 22.2517 23.2841 21.5535 23.6872C21.4288 23.5248 21.2924 23.3701 21.145 23.2242C20.2834 22.3713 19.1155 21.8915 17.8973 21.89C16.6792 21.8915 15.5113 22.3713 14.6496 23.2242C14.039 23.8285 13.6175 24.5853 13.4229 25.4043L12.155 25.6357C12.0616 25.6526 11.9726 25.6876 11.8929 25.7386C11.8133 25.7897 11.7445 25.8558 11.6907 25.9332C11.6368 26.0105 11.5988 26.0977 11.579 26.1896C11.5591 26.2815 11.5577 26.3763 11.5749 26.4687C11.6048 26.6341 11.6922 26.7838 11.822 26.892C11.9519 27.0001 12.1159 27.0597 12.2855 27.0604C12.3295 27.058 12.3733 27.0513 12.416 27.0404L13.3222 26.8768C13.4253 27.9234 13.8914 28.9077 14.6486 29.6577C15.5103 30.5112 16.6786 30.9914 17.8973 30.9928C19.116 30.9914 20.2843 30.5112 21.1461 29.6577C22.0078 28.8042 22.4926 27.6471 22.4941 26.44C22.4931 25.9299 22.4059 25.4286 22.2402 24.9555C22.7284 24.6638 23.2903 24.507 23.8666 24.5069C24.0415 24.5074 24.2158 24.522 24.3879 24.5505C24.398 25.7459 24.8817 26.8901 25.7358 27.736ZM15.2449 28.1129C15.3672 28.3028 15.5107 28.4804 15.674 28.6421C16.2638 29.2262 17.0632 29.5551 17.8973 29.5567C18.7314 29.5551 19.5309 29.2262 20.1207 28.6421C20.5158 28.2507 20.7953 27.7661 20.9372 27.2403C20.6078 26.6592 19.3023 25.7228 17.9992 25.9287C16.7778 26.1217 15.6639 27.2351 15.2449 28.1129ZM20.9323 25.6247C20.7889 25.1054 20.5109 24.6269 20.1197 24.2397C19.53 23.6562 18.7309 23.3278 17.8973 23.3262V23.3234C17.0632 23.3249 16.2638 23.6538 15.674 24.2379C15.0842 24.822 14.7521 25.6139 14.7506 26.44C14.7508 26.5389 14.7557 26.6373 14.7652 26.7349C15.4725 25.8302 16.5683 24.9876 17.8165 24.794C18.9521 24.618 20.1012 25.0299 20.9323 25.6247ZM26.4604 26.3756C26.5515 26.4969 26.6519 26.6122 26.7612 26.7205C27.351 27.3046 28.1505 27.6334 28.9846 27.6349C29.8186 27.6334 30.6181 27.3046 31.2079 26.7205C31.5665 26.3653 31.8298 25.9333 31.9814 25.4636C31.4316 24.7613 30.0418 23.9971 28.8253 24.1907C27.503 24.3977 26.7425 25.6103 26.4604 26.3756ZM32.0872 24.0014C31.1515 23.3283 29.8463 22.885 28.6571 23.0705C27.3357 23.2786 26.4282 24.1391 25.8767 25.0016C25.8513 24.8427 25.8381 24.6812 25.8378 24.5183C25.8386 23.692 26.1704 22.8997 26.7603 22.3154C27.3502 21.7311 28.1502 21.4025 28.9846 21.4017C29.8188 21.4025 30.6188 21.7311 31.2088 22.3154C31.6742 22.7764 31.9789 23.3668 32.0872 24.0014Z"
fill="hsl(var(--foreground-light))"
/>
</svg>
),
},
{
title: '',
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+15 -1
View File
@@ -5,9 +5,23 @@
<link>https://supabase.com</link>
<description>Latest news from Supabase</description>
<language>en</language>
<lastBuildDate>Sun, 11 Aug 2024 22:00:00 GMT</lastBuildDate>
<lastBuildDate>Tue, 13 Aug 2024 22:00:00 GMT</lastBuildDate>
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<guid>https://supabase.com/blog/snaplet-is-now-open-source</guid>
<title>Snaplet is now open source</title>
<link>https://supabase.com/blog/snaplet-is-now-open-source</link>
<description>Snaplet is closing their business and opening their source code</description>
<pubDate>Tue, 13 Aug 2024 22:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/blog/supabase-realtime-broadcast-and-presence-authorization</guid>
<title>Supabase Realtime: Broadcast and Presence Authorization</title>
<link>https://supabase.com/blog/supabase-realtime-broadcast-and-presence-authorization</link>
<description>Secure Realtime Broadcast and Presence with Authorization</description>
<pubDate>Mon, 12 Aug 2024 22:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/blog/postgres-new</guid>
<title>postgres.new: In-browser Postgres with an AI interface</title>
<link>https://supabase.com/blog/postgres-new</link>