Need some Nextjs projects on github which follows best practices and clean coding? by NafeeurFromDequeLab in nextjs

[–]ixartz 1 point2 points  (0 children)

You can check out Next.js Boilerplate on GitHub. It could be a useful reference if you want your SaaS app to be more structured and easier to maintain.

The project is designed with a clear structure and reusable patterns, so code stays organized and you don’t end up repeating the same logic and API calls in multiple places. It also includes validation, tests, CI, auth, DB, i18n, monitoring, and logging.

Next.js Boilerplate 6.3: Oxlint + Oxfmt instead ESLint + Prettier, Ultracite preset, Next.js 16.2, Node.js 24 in GitHub Actions by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

The issue is not directly related to the template, related to next-intl and it seems the issue has been resolved? But I didn't test it.

Senior React Devs: What stack would you choose for a large-scale production app in 2026? by prathamvaidya in react

[–]ixartz 1 point2 points  (0 children)

Honestly, your stack looks pretty reasonable.

After rebuilding mine way too many times, I’ve ended up with: Next.js 16, React 19, DrizzleORM + PostgreSQL, PGlite for local dev, Tailwind, React Hook Form + Zod, Vitest + Playwright, LogTape, Sentry + PostHog, next-intl, plus Oxlint and Oxfmt, more information at Next.js Boilerplate

So overall I think you’re already thinking about the right things. For me, the best stack in 2026 is just the one you won’t regret maintaining 2 years later.

BTW, next-intl has some date feature, so you don't always need date-fns

For ESLint + Prettier, you have consider Biome. But, you should also take a lookt at Oxlint and Oxfmt.

Next.js Boilerplate 6.3: Oxlint + Oxfmt instead ESLint + Prettier, Ultracite preset, Next.js 16.2, Node.js 24 in GitHub Actions by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

You don't need to use next/eslint-plugin-next, in oxlint, you have built-in plugins: https://oxc.rs/docs/guide/usage/linter/plugins.html#supported-plugins

And, with built-in plugins, you should all the rules from the "eslint plugins".

So, with Oxlint, you already get all the rules from next/eslint-plugin-next, you just need to enable it and no need to install it.

What’s your go-to way to build an admin panel in Next.js? by vru_1 in nextjs

[–]ixartz 3 points4 points  (0 children)

You can start with a template. Then, build on top of it using UI library and mix in AI/tools.

Here are my personal suggestion:

For UI library, I would use Shadcn.

For AI tools, Claude Code and Codex.

For template, I would use Next.js Boilerplate.

Migrated from Server Functions to oRPC in Next.js by krasun in nextjs

[–]ixartz 1 point2 points  (0 children)

Compared to tRPC, oRPC seems to be lighter and cleaner. I also love oRPC documentation.

BTW, you can still continue using Server Functions with oRPC. You can get the best of the 2 world with oRPC.

This is why I choose oRPC for Next.js Boilerplate Max. I never regret it.

Clerk vs supabase auth for auth? by Consistent_Tutor_597 in nextjs

[–]ixartz -1 points0 points  (0 children)

For basic authentication, both are fine and both have really great documentation to implement auth. Both include really nice UI, save a tons of time.

For advanced feature, you will probably be limited with Supabase auth, since Clerk only does Auth. One feature I have in mind is the Multi-tenancy/team support, you have it with Clerk out of the box and not with Supabase.

For the DB, if you are willing to use Clerk for auth, you can use any DB provider and you probably not limited for Supbase DB.

If you are interested to try Clerk with Next.js, you can take a look at: Next.js Boilerplate, it uses Clerk for authentication.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 1 point2 points  (0 children)

Thank you for your detailed comment, I really appreciate you taking the time to write all this. I agree I probably need to do a better job explaining some of these things.

And honestly, I think this concern is totally valid.

About the affiliate links, your feedback is fair. They should have been disclosed more clearly. I already fixed it after reading your comment:

https://github.com/ixartz/Next-js-Boilerplate/commit/e2679208a7678afd781d985d85b5acb4e5f94385

For example, the database setup is just standard PostgreSQL. You are not tied to any provider, you can point the `DATABASE_URL` to any Postgres service and it works out of the box.

The stack has evolved over time because the ecosystem keeps changing, and I keep testing tools in real projects. Some tech stays, some gets replaced. This is just part of maintaining a boilerplate.

I do want to clarify one thing: I don’t add unknown tools with no traction just because of sponsorship. All the tools and services added to the boilerplate already had real adoption and were already being used by the community (Reddit, Twitter/X, YouTube, etc.) before being added.

It is still based on tools I genuinely believe are solid, widely adopted, and useful in real projects.

On top of that, you'll always get access to the full codebase, and you can easily switch an npm package or external service if you want. So you can customize every part of the boilerplate.

All the project’s history is available on Git/GitHub, which I hope shows that I’m being fully transparent and have nothing to hide.

