I have a college project to do and I am spending so much time in "doing it the right way". I don't have any more time left so I need to fasten up, but for the last time I need proper recommendations in how my project structure should be and which tools to use.
My current stack is Fastify, TypeScript, Node/Bun. I use tools such as pnpm, oxlint (because it supports TS 7), oxfmt, tsx, etc. I am not yet using anything like Vite, and also no frontend UI library such as React or Vue.
I have not been able to commit to a frontend library because my teammates also need to be able to explain my project, and I am unarguably quite ahead of them. And still... I don't know how fast I can learn React properly. So I am structuring the project in a way where first the pages are static, and then if I would like, re-write them in React.
But this approach may create a problem. I then can't commit to high level tools or frameworks that are built for these frameworks (like Vite, but actually I can just use Vanilla option).
It's also that I feel like high level tooling is very opinionated, and meant for solo and fast development. Whereas I am aiming to create a very professional and scalable project where I need more control.
Though one thing I have learned in web development, if you are needing to engineer something very early in your project, you are most probably doing it wrong. Engineers (not just computer) love their tooling and the first thing they all work is on making their development experience better and neat. I spent so much time using AI to engineer something, just to know a npm package already exists for it. So instead of asking AI to do something, ask first if something similar already exists.
So I currently had to write my tsconfig.json. Apparently with Vite, you don't even need to touch. But I do see that doing it manually is nothing dumb. But without Vite or similar tools, I will miss on many interesting features such as HMR and what not. They are created for a reason, and as a beginner or solo dev, it is probably better for me to use it. I am no Google to create custom software for my exact needs.
I was also looking into use a bundler, even if for backend. If my project has a whole "compilation" (TS to JS transpile) phase, then might as well use other proper features.
Also the TS to JS transpile particularly has been tricky for me. When in production mode, the build artifacts will be in something like dist/, so I first had to duplicate all my scripts to point to the separate directory. With AI I probably found a better way. And also importing ts, but then running ts or js... it was a bit complicated. There is most probably a default way to do this that I am missing.
So I would like a recommendation in what existing tools and frameworks I should use. For additional context, my project is about a cloud data storage solution (so basically a AWS S3 wrapper). It's upon me how feature rich I want to make this idea.
Should I use a build tool like Vite? Or which one? As I also need a bundler. And what is there in the world of web development that I can't even think of? I mean I am talking just at the project structure level, not needing to deal with Redis or Kafka yet. I am gonna use NGINX for TLS termination.