jlarky2012
B2B Saas Kit is the main product - the goal is help you deliver a baseline app very quickly and to modify it to your needs. Prompts with Friends is just an example app - we hope featureful enough to understand the promise of the kit.
In the FAQ we talk a bit about the fact that a lot of companies are in Fogbender's position where they want people to use their product as early as possible, so in a sense any of the serverices we feature (Stripe, PropelAuth, Doppler, Vercel, Supabase, Posthog) could have created a starter like this. There's nothing special about Fogbender here, though of course we'd be happy if more folks knew of its existence.
"Instructional bundle" - it's a project (git repo) that you can clone and get running (we might create a CLI down the road). It does contain enough documentation in the README and our /setup page to get you going if you have some experience with modern frontend development. We do plan to add more documentation and tutorials later on, once we see some demand for it.
At the moment, we only use Supabase as the SQL database, but it should be pretty easy to integrate their BaaS. Our backend consists of API endpoints written in TypeScript (serverless), that use traditional REST or type-safe tRPC protocols. Because Astro is a pretty flexible platform, we have multiple examples of how to use React, one is using the SPA model that we have on https://promptswithfriends.com/survey (with the tRPC backend) and the main one - at https://promptswithfriends.com/app - is a more modern full stack app with SSR (also leveraging tRPC). We do plan to have more examples on backend architecture, we just started with this one because it has the fewest number of moving parts.
At Fogbender use Elixir on the backend, but it felt like a harder sell to people who are not familiar with it (which is most people).
I really apprecate your questions - we have some of them answered on the https://promptswithfriends.com/eject page, but it's not 100% written yet, and questions like yours help us understand what we need to do to explain things better.
const navigation = useNavigation(); // navigation.state === "submitting"
that code works in a "global" scope, but useFormStatus only works if your component is a child of the form you want to get the status for. In practical terms, this means that you can create, say, a submit button component and use it there, but you can't easily use that state higher up, for example, if you want to add class to a pending form.
This is a pretty simple utility that will give you more control over where that state can be accessed
A comprehensive guide to customizing Tailwind CSS in Astro
const data = useLoaderData<typeof loader>()
That means that if you planning to provide proper availability you want to work with system of applications, not just one. That means you should look into creating networking architecture that can handle all of that.
Most of the time it means that people just use tools that solve that for you, like load balancers. But it doesn't mean that somehow all modern applications are immune to failures.