Whether you need a high-performance web application, full-stack architecture advisory, or an engineer who ships with urgency and care.
Jump directly on my calendar to talk about goals, timeline, and fit.

2021
3 weeks
Frontend Development
Explore additional engineering and architectural projects.

Yantra Kheti, hydroponics system. Automate and get the best harvests for the crops you plant. Yantra Kheti is a robust system that can help you harvest the healthiest and best crops from your farm. Automate laborious tasks of water pumping, and nutrient supply, and watch your healthy plants grow. Quickly check on room temperature and humidity for the best crop yield with an easy-to-use web interface application or the Yantra Kheti mobile app.
Yantra Kheti strives to tackle the daily hassles of checking up on the farm without having to visit the farm. The system admin is able is easily view different features of the farm such as temperature, humidity, and pH levels of the water supply. Automating every task of farming from watering the plants to providing the right nutrients. Yantra Kheti also allows users to train an AI for a year to yield better crops on every harvest. The AI integrated into Yantra Kheti trains to harvest healthier crops. See better results every harvest with Yantra Kheti.
The system provides a web interface for the user to interact and visualize their data. The system is built on a Django backend and React frontend framework. SQL databases can be easily integrated into the system, our team recommends using Postgresql.
The system also provides users with an easy-to-use mobile app. The mobile app has similar features to the web app. Quickly view your stats from the farms from temperatures to humidity and pH levels. Control water flow, lights, and sensors for a suitable environment for the plants to grow.
Yantra Kheti provides a complete solution for an automated hydroponics farm. Control and visualize your farm stats. Automate your farm today with Yantra Kheti.

Most developers think building an e-commerce site is just about listing products and adding a "Buy" button. But the real challenge lies in the perceived performance. Users don't want to see "Loading..." every time they filter a movie category or return from a checkout page. In building this poster shop, I set out to solve the fragmentation between three pillars: Remote Data (API), Local State (the Cart), and External Handshakes (Payments).
To keep the application snappy and maintainable, I moved away from the "fetch-on-mounted" pattern and adopted a more sophisticated mental model using a modern Vue stack:
View Layer: Vue 3 (Composition API) + TailwindCSS for a utility-first, responsive UI.
Server State: > @tanstack/vue-query to handle caching, background refetching, and API synchronization.
Client State: Pinia for managing the persistent shopping cart.
Type Safety: TypeScript to ensure our movie metadata doesn't break components downstream.
The app treats the Movie Database API as a single source of truth for "Read" operations, while Pinia acts as the local orchestrator for the "Write" (Cart) operations.
The core logic involves fetching movie data and transforming it into "Poster" entities. By using Vue-Query, I eliminated the need for manual loading = true flags across components.
Technical Insight: Using staleTime and cacheTime allowed the poster list to remain in memory, making navigation between "Poster Info" and the "Home" gallery instantaneous.
TypeScript//
Example: The Poster Fetching Logic
const { data: posters, isLoading } = useQuery({
queryKey: ['posters', category],
queryFn: () => fetchPosters(category),
staleTime: 1000 * 60 * 5, // Cache for 5 minutes
}); The Poster Card component serves as the atomic unit of the UI. It doesn't just display data; it interacts with the Pinia useCartStore to handle real-time inventory feedback before the user ever hits the checkout.
Every project has a "wall." Mine was the payment integration. Initially, I attempted to use the native stripe-js library. On paper, itโs straightforward. In practice, getting the Stripe elements to play nice with the Vue component lifecycle led to a series of "undefined" errors during the mounting phase and issues with the secure redirect flow.
The Pivot: Instead of fighting the DOM reconciliation, I shifted to @vue-stripe/vue-stripe.
The Lesson: Sometimes, "Vanilla" isn't better. Using a wrapper that understands the Vue lifecycle (specifically the setup and unmounted hooks) turned hours of debugging into a 15-minute implementation. It reminded me that in a production environment, interoperability is just as important as the feature itself.
The focus on performance wasn't just theoretical. By leveraging Tailwind's tree-shaking and Vue-Queryโs caching, the application achieves a "Green Streak" on Lighthouse.
State Separation: Don't put API data in Pinia if it doesn't need to be global and mutable. Use Vue-Query for server state.
Type Everything: TypeScript caught three potential "undefined" errors in the Poster Card component during the Movie API integration.
Packages Matter: Don't be afraid to pivot to a framework-specific library if the native implementation fights the framework's reactivity.
This project was a sprint, but the marathon continues. The roadmap for Version 2.0 includes:
Custom API & DB: Moving away from public movie APIs to a custom backend for personalized poster uploads.
Customizer Tool: A canvas-based UI where users can "quote" a custom design.
Authentication: Integrating to save cart history across devices.

Experience In today's fast-paced world, staying organized is more crucial than ever. Whether you're a student juggling assignments, a professional managing deadlines, or a parent keeping track of household tasks, having an effective task management system can make all the difference. Introducing myTodo, your ultimate companion for managing tasks effortlessly, designed with simplicity and efficiency in mind.
Simplifying Task Management with myTodo User-Friendly Interface myTodo boasts a clean and intuitive interface built with React Native, ensuring a smooth user experience across both iOS and Android platforms. The app is designed to be straightforward yet powerful, allowing you to create, organize, and prioritize tasks with just a few taps. Seamless Synchronization Forget about juggling multiple devices or worrying about lost data. With myTodo's robust Node.js backend, your tasks sync seamlessly across all your devices in real-time. Whether you're updating your to-do list on your smartphone during your commute or checking off completed tasks on your laptop at work, myTodo keeps everything in sync, ensuring you're always up to date. With myTodo, you can adapt the app to fit your unique organizational style and workflow.
Features That Make myTodo Stand Out Reminders and Notifications Never miss a deadline again with myTodo's built-in reminder feature. Set due dates and receive timely notifications, ensuring you stay on top of your tasks even when you're on the go. Task Notes and Attachments Keep all relevant information at your fingertips by adding detailed notes. Whether it's meeting notes, project documents, myTodo allows you to store everything you need in one convenient place. Collaboration and Sharing Collaborate seamlessly with colleagues, friends, or family members by sharing tasks or entire lists. Delegate responsibilities, track progress, and celebrate achievements together, all within the myTodo app.
Security and Privacy First At myTodo, we prioritize your security and privacy. Your data is encrypted both in transit and at rest, ensuring that your personal and professional information remains confidential and secure.