Go Straightforward Web Application Development.

I'm Ryota Murakami who lives in Tokyo. Currently working as a freelance React/Node/TypeScript developer. Here is my independent OSS organization.

Personal photo showcasing development work
Creative coding project snapshot
Technology workspace environment
Software engineering collaboration
Programming achievement highlight

GitHub Activity

  1. @ryota-murakami ryota-murakami deleted branch refs/heads/fix/e2e-note-modal-isolation in laststance/gitbox · February 18, 2026 20:28

    Updated Feb 18

  2. @ryota-murakami ryota-murakami merged laststance/gitbox#132 · February 18, 2026 12:28
    fix(e2e): add test isolation for note-modal Slate editor tests #132

    Summary

    • Add resetProjectInfoNotes() DB helper to reset note content to seed values
    • Call it in beforeEach for all 3 note-modal test describe blocks
    • F…
    +64 -17
    6 comments
  3. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 20:28
    1 commit to main
    • @ryota-murakami 2d67f41
      fix(e2e): add test isolation for note-modal Slate editor tests (#132)
  4. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 19:49
    1 commit to fix/e2e-note-modal-isolation
    • @ryota-murakami f781f9e
      fix(e2e): check Slate placeholder visibility for empty editor assertion
  5. @ryota-murakami ryota-murakami opened laststance/gitbox#132 · February 18, 2026 11:33
    fix(e2e): add test isolation for note-modal Slate editor tests #132

    Summary

    • Add resetProjectInfoNotes() DB helper to reset note content to seed values
    • Call it in beforeEach for all 3 note-modal test describe blocks
    • F…
    +64 -17
    6 comments
  6. @ryota-murakami ryota-murakami created a branch in laststance/gitbox · February 18, 2026 19:33
  7. @ryota-murakami ryota-murakami deleted branch refs/heads/fix/e2e-ci-failures in laststance/gitbox · February 18, 2026 19:14

    Updated Feb 18

  8. @ryota-murakami ryota-murakami merged laststance/gitbox#131 · February 18, 2026 11:14
    fix(e2e): fix 3 CI failures — public-board 404 + XSS note modal #131

    Summary

    • public-board.spec.ts (2 tests): Assert 404 heading content instead of HTTP status code. Next.js App Router streaming may commit 200 status…
    +35 -25
    7 comments
  9. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 19:14
    1 commit to main
    • @ryota-murakami 44aa00c
      fix(e2e): fix 3 CI failures — public-board 404 + XSS note modal (#131)
  10. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 19:01
    1 commit to fix/e2e-ci-failures
    • @ryota-murakami 11e65df
      fix(e2e): stabilize flaky combobox filter and editor clear tests
  11. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 18:46
    1 commit to fix/e2e-ci-failures
    • @ryota-murakami f807d61
      fix(e2e): stabilize flaky Plate.js editor tests with toPass() polling
  12. @ryota-murakami ryota-murakami opened laststance/gitbox#131 · February 18, 2026 10:32
    fix(e2e): fix 3 CI failures — public-board 404 + XSS note modal #131

    Summary

    • public-board.spec.ts (2 tests): Assert 404 heading content instead of HTTP status code. Next.js App Router streaming may commit 200 status…
    +35 -25
    7 comments
  13. @ryota-murakami ryota-murakami created a branch in laststance/gitbox · February 18, 2026 18:32
  14. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 15:16
    1 commit to main
  15. @ryota-murakami ryota-murakami deleted branch refs/heads/feat/bulk-issues-20260218-v3 in laststance/base-ui-masterclass · February 18, 2026 15:14
  16. @ryota-murakami ryota-murakami closed an issue in laststance/gitbox · February 18, 2026 07:16
    Consider moving the `supabase` directory from `src/supabase` to the project root #126
    ## Overview The Supabase configuration directory is currently located at `src/supabase/`, nested inside the Next.js source directory. This issue pr…
  17. @ryota-murakami ryota-murakami closed an issue in laststance/gitbox · February 18, 2026 07:16
    Security audit: verify XSS protections across all user-input rendering paths #127
    ## Overview This issue tracks a systematic review of XSS (Cross-Site Scripting) protections across every surface where user-supplied content is sto…
  18. @ryota-murakami ryota-murakami closed an issue in laststance/gitbox · February 18, 2026 07:16
    Feature: Public Board sharing #38
    ## Summary Add the ability to make boards public so they can be shared with others via a unique URL. This enables users to showcase their project o…
  19. @ryota-murakami ryota-murakami closed an issue in laststance/gitbox · February 18, 2026 07:16
    Add ESLint no-restricted-imports rule to ban revalidatePath / revalidateTag #129
    ## Summary This project uses Supabase SDK for all database operations — **not** Next.js `fetch` cache. `revalidatePath` / `revalidateTag` are meani…
  20. @ryota-murakami ryota-murakami merged laststance/gitbox#130 · February 18, 2026 07:16
    feat: resolve 4 issues — ESLint rule, security audit, supabase dir, public sharing #130

    Summary

    Resolves all 4 open issues in a single PR:

    • #129 — Add ESLint no-restricted-imports rule to ban revalidatePath/revalidateTag (they cause un…
    +1,040 -119
    27 comments
  21. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Dashboard "Coming soon" vs progress bar distinction unclear #67
    ## Description On the dashboard, some modules show "Coming soon" while others show "0/3" progress bars. It is unclear whether "Coming soon" means t…
  22. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    "All Modules" breadcrumb not translated in Japanese locale #61
    ## Description On the Japanese locale module detail page (e.g., `/ja/modules/01-primitives`), the breadcrumb text "All Modules" remains in English …
  23. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add user profile/sign-out to authenticated pages #64
    ## Description Authenticated pages (dashboard, modules, lessons) show no indication of the signed-in user. There is no user avatar, profile link, o…
  24. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add language/locale switcher UI component #60
    ## Description No locale switcher UI exists anywhere in the application. Locale is controlled entirely through URL path prefix (`/ja/...`). Users h…
  25. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add loading spinner to sandbox Run button during test execution #62
    ## Description The sandbox "Run" button has no loading/spinner state during test execution. Users get no visual feedback that tests are running. ##…
  26. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Landing page component count inconsistency (36 vs 35 vs 22) #59
    ## Description The landing page shows inconsistent component/exercise counts: - English landing: "36 Components" - Japanese landing: "35個" (35 comp…
  27. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Pricing page Buy Now button appears clickable when disabled #63
    ## Description The "Buy Now" button on the pricing page is `disabled` with `href="#"` but has no visual disabled state -- it still appears clickabl…
  28. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    "Buy Now" from English landing page navigates to /ja/pricing (locale stickiness) #58
    ## Description Clicking "Buy Now -- $500" on the English landing page (`/`) navigated to `/ja/pricing` instead of `/pricing` or `/en/pricing`. This…
  29. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Footer links (GitHub/Discord) violate 44px minimum tap target #56
    ## Description The GitHub and Discord links in the landing page footer have a computed height of only **20px**, well below the 44px minimum tap tar…
  30. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Muted text color (#71717a) fails WCAG AA contrast ratio #55
    ## Description The muted text color token `--color-text-muted: #71717a` fails WCAG 2.2 AA contrast requirements on all background levels: | Color P…
  31. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Sandpack header buttons cramped on mobile with Japanese text #65
    ## Description At 375px mobile width, the Hint/Solution/Reset buttons in the Sandpack header have their Japanese text rendered vertically/rotated d…
  32. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Exercise code persistence hook not connected to Sandpack onChange #66
    ## Description The \`useExercisePersistence\` hook provides \`[code, setCode, clearSaved, hasSavedCode]\` and correctly loads saved code from local…
  33. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Port 3000 vs 3001 configuration conflict causes Internal Server Error #57
    ## Description The root `.env` sets `NEXT_PUBLIC_APP_URL=http://localhost:3000`, but `apps/web/.env` overrides to port 3001. Port 3000 has a runnin…
  34. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add confirmation toast when exercise is marked complete #68
    ## Description When clicking "Mark Complete" on an exercise, there is no visible confirmation toast or notification. The button changes to "Complet…
  35. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Exercise toolbar buttons violate 44px minimum tap target (26px height) #54
    ## Description The Hint, Solution, and Reset buttons in the exercise Sandpack toolbar have a computed height of only **26px**, well below the 44px …
  36. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add favicon to the application #53
    ## Description No favicon is configured for the application. The browser tab shows a generic document icon, and the console logs a 404 error for `/…
  37. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Markdown tables render as raw pipe-delimited text in lesson content #50
    ## Description Markdown tables in MDX lesson content render as raw text with visible pipe characters (`|`) and separator lines (`|------|------|`) …
  38. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add root-level not-found.tsx for proper 404 page handling #52
    ## Description There is no `not-found.tsx` at the `app/` root level (outside `[locale]`). This causes: - In dev mode: Runtime Error overlay showing…
  39. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 07:14
    Add global navigation header with user menu and logout #51
    ## Description The application has no global navigation header. Authenticated pages (dashboard, modules, lessons) have no persistent navigation, us…
  40. @ryota-murakami ryota-murakami merged laststance/base-ui-masterclass#69 · February 18, 2026 07:14
    feat: resolve all 19 QA issues (#50-#68) #69

    Summary

    Resolves all 19 open QA issues identified during the QA team audit (PR #49 follow-up). Each issue is addressed in its own commit on a singl…

    +577 -27
    18 comments
  41. @ryota-murakami ryota-murakami pushed to laststance/base-ui-masterclass · February 18, 2026 15:14
    1 commit to main
  42. @ryota-murakami ryota-murakami pushed to laststance/base-ui-masterclass · February 18, 2026 15:10
    1 commit to feat/bulk-issues-20260218-v3
    • @ryota-murakami b5cf85b
      fix: resolve CodeRabbit re-review findings
  43. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 15:03
    1 commit to feat/bulk-issues-20260218
    • @ryota-murakami b85826f
      fix: address round-2 CodeRabbit review feedback
  44. @ryota-murakami ryota-murakami opened laststance/base-ui-masterclass#69 · February 18, 2026 06:55
    feat: resolve all 19 QA issues (#50-#68) #69

    Summary

    Resolves all 19 open QA issues identified during the QA team audit (PR #49 follow-up). Each issue is addressed in its own commit on a singl…

    +577 -27
    18 comments
  45. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 14:41
    1 commit to feat/bulk-issues-20260218
    • @ryota-murakami 3895365
      fix: address CodeRabbit review comments on PR #130
  46. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:29
    Dashboard "Coming soon" vs progress bar distinction unclear #67
    ## Description On the dashboard, some modules show "Coming soon" while others show "0/3" progress bars. It is unclear whether "Coming soon" means t…
  47. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:29
    Add confirmation toast when exercise is marked complete #68
    ## Description When clicking "Mark Complete" on an exercise, there is no visible confirmation toast or notification. The button changes to "Complet…
  48. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:29
    Exercise code persistence hook not connected to Sandpack onChange #66
    ## Description The \`useExercisePersistence\` hook provides \`[code, setCode, clearSaved, hasSavedCode]\` and correctly loads saved code from local…
  49. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    Sandpack header buttons cramped on mobile with Japanese text #65
    ## Description At 375px mobile width, the Hint/Solution/Reset buttons in the Sandpack header have their Japanese text rendered vertically/rotated d…
  50. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    Add user profile/sign-out to authenticated pages #64
    ## Description Authenticated pages (dashboard, modules, lessons) show no indication of the signed-in user. There is no user avatar, profile link, o…
  51. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    Pricing page Buy Now button appears clickable when disabled #63
    ## Description The "Buy Now" button on the pricing page is `disabled` with `href="#"` but has no visual disabled state -- it still appears clickabl…
  52. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    Add loading spinner to sandbox Run button during test execution #62
    ## Description The sandbox "Run" button has no loading/spinner state during test execution. Users get no visual feedback that tests are running. ##…
  53. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    "All Modules" breadcrumb not translated in Japanese locale #61
    ## Description On the Japanese locale module detail page (e.g., `/ja/modules/01-primitives`), the breadcrumb text "All Modules" remains in English …
  54. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    Add language/locale switcher UI component #60
    ## Description No locale switcher UI exists anywhere in the application. Locale is controlled entirely through URL path prefix (`/ja/...`). Users h…
  55. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    Landing page component count inconsistency (36 vs 35 vs 22) #59
    ## Description The landing page shows inconsistent component/exercise counts: - English landing: "36 Components" - Japanese landing: "35個" (35 comp…
  56. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:28
    "Buy Now" from English landing page navigates to /ja/pricing (locale stickiness) #58
    ## Description Clicking "Buy Now -- $500" on the English landing page (`/`) navigated to `/ja/pricing` instead of `/pricing` or `/en/pricing`. This…
  57. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:27
    Port 3000 vs 3001 configuration conflict causes Internal Server Error #57
    ## Description The root `.env` sets `NEXT_PUBLIC_APP_URL=http://localhost:3000`, but `apps/web/.env` overrides to port 3001. Port 3000 has a runnin…
  58. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:27
    Footer links (GitHub/Discord) violate 44px minimum tap target #56
    ## Description The GitHub and Discord links in the landing page footer have a computed height of only **20px**, well below the 44px minimum tap tar…
  59. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:27
    Muted text color (#71717a) fails WCAG AA contrast ratio #55
    ## Description The muted text color token `--color-text-muted: #71717a` fails WCAG 2.2 AA contrast requirements on all background levels: | Color P…
  60. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:27
    Exercise toolbar buttons violate 44px minimum tap target (26px height) #54
    ## Description The Hint, Solution, and Reset buttons in the exercise Sandpack toolbar have a computed height of only **26px**, well below the 44px …
  61. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:27
    Add favicon to the application #53
    ## Description No favicon is configured for the application. The browser tab shows a generic document icon, and the console logs a 404 error for `/…
  62. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:26
    Add root-level not-found.tsx for proper 404 page handling #52
    ## Description There is no `not-found.tsx` at the `app/` root level (outside `[locale]`). This causes: - In dev mode: Runtime Error overlay showing…
  63. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:26
    Add global navigation header with user menu and logout #51
    ## Description The application has no global navigation header. Authenticated pages (dashboard, modules, lessons) have no persistent navigation, us…
  64. @ryota-murakami ryota-murakami opened an issue in laststance/base-ui-masterclass · February 18, 2026 06:26
    Markdown tables render as raw pipe-delimited text in lesson content #50
    ## Description Markdown tables in MDX lesson content render as raw text with visible pipe characters (`|`) and separator lines (`|------|------|`) …
  65. @ryota-murakami ryota-murakami opened laststance/gitbox#130 · February 18, 2026 06:24
    feat: resolve 4 issues — ESLint rule, security audit, supabase dir, public sharing #130

    Summary

    Resolves all 4 open issues in a single PR:

    • #129 — Add ESLint no-restricted-imports rule to ban revalidatePath/revalidateTag (they cause un…
    +1,040 -119
    27 comments
  66. @ryota-murakami ryota-murakami created a branch in laststance/gitbox · February 18, 2026 14:24
  67. @ryota-murakami ryota-murakami deleted branch refs/heads/feat/bulk-issues-20260218-v2 in laststance/base-ui-masterclass · February 18, 2026 14:02
  68. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 06:02
    CheckoutButton has placeholder URL (xxxxxxxx) — purchase flow non-functional #45
    ## Problem `apps/web/components/marketing/checkout-button.tsx` links to a placeholder Lemon Squeezy checkout URL: ```tsx href="https://base-ui-mast…
  69. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 06:02
    No Sandpack test-pass detection — exercises lack completion feedback loop #47
    ## Problem The Sandpack exercise editor shows test results in a console panel, but there is **no programmatic detection of test pass/fail**. Even i…
  70. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 06:02
    No docker-compose.yml for local development database #46
    ## Problem The project requires PostgreSQL but has no `docker-compose.yml`. Developers must manually run Docker commands to set up a local database…
  71. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 06:02
    Exercise completion state not shown in UI — no checkmarks for completed exercises #48
    ## Problem When a user returns to a lesson page with a previously completed exercise, there is no visual indication that the exercise is already co…
  72. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 06:02
    Exercise completion button missing — users cannot track progress #43
    ## Problem The `ExerciseSandpack` component (`apps/web/components/exercise/exercise-sandpack.tsx`) has **no "Complete" button**. The `completeExerc…
  73. @ryota-murakami ryota-murakami merged laststance/base-ui-masterclass#49 · February 18, 2026 06:02
    feat: resolve issues #43-#48 — exercise completion flow + DX improvements #49

    Summary

    • #46: Added docker-compose.yml for local PostgreSQL setup + pnpm db:setup script
    • #45: Replaced hardcoded xxxxxxxx checkout URL with NEXT_PU…
    +197 -10
    17 comments
  74. @ryota-murakami ryota-murakami pushed to laststance/base-ui-masterclass · February 18, 2026 14:02
    1 commit to main
    • @ryota-murakami dd0eb33
      feat: resolve issues #43-#48 — exercise completion flow + DX improvem…
  75. @ryota-murakami ryota-murakami pushed to laststance/base-ui-masterclass · February 18, 2026 14:01
    1 commit to feat/bulk-issues-20260218-v2
    • @ryota-murakami 73a2fee
      fix: resolve CodeRabbit review findings on PR #49
  76. @ryota-murakami ryota-murakami pushed to laststance/base-ui-masterclass · February 18, 2026 13:44
    1 commit to feat/bulk-issues-20260218-v2
    • @ryota-murakami a345ab1
      fix(exercises): add missing jest-dom import to all Sandpack test files
  77. @ryota-murakami ryota-murakami opened laststance/base-ui-masterclass#49 · February 18, 2026 05:38
    feat: resolve issues #43-#48 — exercise completion flow + DX improvements #49

    Summary

    • #46: Added docker-compose.yml for local PostgreSQL setup + pnpm db:setup script
    • #45: Replaced hardcoded xxxxxxxx checkout URL with NEXT_PU…
    +197 -10
    17 comments
  78. @ryota-murakami ryota-murakami opened an issue in laststance/gitbox · February 18, 2026 05:37
    Add ESLint no-restricted-imports rule to ban revalidatePath / revalidateTag #129
    ## Summary This project uses Supabase SDK for all database operations — **not** Next.js `fetch` cache. `revalidatePath` / `revalidateTag` are meani…
  79. @ryota-murakami ryota-murakami pushed to laststance/gitbox · February 18, 2026 13:32
    1 commit to main
    • @ryota-murakami eb5aa79
      chore: add workflow file itself to paths filter for self-triggering
  80. @ryota-murakami ryota-murakami closed an issue in laststance/base-ui-masterclass · February 18, 2026 05:28
    exercises.ts uses __dirname which breaks under Next.js transpilePackages #44
    ## Problem `packages/content/src/exercises.ts` uses `__dirname` to resolve the exercises directory: ```ts const EXERCISES_DIR = path.join(__dirname…
    1 comment
  81. @ryota-murakami ryota-murakami commented on laststance/base-ui-masterclass#44 · February 18, 2026 05:28
    Fixed in 41449f8 — exercises.ts now uses process.cwd() instead of __dirname, matching the api.ts pattern from PR #41.