- Validations
- Translations
- Error and request logging and auditing
- Security (CQRS, CORS, CSRF)
- Permissions and a way to integrate it with your authentication (does supabase handle this? don't know)
- Email sending
- Background jobs
- Caching
- File uploading
- Rate limiting
- ...
Every time somebody suggests "just" Next.js, just "Remix", just "flask" or just [insert minimalist framework] I think they're either building something pretty trivial, or wasting a lot of time on rebuilding or integrating things you get for free with batteries included frameworks.
Then you think about all that time doing this could have been spent in actual business logic and it makes no sense to me anymore.
We wouldn't be the best fit for all of these, but here are some:
- Validations: handled already by Postgres and if you use JSONB you can use pg_jsonschema[0]
- Translations: probably won't ever be part of our stack, but for multilingual FTS we offer the pgroonga extension[1]
- Permissions: we offer AuthN (email & social logins, MFA, SSO) [2] and AuthZ with Postgres RLS[3]
- Background jobs: pg_cron [4]
- Caching: For images we have a smart cache [5]. We'll extend this to database queries over time
- File uploading: supabase storage [6]
[0] pg_jsonschema: https://supabase.com/blog/pg-jsonschema-a-postgres-extension...
[1] pgroonga: https://pgroonga.github.io/
[2] AuthN: https://supabase.com/docs/guides/auth/overview
[3] AuthZ with Postgres RLS: https://supabase.com/docs/guides/auth/row-level-security
[4] pg_cron: https://supabase.com/docs/guides/database/extensions/pgcron
[5] smart image cache: https://supabase.com/blog/storage-image-resizing-smart-cdn#s...
[6] supabase storage: https://supabase.com/storage
Do you use the serverless functions available with Vercel/Supabase? If so, I’m curious how you choose when to go with each provider.
With the stack you can use the same language, DTOs, libraries, etc.. both server and client side.
Server side rendering ensures a graceful handoff between server rendered state and the resulting app state on the client.
I’m also using MUI which includes all the components you need for a front end app.
I also just really like react/JSX, very strongly typed coupling between the html and JavaScript. Makes it very easy to refactor and pull out new components with confidence.
I really think this is the best stack for an MVP CRUD app right now. Interested to hear of anything better.