feat: modernize codebase with Remix v2, SQLite, and CI updates#198
Merged
zainfathoni merged 39 commits intomainfrom Jan 1, 2026
Merged
feat: modernize codebase with Remix v2, SQLite, and CI updates#198zainfathoni merged 39 commits intomainfrom
zainfathoni merged 39 commits intomainfrom
Conversation
- Create prod.db SQLite database with data from MySQL dumps - Add convert-mysql-dumps.js script to convert MySQL dumps to SQLite format - Add database migration documentation with complete process guide - Update .gitignore to include prod.db - Add npm scripts for running app with prod database
…QLite This guide covers: - Hetzner Cloud VPS setup and configuration - Server initialization (Node.js, PM2, nginx, SSL) - Required configuration files for Node.js/Remix deployment - GitHub Actions CI/CD workflow for automated deployment - Database backup and restoration procedures - Monitoring, maintenance, and troubleshooting steps - Cost breakdown (€5/month vs Vercel Pro €20/month) Includes step-by-step instructions for: - Initial VPS setup and security configuration - Application deployment with zero-downtime reloads - SSL certificate setup with Let's Encrypt - Automated backups and database maintenance - Deployment via GitHub Actions on push to main branch
Prevent accidental commits of production environment files with sensitive secrets
Add comprehensive CLAUDE.md file to provide AI assistants with project context, architecture overview, common commands, and development practices. Update test script in package.json to run standard tests locally.
- Initialize beads (bd) issue tracking system with database and git integration - Move AGENTS.md content into CLAUDE.md under "Agent Instructions" section - Add .gitattributes for beads merge driver configuration - Update .markdownlint.json to exclude code blocks and tables from line-length rules
Auto-committed by bd doctor --fix
- Uncomment sync-branch setting to use "beads-sync" branch - Enables proper multi-clone synchronization for beads issue tracking
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
GitHub deprecated actions/cache v1/v2. Updated all 8 occurrences to v4. Ref: https://github.blog/changelog/2024-12-05-notice-of-upcoming- releases-and-breaking-changes-for-github-actions/
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #198 +/- ##
=======================================
Coverage 16.60% 16.60%
=======================================
Files 73 73
Lines 1036 1036
Branches 363 364 +1
=======================================
Hits 172 172
Misses 862 862
Partials 2 2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- Add 'prisma generate' step to lint and type-check jobs - Replace 'playwright install-deps' with 'playwright install --with-deps' - Fix Playwright cache key patterns for consistency
- Rename all route files from folder-based to dot-based naming - Rename index.tsx to _index.tsx for index routes - Update relative imports to match new file structure - Update test import from ~/routes to ~/routes/_index - Add serverModuleFormat: 'cjs' to fix @heroicons/react ESM issue Route examples: - routes/index.tsx → routes/_index.tsx - routes/dashboard/course.tsx → routes/dashboard.course.tsx - routes/dashboard/course/$lessonId.tsx → routes/dashboard.course.$lessonId.tsx
- Add Vitest globals to tsconfig.json for test type recognition - Fix EntryContext import (moved from @remix-run/react to @remix-run/node) - Add Serialized<T> utility type for JSON date serialization - Update UIMatch type handling in breadcrumbs component - Update component props to accept serialized types (Date → string) - Update permission functions to accept serialized user/course types - Fix email.server.test.ts to include required 'form' property
HeadlessUI Dialog had SSR hydration issues with Remix that caused the mobile sidebar to not render when clicking the "Open sidebar" button. The FocusTrap warning indicated the Dialog was mounting but content wasn't rendering properly. Changes: - Replace HeadlessUI Dialog/Transition with native div implementation - Use pointer-events to control click behavior on overlay vs panel - Update E2E test to use getByRole for better element targeting Closes: rb-b8v.11
Vercel caches node_modules which leads to outdated Prisma Client. Adding prisma generate to the build script ensures the client is regenerated on each deployment.
When Playwright cache has exact hit, 'playwright install --with-deps' is skipped but system libraries (libwoff2dec.so etc) are not in cache. Adding 'playwright install-deps' step on cache hit ensures WebKit dependencies are always available.
- actions/checkout: v2 → v4 - actions/setup-node: v2 → v4 - codecov/codecov-action: v2 → v5 - github/codeql-action/*: v1 → v3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR modernizes the codebase with database migration tooling, framework upgrades, and CI pipeline fixes.
Changes
Database Migration (MySQL → SQLite)
docs/database-migration.md)npm run prodfor local testing with production dataRemix v1 → v2 Upgrade
remixto@remix-run/*CatchBoundarywithErrorBoundaryserver.js, updatedremix.config.jsCI Pipeline Modernization
actions/cache,checkout,setup-nodeto v4codecov/codecov-actionto v5,codeql-actionto v3prisma generateto build script for VercelTesting Migration (Jest → Vitest)
Bug Fixes
Testing
npm run devnpm run prodNext Steps
Production restoration (tracked separately):