GAZAR

Principal Engineer | Mentor

EpicStack by Gaz

EpicStack by Gaz

I like how Kent C has put up a new stack with his choice of tools which is amazing, please go and give it a read and explore the options.

However, that gave me an idea of what I would choose if I wanted to start a project. to just document my thoughts and get your ideas if you want to share.

  • Framework: NextJS! I wouldn’t use all the experimental app features just yet, however, I like how stable Nextjs has been and that gives me the confidence to start a new project. Also familiarity of developers with this framework, just makes it easier to collaborate in a team and contribute together.
  • Fly.io or AWS ECS, I mean I love them both, if it’s a huge project, of course, I go with AWS and if it’s smaller I prefer fly.io. I have been using fly.io for a few of my projects like Mockland.dev and I am quite happy with their service.
  • Postgres: I don’t consider myself an early adopter, I like how Kent C uses SQLite and LiteFS, however, I am still more confident with Postgres.
  • Grafana, Fly.io provides it out of the box, which I am not really looking into it, but it’s easy to have it and monitor if you ever wondered about it.
  • GitHub Actions, the fact that it’s so easy to use and it just works as you wanted it, fascinates me.
  • Password Authentication, old-fashioned JWT and using PassportJS. it has never failed me, simple and great to use. Having said that, of course, if your project is a scaled one, probably better to go with Auth Providers, auth0, or okta.
  • For transaction emails, I still go with sendinblue, even though the free version is still good enough for most of the hobby projects. and if you fancy more, their pricing seems reasonable enough.
  • Formik, for form implementations, is simple and elegant, and I found many devs are familiar with it and it speeds up the process.
  • Database ORM with Prisma, for sure, used it and I really enjoyed it, much better than Sequelize. I mean using NextJS Apis and Prisma right there, it’s a great experience as well. If your backend logic isn’t that complicated probably it’s a good idea to just use NextJS Apis and if not. I’d step into Fastify and have the backend separated from the frontend repo.
  • Role-based User Permissions.
  • Image Hosting, I am a fan of cloudinary.com. it’s just easier to host your images there, they have an easy-to-use API to upload and just pass you a link to save it in your database. and if you don’t have many uploads, it’s basically FREE too.
  • Probably if your project is bigger, and you have to pay, it’s still good to go with Cloudinary, however, you can always just write your own and store them in S3.
  • Caching, if we talk Backend API responses. probably I just go for ‘fastify-caching’ with uses redis. and if we talk frontend Caching, Cloudflare never disappoints
  • Styling, not a fan of Tailwind. I know Kent said it as well. As good as it is, I don’t see it as a good option for big projects. the fact that you can just add a class and fix an issue, it’s not a good practice to have a clean code. having component base styling with EmotionJS, has proven to end up with a cleaner codebase. I don’t mind using ChakraUI and it’s also amazing to use.
  • End-to-end testing with Cypress, I see it as a great option to have end-to-end testing, and PlayWright, also similar, hasn’t shown me any significant difference to move from Cypress.
  • Local third party request mocking with MSW, there is absolutely no doubt :)
  • Unit Testing, Jest, and Testing Library, probably are still the most solid solutions, Vitest is also a good option if you fancy a bit more speed on your test running.
  • Code formatting with Prettier
  • Linting with ESLint
  • Static Types with TypeScript
  • Runtime schema validation with zod, this is awesome, if you get a chance in your project to have Zod and adopt it early, it’d be an amazing experience. However, in reality, most of the projects are so rushed at the start that having Zod becomes a bit of a luxury.
  • Error monitoring with DataDog. with is another alternative for Sentry, I just enjoy using it and it gives me a lot of different options.
  • E-commerce and Payment Support with Paypal. I think Paypal is just fine to use, Strip is also an option, however, I have never had a problem with Paypal.
  • For Monitoring and Analytics, still GA or Google Analytics. Simple and at the end of the day, you know one of the search engines is kind of processing your data right. so you have fewer things to worry about.

Pretty much this is the list, I am sure there are many which have been left off and there are many here from my list which are controversial.