DEVELOPMENT HISTORY / @minju25kim

━━ HISTORY / WORK & PERSONAL PROJECTS

BUILT.
REBUILT.
STILL BUILDING.

Frontend work at Bally’s Interactive. Personal blogs rebuilt across Hugo, Next.js, and React. A record of how I build, publish, and refine for the web.

02 / PROFESSIONAL WORK

BALLY’S INTERACTIVE

2022.09 — 2023.12 / UNITED KINGDOM

Frontend Engineer
Bally’s Interactive

I worked as a frontend developer at Bally’s Interactive. Jackpotjoy is a representative example of the kind of website I worked on.

  • Campaign pages across brands

    Developed React and TypeScript marketing landing pages for gaming platforms serving the UK, Europe, and North America.

  • Reusable UI architecture

    Designed reusable component structures for recurring brand campaigns to minimize duplicated code. Worked with Styled-components and Storybook to maintain the UI system.

  • API integration & browser compatibility

    Integrated REST and GraphQL APIs, implemented responsive layouts, and addressed cross-browser compatibility.

  • From planning to production

    Collaborated in English with designers, planners, and backend engineers in a multinational team, shipping to production on short marketing release cycles.

SOURCE: OWNER’S RÉSUMÉ · BALLY’S EXPERIENCE

The public pages below illustrate product context. They do not identify my individual feature ownership or reproduce the site as it was during my employment.

PUBLIC PRODUCT / JACKPOTJOY

Navigation & discovery

Category navigation and grouped game listings connect a broad catalogue to individual pages.

VIEW SOURCE PAGE ↗

Account entry & campaigns

Login and registration entry points sit alongside campaign modules and linked offer terms.

VIEW SOURCE PAGE ↗

Editorial content

A dedicated blog extends the product with articles and navigation into editorial content.

VIEW SOURCE PAGE ↗

03 / THREE BLOG CHAPTERS

2024 → 2025 → 2026

01 / 2024.10 — 2024.12

m25k

The rebuilt 2024 m25k homepage, with a minimal dated list of writing sections.
Local rebuild · 21d0eff (Dec 2024) · captured Sep 2026Open full image ↗

Hugo / Markdown / Sass / GitHub Pages

A small, static place to write.

A Hugo blog using the nostyleplease theme, with daily, weekly, monthly, review, travel, and English/Korean writing sections. Local templates and Sass customize the reading experience.

Configured a Hugo build and GitHub Pages deployment workflow; refined list limits and browser presentation. This version kept publishing close to Markdown files.

02 / 2025.01 — 2025.08

minju25kim-next

The 2025 Next.js homepage with a centered profile, social links, and a compact header.
Local rebuild · 52b401d (Aug 2025) · captured Sep 2026Open full image ↗

Next.js 15 / MongoDB → Supabase / Plate / Tailwind / Fly.io

From files to a publishing application.

Built a Next.js site with Fly.io deployment configuration, first with a MongoDB/NestJS search backend and later Supabase-backed blog and dev views, plus persistent light/dark themes. The composer evolved into Plate-based editing with separate create, edit, and read-only views.

Explored database-backed authoring, structured editor values alongside Markdown, and a TanStack Query experiment marked as work in progress in the commit history.

03 / 2026.03 — 2026.09

dotcom

The current blog homepage with oversized monospace typography, orange accents, and a content ledger.
Live homepage · dotcom-ezk.pages.dev · captured Sep 2026Open full image ↗

React 19 / Vite / TanStack Router / Supabase / TipTap

A new foundation, a clearer identity.

The current repository uses a Vite application, file-based routing, a unified content table, and TipTap publishing tools. Its visual identity brings the home, content, and gears pages together.

The detailed log below follows this repository. Together, the three repositories show successive approaches to personal publishing; they do not establish a direct code or data migration between every version.

FOUND IN GIT / THE MONGODB CHAPTER

2025.01 — 2025.04

Search was a separate full-stack feature: Next.js search UI → /api/search → NestJS /search → MongoDB Atlas Search.

  1. MongoDB content storage

    The NestJS backend added MongoDB-backed content CRUD through Mongoose.

    minju25kim-nest / deb0efa ↗
  2. Atlas Search + Next.js search UI

    The backend added an Atlas Search aggregation over title, content, and keywords with fuzzy matching (maxEdits: 2). The Next.js /api/search endpoint forwarded queries to the backend’s /search endpoint on the same day.

    minju25kim-nest / 9fc21e7 ↗minju25kim-next / f22bf1e ↗
  3. Keyboard-friendly search

    Refined the frontend search with debounced requests, a slash-key shortcut, arrow-key result selection, and outside-click dismissal.

    minju25kim-next / 168c774 ↗
  4. MongoDB directly in Next.js

    A later remodel added a shared MongoClient connection and queried the dev collection for content counts, categories, views, and recent posts.

    minju25kim-next / 09114aa ↗
  5. The frontend shifts to Supabase

    The Next.js repository removed its MongoDB helper and introduced Supabase-backed development content. This dates the code change; it does not establish when the separate backend stopped running.

    minju25kim-next / 3f24931 ↗

