My experience in 100xdevs cohort

·

5 min read

My experience in 100xdevs cohort

Hi there, this blog is about my experience in the 100xdevs cohort by Harkirat Singh. The cohort is divided into two parts: 0-1 and 1-100, and I am enrolled in both. Now that the first part of the cohort is completed, I thought it would be a good time to reflect on my journey over the last five months. Before joining this cohort, I had decent knowledge of MERN and had built some projects using it.

Week 1-3: JavaScript and Express

The first 3 weeks of cohort was focused on establishing a strong javascript foundation, covering basic and advanced concepts including github, express and mongodb. It was mostly a review for me because I was already familiar with these topics. The only new thing I learned was zod, which is used for input validation.

Week 4-6: Mastering Reactjs

As the weeks progressed, we transitioned into frontend development with Reactjs. From building simple to-do apps to mastering React hooks like useState and useEffect, each session was a deep dive into the world of declarative UI and component based architecture. Moreover, learning about state management techniques like Recoil, provided insights into building scalable and maintainable applications.

Week 7-9: Project, State Management and Typescript

In week 7-9 I learned about advanced React concepts such as state management using tools like Recoil, Context API, and custom hooks and built a project with tech stack we had utilized upto that point. Typescript was introduced in week 9 which i found quite interesting and easy at first but as we progressed further I realized there was still much to learn. Understanding its type system and how to effectively integrate it into larger projects proved to be a challenge.

Week 10-12: Aws and Database Tech

In week 10, I learned about SQL databases, particularly PostgreSQL and explored the functionalities of Prisma ORM. Week 11 focused on serverless backends, covering tools such as Cloudflare Workers and Hono, AWS deployments (EC2, Nginx) and certificate management. In week 12 I learned and deployed frontend on AWS, understood object stores like AWS S3, CDNs, advanced TypeScript, SQL joins, Prisma and connection pooling within serverless environments.

Week 13: Building Blog App

Week 13 was all about building a blog app (similar to Medium) with the entire tech stack we had learned and utilized up to that point. Building this app was indeed challenging as it was my first experience with TypeScript. Initially I encountered numerous type errors, but overcoming them proved to be a valuable learning experience. Additionally I created a common npm module, published it on npm and integrated it into both the frontend and backend of the app. Completing this project made me more confident of the things I was doing.

Github: https://github.com/yshkumr/blog-app

Week 14-15: Nextjs and Docker

Week 14 was about Nextjs and it was great to know about the much hyped Nextjs. One aspect that stood out for me was server actions and how seamlessly they can be implemented. While week 15 was deep dive into Docker where I built docker images, understood optimizing image layers and best practices for containerization, pushed the images to docker hub and containerized a Nextjs app.

Week 16: Monorepos, Turborepo and Next-Auth

In week 16 I learned about monorepos and the TurboRepo framework. I learned about TurboRepo's structure, features and benefits for managing multiple projects within a single repository. Created apps within the TurboRepo environment and created shared common modules to centralize code across projects. Additionally, I also learned about authentication using cookies and doing authentication using NextAuth in Nextjs.

Week 17: Initialized Payments App

During Week 17 the focus was on planning and initiating the development of a payments app using the tech stack we had learned and utilized up to that point. Initialized the payment app project using TurboRepo with Nextjs, Prisma ORM, PostgreSQL, Tailwind CSS and NextAuth for authentication. The main features of the app included enabling users to add money from their bank and transfer money to other users. Although the original plan was to build both the merchant and user apps but we had to skip merchant app due to time constraints.

Week 18: Completed Payments App

In Week 18 I completed building the payments app which was the most complex project i have worked on till now. It took more time than I expected, especially because features like peer-to-peer transactions and on-ramping proved to be fairly complicated. Nevertheless it was a valuable learning experience. Additionally I also gained knowledge about GitHub workflows, Nginx, created a CI/CD pipeline and successfully deployed the app to AWS EC2.

Github: https://github.com/yshkumr/payments-app-nextjs-turborepo

Week 19-20: Advanced Backend Comm and OpenAPI Spec

In Week 19 I learned about middlewares in Nextjs, advanced backend communications using websockets, redis, queues and pub subs. It was great to learn how these concepts are applied in real life scenarios, deepening my understanding of topics I had previously heard of but didn't fully comprehend while in Week 20 I learned about the OpenAPI specification. I created an OpenAPI spec file, which I then auto-generated using hono-zod-openapi, a process I found fairly complicated. Additionally I auto-generated a client and built a Swagger page for the API.

Conclusion

Before joining this cohort, I was quite inconsistent and lacked direction in my coding journey. I joined this cohort to ensure I coded atleast 5 times a week which I have done so far. Initially the weekly assignments and then the projects helped me to stay consistent. The best part of the cohort was its chilled yet fast-paced nature and it had content that matters. While the cohort has been beneficial overall, there were moments where I felt certain topics could have been explored in greater depth. I will write another blog once the next part of the cohort is completed, detailing my progress in those weeks.

You can connect with me over Twitter. Thank you.