From 9d4c5052e000fdbe2f387c4ee866d839b22268f5 Mon Sep 17 00:00:00 2001 From: Codestz Date: Mon, 11 May 2026 18:12:09 -0500 Subject: [PATCH] feat(experience): promote to Senior on Recurly post + MilestoneCard component Updates the existing Recurly project page to reflect the May 2026 promotion to Senior Software Engineer, and ships a new reusable MDX component used to celebrate it visually. Recurly post (src/content/projects/recurly.mdx): - Title and H1 changed to "Senior Software Engineer at Recurly" - Description mentions the May 2026 promotion - Role bullet updated with the promotion note - Adds a right after the intro paragraph showing the role transition (II -> Senior) with highlights New MilestoneCard component (src/components/mdx/MilestoneCard/): - Slim Neo-Brutalist card for career milestones - kind supports: promotion, award, launch, talk, milestone - Optional from/to transition row (strikethrough -> bold) ideal for promotions, optional date chip in the header, optional highlights list, optional subtitle - Registered in src/components/mdx/index.ts and mdx-components.tsx Also approves sharp and unrs-resolver via pnpm-workspace.yaml allowBuilds so pnpm 11's deps-status check stops failing the pre-commit hook on this branch. Co-Authored-By: Claude Opus 4.7 (1M context) --- mdx-components.tsx | 2 + pnpm-workspace.yaml | 6 +- .../mdx/MilestoneCard/MilestoneCard.tsx | 84 +++++++++++++++++++ .../mdx/MilestoneCard/MilestoneCard.types.ts | 12 +++ src/components/mdx/MilestoneCard/index.ts | 2 + src/components/mdx/index.ts | 2 + src/content/projects/recurly.mdx | 60 ++++++++++--- 7 files changed, 154 insertions(+), 14 deletions(-) create mode 100644 src/components/mdx/MilestoneCard/MilestoneCard.tsx create mode 100644 src/components/mdx/MilestoneCard/MilestoneCard.types.ts create mode 100644 src/components/mdx/MilestoneCard/index.ts diff --git a/mdx-components.tsx b/mdx-components.tsx index 9dbdedb..677ac3d 100644 --- a/mdx-components.tsx +++ b/mdx-components.tsx @@ -10,6 +10,7 @@ import { Callout, ProcessFlow, StatBlock, + MilestoneCard, } from '@/components/mdx'; import { Mermaid } from '@/components/mdx/Mermaid'; @@ -32,6 +33,7 @@ export const mdxComponents: MDXComponents = { Callout, ProcessFlow, StatBlock, + MilestoneCard, // Headings h1: ({ children }) => (

diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b784396..3e1fe7e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,6 @@ packages: - '.' -ignoredBuiltDependencies: - - sharp - - unrs-resolver +allowBuilds: + sharp: true + unrs-resolver: true diff --git a/src/components/mdx/MilestoneCard/MilestoneCard.tsx b/src/components/mdx/MilestoneCard/MilestoneCard.tsx new file mode 100644 index 0000000..8bc3619 --- /dev/null +++ b/src/components/mdx/MilestoneCard/MilestoneCard.tsx @@ -0,0 +1,84 @@ +'use client'; + +import { ArrowRight, Award, Calendar, Mic, Rocket, Sparkles, TrendingUp } from 'lucide-react'; +import { cn } from '@/lib/utils'; +import type { MilestoneCardProps, MilestoneKind } from './MilestoneCard.types'; + +const kindConfig: Record = { + promotion: { label: 'Promotion', Icon: TrendingUp }, + award: { label: 'Award', Icon: Award }, + launch: { label: 'Launch', Icon: Rocket }, + talk: { label: 'Talk', Icon: Mic }, + milestone: { label: 'Milestone', Icon: Sparkles }, +}; + +/** + * MilestoneCard Component - Career milestone callout + * Neo-Brutalist visual for a single career event: promotion, award, launch, talk. + * Optional FROM → TO transition row makes it especially fit for promotions. + * Slim layout: header strip + title row + optional transition + optional highlights. + */ +export function MilestoneCard({ + title, + subtitle, + kind = 'milestone', + date, + from, + to, + highlights, + className, +}: MilestoneCardProps) { + const { label, Icon } = kindConfig[kind]; + + return ( +
+
+ + + {label} + + {date && ( + + + {date} + + )} +
+ +
+

+ {title} +

+ {subtitle && ( +

{subtitle}

+ )} + + {(from || to) && ( +
+ + {from ?? '—'} + + + {to ?? '—'} +
+ )} + + {highlights && highlights.length > 0 && ( +
    + {highlights.map((item, idx) => ( +
  • + + {item} +
  • + ))} +
+ )} +
+
+ ); +} diff --git a/src/components/mdx/MilestoneCard/MilestoneCard.types.ts b/src/components/mdx/MilestoneCard/MilestoneCard.types.ts new file mode 100644 index 0000000..54219c2 --- /dev/null +++ b/src/components/mdx/MilestoneCard/MilestoneCard.types.ts @@ -0,0 +1,12 @@ +export type MilestoneKind = 'promotion' | 'award' | 'launch' | 'talk' | 'milestone'; + +export interface MilestoneCardProps { + title: string; + subtitle?: string; + kind?: MilestoneKind; + date?: string; + from?: string; + to?: string; + highlights?: string[]; + className?: string; +} diff --git a/src/components/mdx/MilestoneCard/index.ts b/src/components/mdx/MilestoneCard/index.ts new file mode 100644 index 0000000..09d5931 --- /dev/null +++ b/src/components/mdx/MilestoneCard/index.ts @@ -0,0 +1,2 @@ +export { MilestoneCard } from './MilestoneCard'; +export type { MilestoneCardProps, MilestoneKind } from './MilestoneCard.types'; diff --git a/src/components/mdx/index.ts b/src/components/mdx/index.ts index f4d02bf..6a0261d 100644 --- a/src/components/mdx/index.ts +++ b/src/components/mdx/index.ts @@ -20,3 +20,5 @@ export { ProcessFlow } from './ProcessFlow'; export type { ProcessFlowProps, ProcessStep } from './ProcessFlow'; export { StatBlock } from './StatBlock'; export type { StatBlockProps, Stat } from './StatBlock'; +export { MilestoneCard } from './MilestoneCard'; +export type { MilestoneCardProps, MilestoneKind } from './MilestoneCard'; diff --git a/src/content/projects/recurly.mdx b/src/content/projects/recurly.mdx index 7136753..c053515 100644 --- a/src/content/projects/recurly.mdx +++ b/src/content/projects/recurly.mdx @@ -1,25 +1,39 @@ --- -title: "Software Engineer II at Recurly" -description: "Building Recurly Commerce, a subscription management platform integrated with Shopify for recurring revenue businesses" -publishedAt: "2025-07-01" +title: 'Senior Software Engineer at Recurly' +description: 'Building Recurly Commerce, a subscription management platform integrated with Shopify for recurring revenue businesses. Promoted to Senior Software Engineer in May 2026.' +publishedAt: '2025-07-01' current: true -category: "current" -tags: ["shopify", "subscriptions", "saas", "ecommerce", "fullstack"] +category: 'current' +tags: ['shopify', 'subscriptions', 'saas', 'ecommerce', 'fullstack'] featured: true type: 'experience' -author: "Esteban Estrada" -thumbnail: "/images/projects/recurly.jpg" +author: 'Esteban Estrada' +thumbnail: '/images/projects/recurly.jpg' --- -# Software Engineer II at Recurly +# Senior Software Engineer at Recurly -Currently working at Recurly as a Software Engineer II, focused on building and enhancing **Recurly Commerce**, a subscription management platform that helps Shopify merchants manage recurring revenue through subscriptions, memberships, and subscription boxes. +Currently working at Recurly as a **Senior Software Engineer**, focused on building and enhancing **Recurly Commerce**, a subscription management platform that helps Shopify merchants manage recurring revenue through subscriptions, memberships, and subscription boxes. + + ## Experience Overview - **Company**: Recurly -- **Role**: Software Engineer II -- **Timeline**: July 2025 - Present (8 months) +- **Role**: Senior Software Engineer _(promoted from Software Engineer II, May 2026)_ +- **Timeline**: July 2025 - Present - **Location**: Medellín, Antioquia, Colombia - **Product**: Recurly Commerce (Shopify Subscription Platform) - **Tech Stack**: Full-stack web development, Shopify API, Payment Processing @@ -39,6 +53,7 @@ The platform integrates directly into Shopify's native checkout experience and p ## Key Responsibilities ### Shopify Integration Development + - Building and maintaining Shopify app extensions (checkout and customer account integrations) - Developing seamless integration between Recurly Commerce and Shopify's native checkout - Implementing webhook handlers for Shopify events (orders, products, customers) @@ -46,6 +61,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Working with Shopify's GraphQL Admin API for store data access ### Subscription Management Features + - Developing subscription lifecycle management (create, pause, skip, cancel) - Building bundle configuration systems (gift boxes, fixed bundles, customizable options) - Implementing pricing models (subscribe and save, tiered pricing, usage-based) @@ -53,6 +69,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Developing subscription modification flows (swaps, add-ons, upgrades/downgrades) ### Customer Portal Development + - Building low-code customer portal for subscription self-service - Implementing skip and swap functionality for subscription flexibility - Creating gift subscription management features @@ -60,6 +77,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Ensuring mobile-responsive portal experience ### Payment Processing & Billing + - Working with payment processing pipelines for recurring billing - Implementing retry logic for failed payments - Developing dunning management for recovering failed charges @@ -67,6 +85,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Handling proration calculations for subscription changes ### Analytics & Reporting + - Building analytics dashboards for merchant insights - Implementing metrics tracking (MRR, churn rate, LTV) - Creating executive reporting features @@ -74,6 +93,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Integrating with third-party analytics platforms (Klaviyo, Fivetran) ### Churn Reduction Features + - Developing retention tools (pause subscriptions, incentives) - Building cancellation flow optimizations - Implementing win-back campaigns and offers @@ -83,9 +103,11 @@ The platform integrates directly into Shopify's native checkout experience and p ## Key Challenges & Solutions ### Challenge 1: Shopify API Rate Limiting + **Problem**: High-volume operations (bulk imports, sync operations) hitting Shopify API rate limits. **Solution**: + - Implemented request queuing with exponential backoff - Built batch processing for bulk operations - Added caching layer for frequently accessed data @@ -93,9 +115,11 @@ The platform integrates directly into Shopify's native checkout experience and p - Optimized API calls to use bulk operations where possible ### Challenge 2: Subscription State Synchronization + **Problem**: Keeping subscription state consistent between Recurly Commerce and Shopify (orders, inventory, customer data). **Solution**: + - Implemented event-driven architecture with webhooks - Built idempotent webhook handlers to prevent duplicate processing - Created conflict resolution strategies for out-of-sync states @@ -103,9 +127,11 @@ The platform integrates directly into Shopify's native checkout experience and p - Implemented retry mechanisms with dead letter queues ### Challenge 3: Complex Pricing Calculations + **Problem**: Handling various pricing models (tiered pricing, promotions, trials, proration) with correct tax calculations. **Solution**: + - Built comprehensive pricing engine with rule-based calculations - Implemented preview functionality for subscription changes - Created extensive test coverage for pricing scenarios @@ -113,9 +139,11 @@ The platform integrates directly into Shopify's native checkout experience and p - Documented pricing logic for support team reference ### Challenge 4: Checkout Extension Performance + **Problem**: Checkout extensions need to load fast to not impact conversion rates. **Solution**: + - Optimized bundle size for checkout extensions - Implemented lazy loading for non-critical features - Added performance monitoring and alerting @@ -125,6 +153,7 @@ The platform integrates directly into Shopify's native checkout experience and p ## Skills Developed **Technical Skills**: + - Shopify app development and ecosystem - Subscription billing system architecture - Payment processing and PCI compliance @@ -133,6 +162,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Multi-tenant SaaS architecture **Domain Knowledge**: + - Subscription business models and metrics (MRR, churn, LTV) - E-commerce best practices - Recurring payment processing @@ -140,6 +170,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Customer retention strategies **Tools & Platforms**: + - Shopify Admin API (GraphQL & REST) - Shopify App Extensions - Third-party integrations (Klaviyo, Postscript, Gorgias) @@ -147,6 +178,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Analytics platforms **Soft Skills**: + - Working on a product used by thousands of merchants - Balancing merchant needs with platform scalability - Cross-functional collaboration with product, design, and support teams @@ -156,18 +188,21 @@ The platform integrates directly into Shopify's native checkout experience and p ## Impact & Results ### Platform Performance + - Maintaining high availability for subscription processing (critical for recurring revenue) - Fast checkout extension load times to prevent conversion drop-off - Reliable webhook processing for real-time sync - Scalable architecture handling thousands of subscription operations daily ### Merchant Experience + - Simplified subscription setup process for new merchants - Intuitive admin interface for managing subscriptions - Comprehensive analytics for business insights - Flexible subscription options to match various business models ### Customer Experience + - Seamless Shopify-native checkout experience - Easy-to-use customer portal for subscription management - Reliable subscription deliveries and billing @@ -176,6 +211,7 @@ The platform integrates directly into Shopify's native checkout experience and p ## Technical Highlights **Shopify Integration Architecture**: + - OAuth 2.0 authentication for merchant stores - Webhook subscriptions for real-time updates - App extensions embedded in Shopify admin and checkout @@ -183,6 +219,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Metafield management for subscription data **Subscription Engine**: + - Recurring billing scheduler with timezone handling - Subscription lifecycle state machine - Flexible pricing rule engine @@ -190,6 +227,7 @@ The platform integrates directly into Shopify's native checkout experience and p - Automated notification system **Third-Party Integrations**: + - Klaviyo for email marketing automation - Postscript for SMS notifications - Gorgias for customer support context