Card flip: screenshot backgrounds + front/back flip card - #5
Card flip: screenshot backgrounds + front/back flip card#5ekoslow1-creator wants to merge 61 commits into
Conversation
Test PR for coolify
Documents the component architecture, live API integration (sefaria.org/api/powered-by), and the project_category data-quality handling agreed on during brainstorming. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The API's project_category field decomposes against 5 real form labels (one legacy naming variant) plus freeform "Other:" text - not the 6 categories shown on developers.sefaria.org as originally assumed. Verified by decomposing all 36 live entries with zero unmatched leftovers. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ation comment, margin, empty-data guard)
…ate-of-dashboard First deploy
…r bucketing Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…pty experience trend - getToolUsageCounts now filters sefaria_tools_used to string entries before normalizing, so a non-string entry (null, number, etc.) in this free-text user-submitted field is skipped instead of throwing and blanking out all four Charts & Analytics charts via the outer catch handler. - Move the experienceTrend.length === 0 empty-state message inline (matching the pie chart's own conditional-render guard) instead of an early return, so the two bar charts and the pie chart still render when there's no experience-level data. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Shares VIBE_CODED_SERIES between submissionsTrend.js and ChartsAndAnalytics.jsx (mirroring the EXPERIENCE_LEVELS precedent) instead of hardcoding the strings twice, and adds a one-sentence caption noting vibe_coded is a newly-tracked field so the chart isn't misread as a real overnight trend reversal. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Extracts known technology names from the free-text tech_used_raw field via case-insensitive substring matching, with "Claude Code" checked and excluded first so it doesn't double-count toward the generic Claude/Anthropic API bucket. Shows the top 8 by project count as a horizontal bar chart, matching the existing keyword-frequency chart's style.
Reuses the fixed-order categorical hue palette already used in the charts (blue/orange/aqua/violet/magenta, gray for Uncategorized). Background and border are computed via color-mix() at low strength so each pill stays pale; text is mixed toward --text-h for a muted look instead of a fully saturated hue.
…chart
Recharts' category axis auto-hides tick labels it calculates would
overlap; interval={0} disables that, and the wider axis column gives
longer labels like "Claude/Anthropic API" room to fit.
…, screenshot URL validation) - screenshots.test.js: update the positive-case test to expect the real manifest path now that screenshotManifest.json is populated, and add a case covering the numeric id form used by ProjectCard.jsx - index.css: give has-screenshot cards their own hover background on the scrim pseudo-element so hovering isn't washed out by the 88%-opacity overlay - generate-screenshots.mjs: validate project_link before navigating to it, rejecting non-http(s) schemes and localhost/private/link-local hosts to close an SSRF/file-read path from unauthenticated submissions
… link, tags+desc on back)
The flip-card's hidden face was still hit-testable in the region behind the visible face's centered content (backface-visibility only affects painting, not pointer events), so clicking the center of a flipped-back card could trigger the hidden front title's link instead of unflipping. Scope pointer-events to whichever face is currently visible. Also add a hover color (var(--accent)) on the project title link, per request, as a visual affordance that it's clickable.
…ip-away on text selection, remove stale CSS - Add visibility: hidden alongside pointer-events: none on the flipped front face so the title link is removed from the tab order and accessibility tree while visually hidden. - Guard the card's click-to-flip handler against active text selections so releasing a text-selection drag inside the back-face description no longer flips the card away. - Remove stale position: relative on .project-card (no longer needed now that faces position against .project-card-inner). - Update stale comment on .project-card-desc to reflect the back-face layout (no image/title/link on that face anymore).
📊 Code Quality Score: 59/100
Was this score accurate? 👍 Yes · 👎 No Scored by GitVelocity · How are scores calculated? |
saengel
left a comment
There was a problem hiding this comment.
Some changes here as well, mostly that we need to take the screenshots out.
Please note the critical issue around the data that was committed, and remove while wiping history as well.
| @@ -0,0 +1,295 @@ | |||
| id,submission_date,created_at,updated_at,submission_source,sefaria_tools_used,tech_used_raw,technical_experience,vibe_coded,project_why,project_name,project_link,project_source_code,project_reach,project_desc,project_category,image_url,has_pbs_logo,tags,status,is_buggy,last_checked,consent_to_display,is_published,featured | |||
There was a problem hiding this comment.
This needs to be deleted, and the history wiped when you push. See this comment.
There was a problem hiding this comment.
Instead of committing the screenshots to the repository, we should upload them to google cloud storage and include links in the data we're migrating to the DB. Will create a card for this, for now - please remove these screenshots from the PR and code.
There was a problem hiding this comment.
Assuming this is irrelevant once we take the screenshots out, please confirm and if so - remove this file.
There was a problem hiding this comment.
We can keep this script for now, it may need to live elsewhere (like our forthcoming automation - i.e. upon project submission we run a script to collect a screenshot) but for now let's keep it in and only delete the actual screenshots themselves.
There was a problem hiding this comment.
Let's also get rid of this
There was a problem hiding this comment.
Let's put the test files in a separate test subdirectory
There was a problem hiding this comment.
I'm not sure what's going on here, can you reply with an explanation of the logic and why it is needed?
There was a problem hiding this comment.
Great practice updating the README!
ee4c6ae to
248154d
Compare
Summary
npm run screenshotsto pre-generate project website screenshots into a manifestTest plan
npm run devand confirm cards flip on click/hover as expectednpm test