About Me
Full-stack developer with a passion for creating elegant, efficient, and scalable web applications
Full-Stack Developer
Building scalable web solutions at ATI Ltd with modern technologies
With 3.5+ years of professional experience, I specialize in:
- Developing performant applications with React, Next.js, and TypeScript
- Building robust backend systems using Node.js, Express, Nest.js
- Creating responsive UIs with Tailwind CSS and component libraries
- Implementing RESTful APIs and real-time features
Currently enhancing my expertise in Nest.js, Prisma, and SQL to architect more scalable backend solutions. Passionate about clean code architecture, performance optimization, and mentoring junior developers.
My Journey
A timeline of my professional experience and key milestones
Joined ATI Ltd as React Developer
Started my journey at ATI Ltd, focusing on building modern user interfaces with React and related technologies.
Promoted to Full-stack Developer
Expanded my role to include backend development with Node.js, Express, and MongoDB, taking on full-stack responsibilities.
Delivered Major SaaS Projects
Led the development of several SaaS platforms across various sectors, including healthcare, education, and e-commerce.
Exploring New Technologies
Currently deepening my knowledge in Prisma ORM, PostgreSQL, and Nest.js to build more robust and scalable applications.
Professional Code Quality
Clean, efficient, and maintainable full-stack development
import { useState } from 'react';
/**
* A custom hook for handling optimistic UI updates with mutations
*
* @param mutationFn - The function that performs the actual API mutation
* @param onSuccess - Optional callback for successful mutations
* @param onError - Optional callback for failed mutations
* @returns An object containing the mutation function and loading state
*/
export function useOptimisticMutation<T, R>(
mutationFn: (data: T) => Promise<R>,
onSuccess?: (data: R) => void,
onError?: (error: Error, rollbackData: any) => void
) {
const [isPending, setIsPending] = useState(false);
// The main mutation function with optimistic updates
const mutate = async (
data: T,
optimisticUpdate: () => void,
rollbackFn: (error: Error) => void
) => {
// Store previous state for potential rollback
setIsPending(true);
try {
// Apply optimistic update immediately
optimisticUpdate();
// Perform the actual mutation
const result = await mutationFn(data);
// Call success callback if provided
onSuccess?.(result);
return result;
} catch (error) {
// If mutation fails, roll back the optimistic update
rollbackFn(error as Error);
// Call error callback if provided
onError?.(error as Error, data);
// Re-throw the error for the component to handle if needed
throw error;
} finally {
setIsPending(false);
}
};
return {
mutate,
isPending
};
}A custom React hook that implements optimistic UI updates for mutations, improving perceived performance.
Professional Code Quality
These code samples demonstrate my commitment to writing clean, maintainable, and production-ready code with:
- Type Safety - Leveraging TypeScript's advanced type system for robust applications
- Performance Optimization - Implementing techniques like caching and optimistic updates
- Error Handling - Comprehensive error management with proper user feedback
- Code Organization - Well-structured, reusable, and maintainable patterns
Fun Facts
A few things that define me beyond the code
Self-learner
I'm constantly exploring new technologies and frameworks through self-study and hands-on projects.
Clean Code Advocate
I'm focused on writing clean, efficient, and scalable code that follows best practices and design patterns.
Product-oriented Thinking
I approach development with a focus on the end-user experience and business goals, not just technical implementation.
Interested in Working Together?
Let's discuss how I can contribute to your next project or join your team.