
Hello 👋, My name is Rajat Bhatt
I am a full stack web developer. Welcome To my portfolio.
Explore myExperience
Senior Software Engineer
Bacancy Technogy
- Worked as a full stack developer in a SaaS product JulesAI
- Developed UI components using React, Material UI, TypeScript, and Apollo Client.
- Implemented GraphQL endpoints with Apollo Server, used Knex.js for SQL queries, and PostgreSQL for data storage.
- Worked on a feature where we implemented an email composer like Gmail to send emails to customers from the app.
- Fixed a critical bug related to file upload in Google Cloud which improved file upload time by around 2 seconds.
Systems Engineer
Tata Consultancy Services
- Worked on a complete revamp of a marketing site for a US based banking company, resulting in a 30% increase in user engagement.
- Worked as a web developer using React & NextJS to build content driven sites using headless CMS like WordPress, Contentful, Strapi CMS
- Focused on improving accessibility and core web vitals using Google's lighthouse tool
Skills
- React
- Typescript
- NextJS
- NodeJS
- Tailwind
- Postgres
- Git
- GraphQL
- REST
Browse my Personal Projects

Short It
- It is a url shortener application like bitly & dub.sh.
- Created using Next.js 14, React Server components and Server actions.
- Uses Redis (Vercel KV) to store the urls. Since It is an in memory database it queries data much faster than Disk based databases.
- Uses Next auth & github Oauth to implement authentication. It has also implemented protected routes so anonymous user can't access it.
- It also uses Next.js dynamic routes & route handlers to implement the redirect logic

The chocolate shop
- An e-commerce application created using Next.js 13, PostgreSQL, Tailwind CSS and Stripe checkout.
- Used React server components for better SEO and performance
- Added Persistent shopping cart using localStorage
- Added Stripe checkout for payment and shipping info
- Used Supabase for storing product data in Postgres db and image storage using supabase buckets

Type Challenges Progress Tracker
- This is a companion app for the popular Type challenges repository. Since the original repo does not provide a good way to track the progress, I made this to keep track of my progress while solving typescript challenges.
- It uses local storage to store the progress.
- Implemented filters using query parameters in the URL as a best practice
- Created with Next.js 14 & Tailwind CSS. Also added dark mode

Next.js Starter kit for production apps
- Created personalized Next.js starter kit for setting up common quality of life improvements on top of standard create-next-app installation.
- Added Prettier tailwind plugin for automatic class sorting
- Extended eslint with eslint:recommended, typescript-eslint, react, react-hooks & typescript-sort-keys
- Add automatic import sorting plugin in prettier to sort all the imports alphabetically
- Updated project specific settings.json for vscode to enable more settings (Mentioned in readme)

Country Finder
- A Web app which shows countries data using Rest Countries API to fetch data of all the countries in the world.
- Implemented skeleton loader using suspense and next routing
- Added dark mode
- Since the third party Rest countries API does not provide pagination, it uses Intersection Observer to add client-side infinite scrolling