Stephanie Spanjian
    Stephanie Spanjian

    The Lookbook - Engineering Management Consultant

    The Lookbook Landing Page Screenshot

    The Lookbook is the first insight, research, and feedback platform designed to predict fashion consumer behavior—powered by a community of real consumers sharing purchase, demographic, and preference data in real time.

    Led engineering at The Lookbook as interim Fractional CTO during a pivotal pre-launch phase. I directly consulted with the CEO on technical decisions, hiring, and VP of Engineering responsibilities—collaborating with a cross-functional team of 3 engineers and 1 designer to develop and ship innovative engineering solutions. I assessed technology trends for long-term engineering strategies, positioning the company for scalability during the user acceptance testing (UAT) phase.

    The Challenge

    A previous refactor from a JavaScript REST API to TypeScript GraphQL had been left incomplete—the API was untyped, packages were two or more major versions behind (Apollo Server 2.16.1, GraphQL 14.7.0, MongoDB 3.3.3), and the console was flooded with unnecessary logging that made debugging nearly impossible. There were duplicate functions (including misspelled copies), TypeScript listed in both dependencies and devDependencies causing version conflicts, and no observability, no pre-commit checks, and no automated code quality enforcement.

    The Modernization Plan

    I authored a full-stack modernization and architecture plan in Confluence, then translated it into a structured Jira epic with scoped stories and tasks. This approach was deliberate: it enabled the team to continue shipping features without interruption while I simultaneously upgraded the infrastructure for performance, security, and long-term maintainability. Once I established the patterns and standards, I delegated the rest of the epic to the team.

    Backend Architecture: Cutting the Codebase by 50%+

    I single-handedly refactored the entire JavaScript REST API into a TypeScript GraphQL service using ECMAScript Modules (ESM) with a strongly defined GraphQL schema and strict typing—without interrupting feature development. I upgraded Apollo Server from 2.16.1 to 4.7.1, GraphQL from 14.7.0 to 16.6.0, and MongoDB from 3.3.3 to 5.5, untangling complex package dependencies along the way.

    I applied DRY and SOLID principles to replace brittle logic with scalable, strictly typed resolvers. I replaced CRUD REST endpoints with proper GraphQL Queries and Mutations, replaced inline strings with enums, moved types into a shared folder instead of repeating them across the codebase, renamed queries to use verbs (e.g., `activeCompensation` became `getActiveCompensation`), and removed all unused dependencies and duplicate functions. The schema was now strictly defined—if there was a type error, the code wouldn't even transpile.

    The result: over 50% reduction in codebase size and a 50%+ decrease in feature development level of effort. CodeFactor grade improved from C- to B from the application-level work alone.

    Database Architecture

    I designed and implemented a singleton MongoDB client service with enum-based collection handling, replacing multiple client instances scattered throughout the code. This enforced type-safe database access and made it easy to get team feedback on which collections to clean up. We deleted unused analytics collections and identified that notifications needed to be completely rethought to use GraphQL subscriptions instead of constant polling.

    Hardening Security

    Session security was another challenge to solve. I refactored the authentication resolver to validate request origin domains and check admin roles before setting cookies—completely eliminating cross-origin errors and unwanted session behavior. For a platform handling sensitive consumer purchase data, demographic information, and behavioral insights—where trust and safety are the highest priority—security, performance, and site reliability were non-negotiable.

    Production-Grade Observability

    The application was drowning in console.log noise—a logger was writing literally everything to the console, making it unreadable. I built a production-ready, application-level Sentry service to replace console logging with actionable error tracking across all three environments. With the new enum-based logic, we could monitor and surface only critical errors while still using custom GraphQL error codes to handle expected cases like forbidden access, auth errors, and 404s without cluttering Sentry.

    I also integrated Sentry into the frontend, replacing all console.log and console.error usage with structured error tracking to improve observability and traceability of UI-level issues.

    Frontend Modernization (Across Multiple Repos)

    I worked across the API, Admin app, and Frontend Member app repos. On the Admin app, I untangled dependencies (TypeScript was listed in both dependencies and devDependencies, and TailwindCSS had mismatching versions across both that were causing bugs) and removed unnecessary plugins that were now included in the main Tailwind package after the upgrade.

    On the Frontend Member app, I upgraded the entire codebase to ECMAScript Modules (ESM) and brought all dependencies current—including upgrading @types/node from 17.0.35 to 20.2.3 and migrating the Storybook config from main.js to main.ts, moving to Storybook 7.0.17 for improved developer experience and addon support.

    Automated Code Quality Enforcement

    I established robust code quality gates using strict ESLint and Prettier configs, Husky pre-commit hooks, and CodeFactor CI checks on the develop branch via GitHub Actionscatching problems before they ever reached production. I set noImplicitAny to true in TypeScript, upgraded the target from ES2016 to ES2021, and hardened ESLint rules to eliminate unreachable code, unused variables, and eslint-disable suppressions. Some rules had to start as warnings and be incrementally tightened to errors given the volume of issues—but the end state was zero tolerance.

    Testing

    I employed Jest with SuperTest to build out the testing infrastructure—generating smoke tests, auth tests, and tests on all front-page queries and mutations. I enacted a test plan and delegated execution to the team.

    DevOps & Continuous Improvement

    I reviewed and provided recommendations on software architecture, end-user security, DevOps practices, and best practices in front-end and back-end development. I generated Jira tickets from regular Lighthouse runs and CodeFactor suggestions, conducted comprehensive code reviews to hold the team to a high standard, and provided guidance on identifying business needs (e.g., the reset password feature). I authored detailed architecture and CI/CD documentation in Confluence to ensure knowledge transfer.

    "Stephanie and I worked together on a project where she provided consulting services as a senior engineer. Her expertise in Typescript and NodeJs was obvious and for us it meant a great deal of successful refactoring and code improvements, which was no easy job.

    I would also add that Stephanie is a great team player, always approachable and willing to help. She takes the initiative and constantly overachieves, taking charge when necessary and ensuring tasks are completed efficiently. She’s not afraid to do the heavy lifting. Not to mention, her extensive work experience comes with great attention to detail and thoroughness. This in particular helped us catch a lot of potential issues and bugs, which is always a big plus. All in all, her technical proficiency and dedication to producing great results make her an asset to any team."

    Irina Calin, Irina worked with Stephanie on the same team at The Lookbook
    Irina Calin

    Tech Stack

    TypeScript, GraphQL (Apollo Server 4), MongoDB, API-First Data Modeling (GraphQL), Heroku, Node.js, JavaScript (ESM), Express.js, Next.js, React, TailwindCSS, Sentry, Jest, SuperTest, CodeFactor, ESLint, Prettier, Husky, GitHub Actions, Jira, Confluence, Vercel, HTML, CSS, SASS, Agile/Scrum

    Encoura Logo

    Encoura - Technical Lead / Senior Software Engineer

    Amazon Web Services (AWS)
    API Development
    Back-end Web Development
    +15

    Encoura provides custom technology solutions that combine Eduventures research, data science, strategic enrollment services, and multichannel marketing to serve over 2,000 higher ed institutions. As the E4E (Encourage for Educators) technical lead, collaborated across engineering teams to design, develop, and deploy new features, and enhancements for the company’s E4E product ecosystem. Led a team that expanded from 5 to 8 members, driving critical migrations and team improvements during a significant company transition. Key Achievements Collaborated with the CTO to secure approval for a comprehensive migration plan

    Read More
    Pavemint Logo

    Pavemint - Technical Lead / Senior Software Engineer

    Amazon EC2
    Amazon S3
    Amazon Web Services (AWS)
    +20

    In the Tech Lead role, architected, developed, and deployed new applications, new features, and enhancements to the company's e-commerce web applications built to scale with AWS CloudFront using Lambda@Edge Amplify triggered off of Github actions. Oversaw outsourced team varied from 8-12 engineers. Mentored engineers on & off shore.

    Read More
    TechStyle Fashion Group - React, Redux, Node.js, TypeScript, API Development

    TechStyle Fashion Group - Senior Software Engineer

    API Development
    Back-end Web Development
    CSS
    +17

    TechStyle has become one of the fastest growing e-commerce companies in history. Five portfolio brands, JustFab, ShoeDazzle, Fabletics, Savage X Fenty and FabKids provide over 4 million VIP members with on-trend fashion at an exceptional value

    Read More