This page is meant for vite-plugin-ssr users. If you aren't a vite-plugin-ssr user, then you won't understand this.
By using stem-react
you get a React DX like Next.js powered by Vite and vite-plugin-ssr. For a Vue DX like Nuxt.js you can use stem-vue
instead.
stem-react
stem-vue
Ejectable
Usually, with vite-plugin-ssr, the user defines a
renderer/
directory that determintes how pages are rendered. However, when usingstem-react
, it'snode_modules/stem-react/renderer/
instead that determines how pages are rendered.You can eject
stem-react
: the directoryrenderer/
is moved fromnode_modules/stem-react/renderer/
to your repository's root directory. In other words, after ejecting, you fully control how pages are rendererd. You can then even replace React with any UI framework you want (Preact, Solid, ...).This means you can use
stem-react
to quickly get started and, if the need arises, you can eject in order to gain control and flexibility.
You can add authentication to your app simply by installing the stem-nextauth
package.
stem-nextauth
You have zero boilerplate code to write: stem-nextauth
includes everything, including a UI at /login
and /signup
.
For stem-nextauth
to work, you also have to install stem-prisma
(enabling stem-nextauth
to talk to your database), and stem-gmail
(enabling stem-nextauth
to send emails).
stem-prisma
stem-gmail
stem-*
pacakges integrate with each other automatically by using open standards.
Ejectable
The
stem-nextauth
package automatically adds authentication to your app in a way that works for the majority of users, while you can eject the parts that don't work out for you.For example, if you don't like the UI of
/login
and/signup
that's built intostem-nextauth
, you can eject and customize it.If you eject all your
stem-*
packages, then you completely remove Stem. While only very few users need to go that extreme, it shows that you can gain as much control as needed.
Stem enables you to quickly get started and, if you need special needs as you scale, you can eject and take control over integration.