diff --git a/apps/www/_blog/2024-08-14-snaplet-is-now-open-source.mdx b/apps/www/_blog/2024-08-14-snaplet-is-now-open-source.mdx new file mode 100644 index 00000000000..bf98a7c87da --- /dev/null +++ b/apps/www/_blog/2024-08-14-snaplet-is-now-open-source.mdx @@ -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: + + + 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. + + +## 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. diff --git a/apps/www/components/LaunchWeek/12/Releases/data/lw12_build_stage.tsx b/apps/www/components/LaunchWeek/12/Releases/data/lw12_build_stage.tsx index e97a15ffb9a..e4fa3b960cd 100644 --- a/apps/www/components/LaunchWeek/12/Releases/data/lw12_build_stage.tsx +++ b/apps/www/components/LaunchWeek/12/Releases/data/lw12_build_stage.tsx @@ -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: ( + + + + + + + + ), }, { title: '', diff --git a/apps/www/public/images/blog/avatars/peter-snaplet.webp b/apps/www/public/images/blog/avatars/peter-snaplet.webp new file mode 100644 index 00000000000..df219992e96 Binary files /dev/null and b/apps/www/public/images/blog/avatars/peter-snaplet.webp differ diff --git a/apps/www/public/images/blog/lw12/day-3/og-snaplet.png b/apps/www/public/images/blog/lw12/day-3/og-snaplet.png new file mode 100644 index 00000000000..9c03986321a Binary files /dev/null and b/apps/www/public/images/blog/lw12/day-3/og-snaplet.png differ diff --git a/apps/www/public/images/blog/lw12/day-3/snaplet-fake-data.png b/apps/www/public/images/blog/lw12/day-3/snaplet-fake-data.png new file mode 100644 index 00000000000..2cdf4aac534 Binary files /dev/null and b/apps/www/public/images/blog/lw12/day-3/snaplet-fake-data.png differ diff --git a/apps/www/public/images/blog/lw12/day-3/snaplet-seed-data.png b/apps/www/public/images/blog/lw12/day-3/snaplet-seed-data.png new file mode 100644 index 00000000000..e58da070b65 Binary files /dev/null and b/apps/www/public/images/blog/lw12/day-3/snaplet-seed-data.png differ diff --git a/apps/www/public/images/blog/lw12/day-3/snaplet-subset.png b/apps/www/public/images/blog/lw12/day-3/snaplet-subset.png new file mode 100644 index 00000000000..c0253a0ac8f Binary files /dev/null and b/apps/www/public/images/blog/lw12/day-3/snaplet-subset.png differ diff --git a/apps/www/public/images/blog/lw12/day-3/thumb-snaplet.png b/apps/www/public/images/blog/lw12/day-3/thumb-snaplet.png new file mode 100644 index 00000000000..4b72c9ed17d Binary files /dev/null and b/apps/www/public/images/blog/lw12/day-3/thumb-snaplet.png differ diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index 4c437dd5deb..a013d1dbd31 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -5,9 +5,23 @@ https://supabase.com Latest news from Supabase en - Sun, 11 Aug 2024 22:00:00 GMT + Tue, 13 Aug 2024 22:00:00 GMT + https://supabase.com/blog/snaplet-is-now-open-source + Snaplet is now open source + https://supabase.com/blog/snaplet-is-now-open-source + Snaplet is closing their business and opening their source code + Tue, 13 Aug 2024 22:00:00 GMT + + + https://supabase.com/blog/supabase-realtime-broadcast-and-presence-authorization + Supabase Realtime: Broadcast and Presence Authorization + https://supabase.com/blog/supabase-realtime-broadcast-and-presence-authorization + Secure Realtime Broadcast and Presence with Authorization + Mon, 12 Aug 2024 22:00:00 GMT + + https://supabase.com/blog/postgres-new postgres.new: In-browser Postgres with an AI interface https://supabase.com/blog/postgres-new