looking for a e2e typed CMS ideally with tRPC and directly integrated in Next.js
Hey, does someone know from a lightweight CMS which is directly integrated/coupled with/into a next.js project and has e2e type safety.
It should be possible to write a CMS which can be deployed with a nextjs catch all API route and nextjs catch all page. I was wondering if someone has already accomplished that?
12 Replies
owo7 from what I've seen keystone 6 might be what your looking for https://keystonejs.com/
some others to checkout are sanity and strapi, I'm currently building a minimal cms that integrates into t3 stack with prisma mostly for learning , if it turns out any good ill send a link if want >_<
KeystoneJS: The superpowered Node.js Headless CMS for developers - Keystone 6
KeystoneJS: The superpowered Node.js Headless CMS for developers - ...
Build faster and scale further with the programmable open source GraphQL API back-end for structured content projects.
Hey, thanks for the suggestions. Here my thoughts about these two Options:
1.) keystone 6: Tried keystone 6 already and was not very satisfied by the types. Many return types from keystone context operations are including the any-type and are therefore not e2e typed
2.) strapi is our current solution which we use in many client projects. But we want to move away from it because it heavily relies on codegen for type generation which does not have ideal DX. Also setting up Strapi is quite a hussle and time consuming which we try to minimize for client projects.
Would love to see a link to your custom solution! Are you building the admin frontend on top of prisma on your own or are you using an existing project therefore?
Have you checked out Payload yet? It seems like it checks all of your boxes:
- Fully typed from your collection schema and types leveraged and inferred in querying API
- Just released Vercel serverless support: https://github.com/payloadcms/next-payload
- There are boilerplates running Payload/Next.js side-by-side (no serverless)
rip I wanted to try keystone after fin with current project
O_O payload seems pretty cool, its mongo though T~T, but I guess its fine if we can have a separate sql db for app and mongo for cms.
In my custom sol the admin frontend is built from scratch but it's pretty minimal. It gets auto generated from the cms schema we define but is also customizable. Can I dm further details because I don't want to crowd this thread incase people have more good recs OwO.
Postgres support coming next quarter 🙌 Feel free to DM 👍
For marketing websites with T3 i recommend using Sanity + GROQ. Use Zod to validate procedure output and you are done.
https://dev.to/fibonacid/the-best-way-to-fetch-data-from-sanity-using-zod-57jj
DEV Community
The best way to fetch data from Sanity (using zod)
I have been building websites with TypeScript and Sanity for a few years and have learned a few...
Hmm.. having to learn a new query language and also manually validating the result feels a bit cumbersome if there are other systems who can validate and also generate the type from your query automatically. But thanks for you suggestion!
Sounds great! I will give it a try 🙂
Just to make sure: do I understand you with "fully typed" correctly that in the example https://github.com/payloadcms/next-payload#using-the-local-api the
const pages = await payload.find(...)
returns with a fully typed object with all the types of it's sub keys?
Also regarding the upcoming Postgres Support: Will you also support cloud Postgres sub-variants like Planetscale and Neon.tech?GitHub
GitHub - payloadcms/next-payload: A utility to deploy Payload serve...
A utility to deploy Payload serverlessly within a Next.js app - GitHub - payloadcms/next-payload: A utility to deploy Payload serverlessly within a Next.js app
Correct, here is an example of the typing:
For Postgres, we're weighing options on the technical implementation of this. We're looking into whether we want to use one of the ORMs out there like Prisma or Drizzle. We have a "community call" coming up to chat about the options.
Looks perfect 🚀🚀🚀
Will definitely participate in the community call! Would be great if you could share a link with me 🙂
Sure, I'd recommend joining the discord. No date set yet, but we'll be announcing it there. I'll DM as I don't know the policies here.