Shubham-Rasal / ExamArchive

https://exam-archive-tan.vercel.app
MIT License
0 stars 1 forks source link

Decide tech stack #2

Open Shubham-Rasal opened 9 months ago

Shubham-Rasal commented 9 months ago

The tech stack should be easy to develop and should be future-proof. Working on new tech stacks can help contributors learn about new stuff.

Bismay5467 commented 9 months ago

Let's focus on the MERN stack for our web development project, given its widespread adoption among the developer community. This choice ensures abundant resources for debugging and learning new technologies. Considering the advantages of type safety, I recommend using TypeScript instead of JavaScript. This would of great help during debugging.

For the frontend, I suggest utilizing a React library such as Material UI or Shadcn to avoid building components from scratch, streamlining the development process. We can optimize the performance by storing static content, like fonts and logos, on a CDN, preferably Cloudflare or CloudFront.

However to ensure robust server performance, we should discuss and estimate the total number of users or establish benchmarks for concurrent requests and more stuff related to this. This will help prevent server overload during peak hours, such as the night before exams.

Establishing a centralized monitoring system to detect server issues and receive notifications for downtime is a consideration, but it's not our immediate priority. We can defer the implementation of a monitoring system until we start scaling up the project.

Thoughts @Shubham-Rasal @VaibhavNITK ??

VaibhavNITK commented 9 months ago

I'm good with the front-end technology listed above; we can continue using Express and Typescript for the backend, and I'm not sure about MongoDB for the database. To be honest, I have no idea how to deal with scalability or other issues. I need to look into that. If you know of any excellent resources or techs, please let me know.

Bismay5467 commented 9 months ago

I think we can start working with what we know. We can decide how to scale our system after the mid evaluation. I can take care of the MongoDB part. It won't be a problem. We can keep learning new technologies on the go as we encounter them.

For scaling part you may refer to my proposed system design here

(@Shubham-Rasal I would like to know your view on this system design, if I am missing anything?)

For Nginx and Redis I recommend watching videos from their respective official channels on YouTube. They have some amazing videos covering all those concepts we might need in our project (rate limiting, load balancing just to name a few) I am not sure how to scale MongoDB. I am aware that MongoDB services offer replication, however doing it on our own using MongoDB free tier version would be tricky. Let' see!🤞

For storing files we can use Cloudinary or AWS S3 buckets as of now (the free versions off course!😅), till we get permissions for NITK servers.

Bismay5467 commented 9 months ago

Also I would recommend referring the channel of Gaurav Sen on YouTube if you want to understand the basic concepts of System Design.

VaibhavNITK commented 9 months ago

Many thanks, @Bismay5467. Sincerely, I need to read up on several of the aforementioned skills because I lack them.

Bismay5467 commented 9 months ago

@VaibhavNITK take your time. Let me know if you need any help/guide.

Shubham-Rasal commented 9 months ago

Since most of the dev will be done by you guys it makes sense that you do it in the tech stack you know. MERN stack is an old stack but is battle-tested. I currently exclusively code in nextjs, so my opinion will be biased. Nevertheless, tomorrow's meeting will be the final call for the tech stack decision.

Bismay5467 commented 9 months ago

@Shubham-Rasal I am curious to know why would you prefer Next.js over React.js? What are your views?

Shubham-Rasal commented 9 months ago

Features

  1. Show papers in the landing page
  2. Search Feature
  3. Filters

Profile section

Tech stack