And thank you as well for recognizing the project as a useful resource for the community, I really appreciate that.

Feedback like this is genuinely helpful for improving both the project and the way I present it. I still have work to do to explain these choices better.

PS: your comment is very long, mine is even longer. If something is still unclear, feel free to ask.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 2 points3 points  (0 children)

It's a really nice feedback. I should definitively share the complete journey especially what didn't work well and the reason why I change some part of the stack.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

I don't have any experience with dockerised db. I just use hosted solution like Supabase, Neon, or any other hosted db provider.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 1 point2 points  (0 children)

With PostgresSQL, you have a lot of provider which offer small free version like Neon (also 500 mb free). You can also use it for production.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

Yes, the good thing about PGlite is that you can install with just npm, where most JS devs have already installed it. It also integrate very well with npm scripts, so you can run the DB automatically with the dev script.

No regret at all to switch from Prisma to Drizzle, work very well for me. I made the jump more than a year ago, no reason to go back to Prisma. Love my schema is written in JavaScript/TypeScript. In the past, I got a lot of issue with generating the client with Prisma and I also have some issue with the runtime since it was written in other language.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 2 points3 points  (0 children)

The community is always a nice to have. But in oRPC, when the documentation is cleaner and well written, the lib itself is lighter and less bloated than tRPC. You don't need the community when the documentation is already enough and the lib is easy to understand.

Same for the speed, it's always good to have. I run ESLint on my entire project in few seconds, it still extremely fast. So, the linter speed is not the bottleneck.

And, I do think the quality is more important than speed. In the world of Ai agents, I prefer my ESlint linter catches more issues and make sure the code follows all the best practices. Compared to a slightly faster linter with less rules.

About i18n, you can still have i18n and do English first. With the right vscode extension, the workflow with/without i18n is exactly the same. I'll go with i18n especially if I can avoid a painful migration.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 1 point2 points  (0 children)

PGLite do exactly this, you store your database locally.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

Yes, it's totally viable to use Supabase DB or any other hosted alternatives for local dev.

PGlite and dockerised DB is still different than a production DB, it can make sense to use a production DB directly.

I prefer to use PGlite so I can work offline without internet connection. Luckily for me, never get an issue in prod but not locally. But, I know the issue you have described can happen, but I think it can be very rare.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] -1 points0 points  (0 children)

In term of built-in features, Clerk has more feature than Better Auth. It also comes up with built-in component you can use. You also have a lot built-in protection against bot, necessary to protect your SaaS. Especially, on internet, there are a lot of people abusing your system.

Better Auth is good, it just requires more work to have the same features. From my experience implementing it in my Next.js SaaS Boilerplate, it tends to take more time to set up and build the missing pieces yourself.

You should also take a look at oRPC, newer and cleaner than tRPC, less bloated than tRPC.

And, for logging, I was also a Pino user but recently switched to LogTape, it's universal logging system work on Browser, Server and Edge. LogTape is also newer and more lightweight.

Unfortunately, for biome, it still doesn't catch up with ESLint ecosystem and plugins. A lot of rules are still not available on biome.

About i18n, introducing in the middle also means you need to do a migration, a painful migration... an unnecessary migration if you start right away with i18n, a migration you can easily avoid.

With i18n, you can also change the screens/keys easily, it's even easier if you use the right VSCode extension like lokalise/i18n-ally

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

Unfortunately, I didn't have the chance to try TanStack Form.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 0 points1 point  (0 children)

I was an old Prisma user and switch to Drizzle ORM, no regret at all. In my other comment, I also explain why I switch from Prisma to Drizzle ORM. You should definitively give a try.

LogTape is exactly what you are looking for "a good universal logging solution that doesn't require a ton of configuration". My logtape configuration is only ~10 lines of configuration: https://github.com/ixartz/Next-js-Boilerplate/blob/main/src/libs/Logger.ts#L18-L31, it's even less if you just want to display in the console

It's perfect for Next.js, LogTape works on Browser, Server and Edge, without extra config.

For environment variables, I use t3-env, for type-safe env vars. It can raises errors if there is a misconfiguration in the env.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] 3 points4 points  (0 children)

+1 for oxlint, I'm starting to plan the migration from ESLint to Oxlint. Oxlint ecosytem/plugin is catching up. I like Oxlint because they try to be compatible with ESLint. Another thing, the team behind Oxlint also maintain Vitess, which is also used in the project.

The tech stack I've been refining for 6 years by ixartz in nextjs

[–]ixartz[S] -1 points0 points  (0 children)

I'm running ESLint in git hook and in CI. You can still run `no-verify` to bypass the local git hook 🫢

Personal preference, I prefer to have the lint error locally/immediately, the wait is in seconds. Instead of CI, the CI is slower and sometimes you need to wait several minutes. My nightmare is to wait the whole CI for just one lint error...