# Xinjiang Shao - Personal Website > Personal website of Principal Software Engineer Xinjiang Shao, featuring technical blog posts, professional talks, interactive demos, and thoughts on software engineering, leadership, and technology. ## About Xinjiang Shao Xinjiang is a Principal Software Engineer at The Aspen Group, focusing on innovative healthcare solutions including dental care (Aspen Dental, ClearChoice Dental Implants), urgent care (WellNow), animal hospitals (Lovet Pet Health Care), and aesthetics (Chapter Aesthetics Studio). Previously worked as Principal Software Engineer at Peapod Digital Labs (now Ahold Delhaize USA) and Senior Software Engineer at Peapod, developing e-commerce solutions for grocery delivery and pickup services powering Stop and Shop, Food Lion, GIANT, Giant Food Stores, Martins and Peapod. Earlier experience includes Full Stack Software Engineer at EXACT Sports, building camp registration and athletic recruiting platforms. Most recently built and shipped GroceryTrack (https://grocerytrack.food), an AI-powered grocery receipt scanner for web and iOS, as a solo indie product. When not coding, enjoys reading, writing, cooking creatively, running regularly, and swimming (started in 2024). Shares thoughts and experiences through this website. Contact: hi [at] xinjiangshao [dot] com ## Case Studies Four in-depth case studies at `/case-study`: - **GroceryTrack** (`/case-study/grocerytrack`) - An AI receipt scanner designed, built, and shipped solo: a working web MVP in a single day, the iOS app in the App Store ~1.5 months later. Flutter + Next.js + Firebase, with Gemini's multimodal API as the parsing engine and an MCP server for AI assistants. 444 receipts and 3,012 items parsed in the first 3 months. - **Phoenix** (`/case-study/phoenix`) - This very site, rebuilt from a static Hugo blog into an AI-native Next.js 16 platform: React Server Components, three AI models (Claude, OpenAI, Gemini) behind one Vercel AI SDK integration, full English/Chinese localization, and 15+ interactive apps and tools. - **PRISM** (`/case-study/prism`) - A white-label grocery eCommerce engine at Peapod Digital Labs / Ahold Delhaize USA (2019–2023): six store brands plus Peapod consolidated onto one omnichannel platform serving 20M+ weekly shoppers, a strangler migration off Oracle ATG, AngularJS → Vue → Nuxt micro-frontends, native mobile apps on a GraphQL gateway, and a frontend org that grew from 10 people to 40+ engineers across four product pillars. - **PrepHero** (`/case-study/prephero`) - A recruiting platform built from zero at EXACT Sports (2011–2016), connecting high-school athletes with college coaches through profiles, camp registration, recruiting tools, and Stripe-backed payments. ## Blog Posts ### 2026 - [The Engineer Becomes the Editor](content/blog/2026-06-22-the-engineer-becomes-the-editor/index.mdx) - Building a three-platform AI product solo for $725 of tooling and under $45/month to run - [Building GroceryTrack: From a Pile of Receipts to Users I Never Expected](content/blog/2026-06-12-building-grocerytrack/index.mdx) - From idea to a live receipt-scanning app in one day, and what 444 receipts taught me - [生活指南之美国医疗系统 (2026版)](content/blog/2026-02-18-american-health-care-explained/index.md) - 深入解析美国医疗系统结构、保险术语及就医流程 (Chinese) - [Share Packages, Not Applications](content/blog/2026-02-14-share-packages-not-applications/index.mdx) - Three years modernizing a multi-brand healthcare platform: monorepos, GraphQL gateways, and why sharing packages beats sharing apps - [My 2025 Reflection: A Year of AI, Exploration, and Growth](content/blog/2026-01-08-my-2025-reflection/index.md) - Year-end reflection - [Chasing Stories Across the British Isles](content/blog/2026-01-02-uk-and-ireland-trip-2025/index.md) - A winter journey through the UK and Ireland ### 2025 - [The Toolbox For Principal Software Engineers](content/blog/2025-10-05-the-toolbox-for-principal-software-engineers/index.md) - Building systems, patterns, and clarity in a multi-brand environment - [The Field Guide for Learning Swimming as an Adult](content/blog/2025-09-13-the-field-guide-for-learning-swimming-as-an-adult/index.md) - From zero laps to 1000 yards: a practical guide - [Why Re-Platforming Matters](content/blog/2025-09-11-why-re-platforming-matters/index.md) - Architecture and web development considerations - [Leading Without Authority as an Individual Contributor](content/blog/2025-08-17-leading-without-authority-for-an-individual-contributor-leader/index.md) - Leadership strategies for ICs ### 2022 - [Bye 2021, Hello 2022](content/blog/2022-01-15-bye-2021-hello-2022/index.md) - Year-end reflection and goals ### 2021 - [SEO: The Secret Sauce for Making Online Grocery Shopping Popular](content/blog/2021-11-8-seo-the-secret-sauce-for-making-online-grocery-shopping-popular/index.md) - Search optimization strategies - [20年英语语言学习的点滴体验](content/blog/2021-01-24-two-decades-learning-experience-on-english/index.md) - 二十年英语学习历程回顾 (Chinese) - [关于工作压力的一点想法](content/blog/2021-01-11-related-to-work-stress/index.md) - 工作压力与心理健康的思考 (Chinese) ### 2017–2018 - [Order Status: The Long Awaited Feature](content/blog/2018-01-24_order-status-the-long-awaited-feature/index.md) - E-commerce UX improvements - [2017 Year At A Glance](content/blog/2018-01-02_2017-year-at-a-glance/index.md) - Professional development review - [When The Night Is Falling, We Need The Dark Theme](content/blog/2017-10-16_when-the-night-is-falling-we-need-the-dark-theme/index.md) - UI/UX design considerations - [What Are The Two Hard Things In Computer Science](content/blog/2017-08-21_what-are-the-two-hard-things-in-computer-science/index.md) - Software engineering challenges - [TD or Not TD, That Is the Question](content/blog/2017-08-07_td-or-not-td-that-is-the-question/index.md) - Technical debt analysis - [Not So Brief Landing Page History of Peapod](content/blog/2017-07-31_notsobrief-landing-page-history-of-peapod/index.md) - E-commerce evolution case study - [Web Accessibility: Designing The User Experience With All Users In Mind](content/blog/2017-07-24_web-accessibility-designing-the-user-experience-with-all-users-in-mind/index.md) - Inclusive design practices - [Cooking & Coding](content/blog/2017-02-12_cooking-coding/index.md) - Parallels between cooking and programming ### 2015–2016 - [Why Scala Can Help You To Build A More Reliable Service](content/blog/2016-02-03_why-scala-can-help-you-to-build-a-more-reliable-service/index.md) - Programming language analysis - [Printable, Shareable and Responsive Design of Certificate](content/blog/2015-11-21_printable-shareable-and-responsive-design-of-certificate/index.md) - Web-to-print solutions - [HowdyBarber: A Scripting Way To Check My Barber's Availability](content/blog/2015-10-12_howdybarber-a-scripting-way-to-check-my-barbers-availability/index.md) - Automation and web scraping - [How I Used Docker for LaTeX on macOS](content/blog/2015-08-14_how-i-used-docker-for-latex-on-macos-yosemitesierra/index.md) - Development environment setup ## Talks ### Conference Presentations - [The Superpowers and Kryptonite Brought by Next.js](content/talk/2024-09-22-the-superpowers-and-kryptonite-brought-by-nextjs/index.md) - Next.js framework analysis and best practices ## Interactive Apps & Demos - **Car Dashboard** (`/apps/car-dashboard`) - OAuth-gated Tesla dashboard pulling live vehicle data - **My Life in Weeks** (`/apps/my-life-in-weeks`) - Visual representation of life in weeks, inspired by Tim Urban's "Your Life in Weeks" - **Technology Radar** (`/apps/technology-radar`) - Interactive technology radar inspired by Thoughtworks, showing adopted, trialed, and assessed technologies - **Blog Word Cloud** (`/demos/blog-word-cloud`) - Interactive word cloud visualization of blog post content with sentiment analysis ## Developer Tools - **JSON Lint** (`/tool/jsonlint`) - JSON validation and formatting - **Language Translator** (`/tool/language-translator`) - AI-powered translation utility - **Markdown Preview** (`/tool/markdown-preview`) - Live Markdown rendering ## Pages - **Case Studies** (`/case-study`) - Four in-depth case studies (GroceryTrack, Phoenix, PRISM, PrepHero) - **Blog** (`/blog`) - All blog posts organized by year - **Talks** (`/talk`) - Conference presentations and submissions - **Podcast** (`/podcast`) - Podcast episodes - **Photography** (`/photography`) - Photography galleries - **Apps** (`/apps`) - Interactive apps and data visualizations - **Tools** (`/tool`) - Developer utilities - **Demos** (`/demos`) - Interactive demos and data visualizations - **Uses** (`/uses`) - Hardware, software, and tools used for development - **Archive** (`/archive`) - Open source projects and case studies - **Search** (`/search`) - Full-text search across all content - **Resume** (`/resume`) - Professional resume - **About** (`/about`) - Comprehensive background, experience, and interests - **Chat** (`/chat`) - AI-powered chat assistant ## Technical Stack - **Framework**: Next.js 16 with App Router and React 19 - **Language**: TypeScript - **Styling**: Tailwind CSS 4 with custom orange brand theme - **AI Integration**: Google Generative AI (Gemini 2.5 Flash) for chat and content processing - **Audio**: OpenAI Text-to-Speech API for blog post audio generation - **Translation**: Google Translate API + AI-powered translation via Gemini - **Authentication**: Firebase Auth with Google Sign-In - **Content**: Markdown with gray-matter frontmatter processing - **Internationalization**: next-intl (English and Chinese) - **Diagrams**: Mermaid.js with interactive modal zoom - **Feature Flags**: LaunchDarkly - **Error Tracking**: Sentry - **Testing**: Vitest for unit tests, Playwright for E2E - **Package Manager**: pnpm - **Deployment**: Firebase App Hosting ## AI Assistant Features The website includes an AI-powered chat assistant: - **Integration**: Google Gemini AI (Gemini 2.5 Flash model) - **Rate Limiting**: 20 questions per day per visitor - **Focus**: Factual information about website content and Xinjiang's professional background - **Context**: Maintains conversation context and provides relevant responses - **Safety**: Guardrails to keep conversations on-topic and professional ## API Endpoints - **Chat API** (`/api/chat`) - AI assistant conversations with Google Gemini - **Content Summary** (`/api/content-summary`) - AI-powered content summarization - **Newsletter** (`/api/newsletter/subscribe`) - Email newsletter subscription via Buttondown - **Translation Services**: - `/api/translate` - AI-powered translation using Gemini - `/api/translate-google` - Google Translate API integration - **Blog Audio** (`/api/blog/[slug]/audio`) - OpenAI TTS-generated audio for blog posts - **Environment Access** (`/api/environment-access`) - Server-side environment gate verification - **Sitemap** (`/api/sitemap`) - Dynamic sitemap generation - **Info** (`/api/info`) - Application information and health check ## Content Organization All content is organized as Markdown files with frontmatter metadata including title, date, author, tags, and descriptions. Blog posts and talks are stored in individual directories with supporting assets (images, PDFs, etc.) co-located with the content files. The site supports both English and Chinese content with locale-specific posts. ## Contact & Social - **Email**: hi@xinjiangshao.com - **Website**: https://xinjiangshao.com - **GitHub**: https://github.com/soleo - **X / Twitter**: https://x.com/soleoshao - **LinkedIn**: https://linkedin.com/in/xinjiangshao - **YouTube**: https://youtube.com/@soleoshao - **Instagram**: https://instagram.com/soleoshao --- *This website showcases Xinjiang Shao's professional journey through software engineering, from e-commerce platforms to healthcare solutions, with insights on leadership, technology choices, and industry best practices.*