04 / CURRENT BLOG · DEVELOPMENT LOG

MAR — SEP 2026 / OLDEST FIRST ↓
11 milestones
  1. 01Foundation

    Give the blog a foundation.

    Set up React 19, TypeScript and Vite with React Compiler, file-based TanStack routing, and a Supabase client for blog data.

    WHAT CHANGED

    Established the application shell, typed routes, cached blog reads, and a Vitest test environment for subsequent features.

    • React 19
    • TypeScript
    • Vite
    • TanStack Router
    • Supabase
    COMMIT EVIDENCEb0244f6 ↗
  2. 02IntegrationRETIRED / JUL 2026

    Bring activity data into the site.

    Added a daily GitHub Actions workflow to refresh a Strava OAuth token and sync yearly totals and recent activities into Supabase.

    WHAT CHANGED

    Connected a scheduled data pipeline to an activity page. The integration and its workflow were later removed on July 1.

    • GitHub Actions
    • OAuth
    • Supabase
    COMMIT EVIDENCE92bb390 ↗ec208dd ↗
  3. 03Publishing

    Write and publish from the browser.

    Built a Supabase-backed development notes route, then added GitHub sign-in, protected editor routes, and a TipTap rich-text editor.

    WHAT CHANGED

    Moved authoring into the blog itself, with formatting controls, edit flows, and published-only post listings.

    • TipTap
    • GitHub OAuth
    • React Context
    COMMIT EVIDENCEe152311 ↗cf1909b ↗
  4. 04Integration

    Turn personal gear into structured content.

    Built the gears page around Supabase records and Storage image URLs, with category chips, specifications, and scroll-driven entrances.

    WHAT CHANGED

    Extended the site beyond posts with a dedicated presentation for equipment and its details.

    • Supabase Storage
    • React
    • CSS
    COMMIT EVIDENCE80abd65 ↗
  5. 05Publishing

    Unify the content model.

    Merged blog and development posts into one content table, migrated existing data, and moved the reading and editing routes to /content.

    WHAT CHANGED

    Created a shared publishing flow with content types, UUIDs, published-read policies, and pagination in batches of 20.

    • SQL migrations
    • Row-level security
    • TanStack Router
    COMMIT EVIDENCE53714a6 ↗
  6. 06Design

    Find a visual identity.

    Replaced the earlier green-accented interface with a newspaper-inspired brutalist design: monospace type, oversized headlines, thick rules, and orange highlights.

    WHAT CHANGED

    Brought the home, content, and gears pages into a shared visual language using reusable palette tokens and ledger-style layouts.

    • CSS custom properties
    • Responsive layouts
    • Typography
    COMMIT EVIDENCE53714a6 ↗58adedc ↗
  7. 07Publishing

    Make the publishing workflow more robust.

    Tightened editor route checks and added an admin-only database write policy. Added slug generation, sanitization, uniqueness checks, and a draft/live management page.

    WHAT CHANGED

    Added confirmed deletion and admin draft previews while hiding unpublished posts from public readers.

    • Supabase RLS
    • Route guards
    • Editor UX
    COMMIT EVIDENCE0c9e175 ↗6ef7f27 ↗
  8. 08Design

    Make the design work in smaller windows.

    Improved mobile navigation and responsive layouts, unified not-found screens, raised the desktop breakpoint to 1280px, and increased gear text sizes.

    WHAT CHANGED

    Gave narrow windows a single-column layout and replaced placeholder gear statistics with values derived from data.

    • Responsive CSS
    • Theme tokens
    • Data-driven UI
  9. 09Maintenance

    Remove placeholder projects.

    Removed the fake project showcase from the site.

    WHAT CHANGED

    Kept the portfolio focused on work evidenced by the repository, rather than sample projects.

    • Content curation
    COMMIT EVIDENCE8ca1760 ↗
  10. 10Maintenance

    Retire an external integration.

    Removed the Strava route, sync script, scheduled workflow, and associated homepage activity statistics. The commit message cites API pricing as the reason.

    WHAT CHANGED

    Reduced the site’s integration footprint while preserving the implementation in Git history.

    • Dependency maintenance
    • GitHub Actions
    COMMIT EVIDENCEec208dd ↗
  11. 11Maintenance

    Clear out unused assets.

    Deleted unused assets from the repository after earlier design and feature changes.

    WHAT CHANGED

    Continued the maintenance work behind the current blog.

    • Repository maintenance
    COMMIT EVIDENCEfbd7f1e ↗

05 / ABOUT THIS RECORD

Reviewed through . Blog chapters are curated from the three repositories’ commits, configuration, and source files. The dates describe their visible commit history, not guaranteed deployment periods.

The Bally’s dates and responsibilities are drawn from my supplied résumé; product observations link to current public Jackpotjoy pages. Several current-blog commits credit Claude as a co-author. Private ChatGPT conversations were not used.