NIN-9 | Not Found Page + Code Quality Improvements + Setup CI/CD#9
Merged
NIN-9 | Not Found Page + Code Quality Improvements + Setup CI/CD#9
Conversation
Replaces the existing favicon.ico with a new version to update the application's icon.
Introduce comprehensive tests for the NotFound component, covering rendering, modal interactions, and external links. These tests ensure correct UI behavior and accessibility for the 404 page.
Introduced a new not-found.tsx page with a custom 404 UI and an easter egg modal displaying author information. Added AuthorContent component and exported it from the modal content index. Updated next.config.ts to allow remote images from daviddomingo.dev.
Removed inline eslint-disable comments and globally disabled the react-hooks/set-state-in-effect rule in the ESLint config. This allows intentional state updates in useEffect for initialization patterns such as desktop sidebar state and localStorage hydration.
Introduces animated transitions for modal open/close in Modal component and updates related tests to wait for animations. Adds a coin flip hover effect to the author avatar in AuthorContent, including supporting CSS utility classes for 3D flip animation.
Introduces a GitHub Actions workflow that runs tests, lints, checks coverage, and builds the application on push and pull requests to main and develop branches. Uses Node.js 20 and pnpm for dependency management.
Introduced a blinking cursor animation using CSS and applied it to the NotFound page for enhanced visual feedback.
Introduced new CSS utility classes for 3D coin flip animations, including perspective, transform-style, backface-visibility, and rotation. Also updated formatting for existing retro theme and font classes for improved readability.
Renamed the cheats API abstraction file from app/lib/api/cheats.ts to app/libs/api/cheats.ts. Updated all relevant import paths and documentation references to reflect the new location.
Replaced inline SVGs with reusable icon components across the app. Added ChecklistIcon, CloseIcon, GitHubIcon, GlobeIcon, LogIcon, and ResetIcon components, and updated relevant imports and usages for consistency and maintainability.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Moved the pnpm installation step before the Node.js setup in the GitHub Actions workflow. This ensures pnpm is available when configuring the Node.js cache for pnpm.
Bump pnpm from version 8 to 10 and set run_install to false in the GitHub Actions CI workflow for both jobs.
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.
Overview
This branch focused on creating a custom 404 page with an interactive author modal, componentizing SVG icons, and various code quality improvements. The branch name suggests the primary feature was the 404 page, but it also included significant refactoring work.
Primary Features
1. Custom 404 Page (
app/not-found.tsx)What: Created a retro-themed 404 page with interactive elements.
Features:
|) after the message (terminal-style)Design:
font-pixelfor headings2. Author Modal Content (
app/components/ui/Modal/content/AuthorContent.tsx)What: Created reusable modal content component displaying author information.
Features:
@avicrayyy)daviddomingo.dev)Animation:
3. Icon Componentization
What: Refactored all inline SVG icons into reusable components.
Icons Created (6 total):
CloseIcon- X icon for modals/sidebarsResetIcon- Arrow refresh iconLogIcon- Document/file iconChecklistIcon- Clipboard with checkmarkGitHubIcon- GitHub logoGlobeIcon- Globe/world iconStructure:
Benefits:
SVGProps<SVGSVGElement>supportUpdated Components:
ControllerPlayground- UsesResetIconModal- UsesCloseIconInputLogSidebar- UsesLogIconandCloseIconObjectivesSidebar- UsesChecklistIconandCloseIconAuthorContent- UsesGitHubIconandGlobeIconCode Quality Improvements
4. Folder Structure Consolidation
What: Moved API abstraction from
app/lib/api/toapp/libs/api/.Change:
app/lib/api/cheats.ts→app/libs/api/cheats.tsRationale:
app/lib/andapp/libs/app/libs/Updated References:
README.md- Updated project structure documentation.cursor/rules/project-structure.mdc- Updated structure referenceapp/components/ControllerPlayground/index.tsx- Updated commented exampleapp/api/cheats/route.ts- Updated comment reference5. Modal Animation Improvements
What: Enhanced modal component with smooth show/hide animations.
Implementation:
isMountedandisAnimatingstatesrequestAnimationFramefor smooth enter animationssetTimeoutfor exit animation cleanupUser Experience:
6. CSS Animation Additions
What: Added new CSS animations for enhanced UX.
Animations Added:
@keyframes blink- Blinking cursor animationperspective-1000- 3D perspectivepreserve-3d- Transform stylebackface-hidden- Hide back facerotate-y-180- Y-axis rotationDemo Usage
Screen.Recording.2026-01-09.at.2.44.23.AM.mov
Infrastructure & Testing
7. CI/CD Workflow (
.github/workflows/ci.yml)What: Added GitHub Actions workflow for automated testing and building.
Features:
mainanddeveloptestandbuild8. Comprehensive Testing
What: Added full test coverage for NotFound component.
Test File:
__tests__/components/NotFound.test.tsxTest Coverage:
waitForTesting Patterns:
LinkcomponentwaitForfor animation timingConfiguration Updates
9. Next.js Configuration (
next.config.ts)What: Added external image domain configuration.
Change:
daviddomingo.devtoimages.remotePatterns10. ESLint Configuration (
eslint.config.mjs)What: Globally disabled
react-hooks/set-state-in-effectrule.Rationale:
useEffectfor initialization is intentionalDocumentation Updates
11. Project Structure Documentation
Updated Files:
README.md- Updated project structure sectionapp/lib/referencesapp/libs/to showapi/subdirectory.cursor/rules/project-structure.mdc- Updated structure referenceapp/lib/sectionapp/libs/structureFiles Changed Summary
Added Files (12)
app/not-found.tsx- Custom 404 pageapp/components/ui/Modal/content/AuthorContent.tsx- Author modal contentapp/components/icons/(6 icon components + index)CloseIcon/index.tsxResetIcon/index.tsxLogIcon/index.tsxChecklistIcon/index.tsxGitHubIcon/index.tsxGlobeIcon/index.tsxindex.tsx__tests__/components/NotFound.test.tsx- NotFound component tests.github/workflows/ci.yml- CI/CD workflowModified Files (12)
app/components/ControllerPlayground/index.tsx- Uses ResetIconapp/components/ui/Modal/index.tsx- Uses CloseIcon, animation improvementsapp/components/InputLogSidebar/index.tsx- Uses LogIcon and CloseIconapp/components/ObjectivesSidebar/index.tsx- Uses ChecklistIcon and CloseIconapp/components/ui/Modal/content/index.tsx- Exports AuthorContentapp/globals.css- Added blink animation, coin-flip utilitiesapp/libs/api/cheats.ts- Moved fromapp/lib/api/cheats.tseslint.config.mjs- Disabled set-state-in-effect rulenext.config.ts- Added external image domainREADME.md- Updated structure documentation.cursor/rules/project-structure.mdc- Updated structure referenceapp/favicon.ico- Updated faviconMoved Files (1)
app/lib/api/cheats.ts→app/libs/api/cheats.tsImpact & Benefits
User Experience
Developer Experience
Code Quality
Testing
All changes are covered by tests:
Breaking Changes
None - All changes are additive or internal refactorings.
Migration Notes
For Developers:
@/app/components/iconsinstead of inline SVG@/app/libs/api/cheatsinstead of@/app/lib/api/cheatsNext Steps / Future Improvements
Potential enhancements: