Skip to content

Add 3 redesign proposals for eduzen.ar homepage#718

Open
eduzen wants to merge 35 commits into
mainfrom
claude/redesign-proposals-TvgFU
Open

Add 3 redesign proposals for eduzen.ar homepage#718
eduzen wants to merge 35 commits into
mainfrom
claude/redesign-proposals-TvgFU

Conversation

@eduzen
Copy link
Copy Markdown
Owner

@eduzen eduzen commented Mar 15, 2026

Three self-contained HTML mockups exploring different visual directions:

  • Proposal A (Philosopher Engineer): serif headlines, warm off-white palette,
    essay-like spacing, editorial feel. Thoughtful, elegant, memorable.

  • Proposal B (Modern Systems Portfolio): dark UI, strong grid, code snippets,
    premium cards, monospace accents. Precise, senior, technical.

  • Proposal C (Experimental Author Site): broken grid, oversized typography,
    grain texture, sticky narrative sections. Artistic, bold, niche.

Each file can be opened directly in a browser to compare visual directions.

https://claude.ai/code/session_01CK4yrmgaGN2mSx1twv367J

claude and others added 30 commits March 15, 2026 15:03
Three self-contained HTML mockups exploring different visual directions:

- Proposal A (Philosopher Engineer): serif headlines, warm off-white palette,
  essay-like spacing, editorial feel. Thoughtful, elegant, memorable.

- Proposal B (Modern Systems Portfolio): dark UI, strong grid, code snippets,
  premium cards, monospace accents. Precise, senior, technical.

- Proposal C (Experimental Author Site): broken grid, oversized typography,
  grain texture, sticky narrative sections. Artistic, bold, niche.

Each file can be opened directly in a browser to compare visual directions.

https://claude.ai/code/session_01CK4yrmgaGN2mSx1twv367J
Screenshots taken with Playwright (Chromium) at desktop (1440x900),
hero crop, and mobile (390x844) viewports. Google Fonts fallback to
system fonts since screenshots are rendered offline.

https://claude.ai/code/session_01CK4yrmgaGN2mSx1twv367J
Adds /proposals/<filename> URL so proposals can be previewed
through the running Django dev server instead of requiring
direct filesystem access.

https://claude.ai/code/session_01CK4yrmgaGN2mSx1twv367J
…ebsite into claude/redesign-proposals-TvgFU
- Added a  field to the Post model for full-text search capabilities.
- Implemented a signal to update the search vector on post save.
- Updated filters to utilize the new search vector for improved search performance.
- Created a migration to add the search vector field and a GIN index for PostgreSQL.
- Enhanced pagination templates for better user experience.
- Refactored various views and tests to accommodate the new search functionality.
- Updated justfile to include production management commands and internationalization options for message extraction.
- Refactored Django forms to use lazy translation for labels, improving localization support.
- Removed unnecessary type definitions and cleaned up imports in forms and views.
- Deleted unused types.py file to streamline the codebase.
- Enhanced the home page with updated content and improved layout for better user experience.
- Added new tests for the contact form to ensure proper functionality and validation.
- Updated justfile to include production management commands and internationalization options for message extraction.
- Refactored Django forms to use lazy translation for labels, improving localization support.
- Removed unnecessary type definitions and cleaned up imports in forms and views.
- Deleted unused types.py file to streamline the codebase.
- Enhanced the home page with updated content and improved layout for better user experience.
- Added new tests for the contact form to ensure proper functionality and validation.
- Updated the translation for "Philosophy graduate turned software engineer" to improve accuracy and readability in Spanish.
Full-page SVG waves (position: fixed) span behind all content including
footer for a seamless, unified background. Floating particles with
subtle drift animation add visual interest to the hero section.
Circular B&W duotone photo with warm sepia tint positioned top-right
on desktop and centered below tagline on mobile.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reserve min-height: 2.1em on .hero-name to prevent layout shift when
the typing animation cycles between one-line (Eduardo/eduzen) and
two-line (Eduardo\nEnriquez) states.

Fix e2e test for Spanish contact form: the error page redirect loses
the language prefix, so the page shows English "something went wrong"
instead of Spanish "algo salio mal". Updated regex to match both.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Split waves into 3 independent SVG layers with different drift speeds
(45s/35s/28s) and vertical bob animations (12s/9s/14s) for an organic,
ocean-like parallax effect. Each layer moves independently creating
a dreamy, never-repeating visual rhythm.

Fix mobile waves looking like mountains by reducing wave height
progressively: 45vh desktop → 20vh tablet → 15vh small phones.
Remove unused proposals/ directory. Add .superpowers/ to gitignore.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…es, deduplicate

- Consolidate two @media (prefers-reduced-motion) blocks into one
  with wave, particle, cursor selectors and scroll-behavior: auto
- Rename .contact-success → .contact-result (used by both success & error)
- Deduplicate error icon markup in error.html (pulled above conditional)
- Make dialog title configurable via data-confirm-title attribute
- Fix display email dev@ → me@ to match global_data context
- Replace hardcoded #f0ece6 with var(--bg-alt)
- Remove unnecessary will-change: transform on wave layers
- Add explanatory comment on .warm-form reset

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redesign both pages to match the home/contact warm design:
- About: bio section with photo slideshow, colored skill pills,
  "Beyond code" cards, month-aware age calculation
- Classes: topic pills, resource cards, book recommendations grid
- Context processor: add birth year/NL move date for accurate age
- Simplify AboutView by removing redundant get_context_data
- Full Spanish translations for all new content

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New /mentoring/ page with philosophy-driven content: intro,
  "What we can work on" cards, step-by-step "How it works",
  and "Who is this for" audience section
- Replace single "Classes" nav link with "Teaching" dropdown
  (Alpine.js) containing Mentoring and Classes sub-items
- Desktop: hover-triggered dropdown with smooth transitions
- Mobile: tap-to-expand submenu with left border accent
- Full Spanish translations for all new content
- CSS for nav dropdown, mentoring page, and responsive layouts
- 6 new tests for MentoringView (199 total pass)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add @click.away to nav dropdown so it closes when clicking
outside, matching the language dropdown behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The site uses Alpine.js v2.3.0 which doesn't support v3 features:
- @click.outside -> use @click.away (v2 syntax)
- x-transition:enter="className" -> not supported, removed
- x-collapse -> not supported, use x-show only

Switched from hover-based to click-based dropdown (same pattern
as the language dropdown). Click to open, click away to close.
Fixes dropdown staying open when clicking elsewhere on the page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace alpine-ie11.min.js v2.3.0 with Alpine v3 CDN (deferred)
- Fixes h.split console errors caused by v2/v3 syntax mismatch
- Upgrade @click.away to @click.outside (v3 canonical)
- Add x-transition.opacity to dropdowns for smooth fade
- Re-enable hover on Teaching dropdown (mouseenter/mouseleave)
  now that @click.outside works correctly in v3
- 0 console errors, all pages verified via Playwright

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ds, fix bugs

- Remove duplicate assertContains("Bio") in test_about_view
- Use years_since() consistently in context_processor (DRY)
- Replace hardcoded mailto with {{ global_data.email }} in classes CTA
- Remove dead .about-intro and .about-text CSS (no template refs)
- Consolidate .mentoring-audience-card into .about-card--centered modifier
- Guard slideshow interval in about.html to prevent leak on rapid hover

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The [x-show='open'] selector now matches two dropdowns (language +
teaching). Use data-testid='language-dropdown' for precise targeting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Alpine v3 uses fine-grained reactivity — x-bind:href expressions with
no reactive dependencies are only evaluated once at init. After HTMX
push-state navigation, window.location.pathname changes but Alpine
doesn't re-evaluate the binding, causing language switches to navigate
to the wrong URL.

Switch from :href binding to @click.prevent handler that reads
window.location.pathname at click time. Static href attributes provide
no-JS fallback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
send_message() now guards against placeholder tokens ("foo", "", etc.)
and returns a no-op response, preventing E2E tests from hanging on
real HTTP requests to api.telegram.org. Also adds a 10s timeout to
requests.post() to prevent indefinite hangs in production.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The contact form uses a custom HTML <dialog> for confirmation, not
window.confirm(). E2E tests must click the dialog's confirm button
after submit. Also fix mypy error: dict return uses str "true" to
match dict[str, str] annotation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace anonymous /code/.venv volume with named uv-venv volume in
  docker-compose.yml so the virtualenv persists across docker compose run --rm
- Add just up alias as shorthand for just run
- Bump ruff-pre-commit to v0.15.12
- Update uv.lock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants