diff --git a/public/rss.xml b/public/rss.xml new file mode 100644 index 00000000..00e69a88 --- /dev/null +++ b/public/rss.xml @@ -0,0 +1,106 @@ + + + + + Umair Jibran's Writings + + + https://umairjibran.com/writings + + + Latest articles from Umair Jibran's writings. + + + + en-us + + + Mon, 03 Nov 2025 13:05:25 GMT + + + + Mastering Local Backend Development: Docker & NGINX as a Reverse Proxy for Efficient Testing + + + https://umairjibran.com/blogs/docker-nginx-reverse-proxy-local-dev + + + Learn how to set up a local backend environment using Docker and NGINX as a reverse proxy. Streamline your development and testing with this step-by-step guide, optimized for efficient scaling and traffic management. + + + Sun, 20 Oct 2024 18:13:00 GMT + + + https://umairjibran.com/blogs/docker-nginx-reverse-proxy-local-dev + + + + + GitHub CODEOWNERS: A Comprehensive Guide + + + https://umairjibran.com/blogs/github-codeowners + + + Learn how to use GitHub's CODEOWNERS file to streamline your project's workflow. This guide covers everything you need to know about CODEOWNERS, including how to create and use it effectively. + + + Sat, 12 Oct 2024 18:13:00 GMT + + + https://umairjibran.com/blogs/github-codeowners + + + + + LocalStack: Your Gateway to Seamless Cloud Testing Locally + + + https://umairjibran.com/blogs/localstack-your-gateway-to-cloud-testing + + + Discover how LocalStack enables you to emulate AWS services locally, saving time and costs while improving productivity. + + + Sun, 22 Dec 2024 18:13:00 GMT + + + https://umairjibran.com/blogs/localstack-your-gateway-to-cloud-testing + + + + + Make it your own + + + https://umairjibran.com/blogs/make-it-your-own + + + Learn how you can customize this template to make it your own. This guide will help you understand how the template is organized and how to add new content. + + + Thu, 22 Aug 2024 19:29:00 GMT + + + https://umairjibran.com/blogs/make-it-your-own + + + + + Ultimate Guide to Removing Sensitive Data from Git History: Protect Your Codebase + + + https://umairjibran.com/blogs/removing-historic-commits + + + Discover the definitive methods to remove sensitive data like API keys from Git history. Learn how to safeguard your repository, rewrite commit history, and prevent future leaks using best practices. + + + Sun, 08 Dec 2024 18:13:00 GMT + + + https://umairjibran.com/blogs/removing-historic-commits + + + + \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 29595bee..f5a10526 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -49,7 +49,7 @@ export default function RootLayout({ data-website-id={umamiAnalytics.dataWebsiteId} />
{children} diff --git a/src/app/page.tsx b/src/app/page.tsx index a9211283..8c96ed92 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -80,12 +80,12 @@ function ExperienceTimelineItem({ {/* Card */}
setShowDetails(true)} >
{/* Company Logo */} -
+
{companyLogos[experience.company] ? ( ) : ( - + )}
{/* Content */}
-

+

{experience.position} {experience.volunteer && ( Volunteer @@ -117,13 +117,13 @@ function ExperienceTimelineItem({ e.stopPropagation()} > {experience.company} -

+

{startDate.toLocaleDateString("en-US", { month: "short", year: "numeric", @@ -137,7 +137,7 @@ function ExperienceTimelineItem({ : "Present"}{" "} · {duration}

-

+

{experience.oneLine}

@@ -147,7 +147,7 @@ function ExperienceTimelineItem({ {/* Timeline dot and line */}
-
+
{/* Empty space on the other side */} @@ -193,9 +193,9 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) {
{/* Previous Testimonial (Left, smaller) */}
-
- -

+

+ +

{testimonials[getTestimonialIndex(-1)].testimonial}

@@ -204,13 +204,13 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) { alt={testimonials[getTestimonialIndex(-1)].name} width={32} height={32} - className="rounded-full" + className="border-2 border-black" />
-
+
{testimonials[getTestimonialIndex(-1)].name}
-
+
{testimonials[getTestimonialIndex(-1)].designationAtTime}
@@ -222,9 +222,13 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) {
-
- -

+

+ {/* Decorative corner accent */} +
+
+ + +

{testimonials[currentIndex].testimonial}

@@ -233,16 +237,16 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) { alt={testimonials[currentIndex].name} width={56} height={56} - className="rounded-full" + className="border-4 border-black" />
-
+
{testimonials[currentIndex].name}
-
+
{testimonials[currentIndex].designationAtTime}
-
+
{testimonials[currentIndex].employerAtTime}
@@ -250,7 +254,7 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) { @@ -261,9 +265,9 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) { {/* Next Testimonial (Right, smaller) */}
-
- -

+

+ +

{testimonials[getTestimonialIndex(1)].testimonial}

@@ -272,13 +276,13 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) { alt={testimonials[getTestimonialIndex(1)].name} width={32} height={32} - className="rounded-full" + className="border-2 border-black" />
-
+
{testimonials[getTestimonialIndex(1)].name}
-
+
{testimonials[getTestimonialIndex(1)].designationAtTime}
@@ -299,10 +303,10 @@ function TestimonialsCarousel({ testimonials }: { testimonials: any[] }) { setIsTransitioning(false); }, 300); }} - className={`h-2 rounded-full transition-all duration-300 ${ + className={`h-4 transition-all duration-300 border-2 border-black ${ index === currentIndex - ? "w-8 bg-green-400" - : "w-2 bg-gray-700 hover:bg-gray-600" + ? "w-8 bg-black" + : "w-4 bg-white hover:bg-gray-200" }`} aria-label={`Go to testimonial ${index + 1}`} /> @@ -337,11 +341,15 @@ export default function Home() { }, []); return ( -
- {/* Hero Section - Dark Theme */} -
+
+ {/* Hero Section - Brutalist Theme */} +
+ {/* Decorative floating elements */} +
+
+ {/* Title */} -

+

Software engineer, technical
writer & open-source maintainer @@ -349,37 +357,41 @@ export default function Home() { {/* Description */}
{/* Social Links */} -
- {profile.social.map((item) => ( - - {item.icon === "GitHub" && } - {item.icon === "Linkedin" && } - {item.icon === "Twitter" && } - {item.icon === "Mail" && } - {item.icon === "Type" && } - {item.name} - - ))} +
+ {profile.social.map((item, idx) => { + const colors = ['bg-brutalist-yellow', 'bg-brutalist-cyan', 'bg-brutalist-magenta', 'bg-white', 'bg-brutalist-green']; + const shadowColors = ['brutalist-shadow', 'brutalist-shadow-cyan', 'brutalist-shadow-magenta', 'brutalist-shadow-yellow']; + return ( + + {item.icon === "GitHub" && } + {item.icon === "Linkedin" && } + {item.icon === "Twitter" && } + {item.icon === "Mail" && } + {item.icon === "Type" && } + {item.name} + + ); + })}
{/* Recent Writing Section */} {latestBlog && (
-
-

Latest Writing

+
+

Latest Writing

View all @@ -390,24 +402,30 @@ export default function Home() { )} {/* GitHub Contribution Graph Placeholder */} -
-

+
+ {/* Decorative sticker */} +
+ HOT! +
+ +

Contribution Graph

-
+
-

+

1038 contributions in the last year

- Less + Less
-
-
-
-
+
+
+
+
+
- More + More
{/* Simplified contribution grid */} @@ -416,18 +434,20 @@ export default function Home() { const intensity = Math.random(); const bgColor = intensity > 0.75 - ? "bg-[#39d353]" - : intensity > 0.5 - ? "bg-[#26a641]" - : intensity > 0.25 - ? "bg-[#006d32]" - : intensity > 0.1 - ? "bg-[#0e4429]" - : "bg-[#161b22]"; + ? "bg-black" + : intensity > 0.6 + ? "bg-brutalist-red" + : intensity > 0.4 + ? "bg-brutalist-orange" + : intensity > 0.25 + ? "bg-brutalist-yellow" + : intensity > 0.1 + ? "bg-gray-200" + : "bg-white"; return (
); @@ -438,15 +458,24 @@ export default function Home() {

{/* Work Experience Section - Timeline */} -
-

- Work Experience +
+ {/* Decorative elements */} +
+
+ +

+ + Work Experience + + NEW! + +

{/* Timeline container */}
{/* Vertical line */} -
+
{/* Timeline items */}
@@ -465,13 +494,13 @@ export default function Home() { {experience.map((exp, index) => (
{ // Will need to handle mobile dialog }} >
-
+
{companyLogos[exp.company] ? ( ) : ( - + )}
-

+

{exp.position}

e.stopPropagation()} > {exp.company} -

+

{new Date(exp.startDate).toLocaleDateString("en-US", { month: "short", year: "numeric", @@ -510,7 +539,7 @@ export default function Home() { }) : "Present"}

-

+

{exp.oneLine}

@@ -523,23 +552,37 @@ export default function Home() {
{/* Testimonials Section - Carousel */} -
-
-

What People Say

+
+ {/* Decorative background elements */} +
+
+
+
+
+ +
+

+ What People Say + 💬 +

{/* Footer / Contact */} -