Skip to content

Implement SocialCal v0 design system with purple theme and bottom nav - #37

Open
kmondlane wants to merge 11 commits into
Front_end_Krisfrom
claude/awesome-mccarthy-gNYzw
Open

Implement SocialCal v0 design system with purple theme and bottom nav#37
kmondlane wants to merge 11 commits into
Front_end_Krisfrom
claude/awesome-mccarthy-gNYzw

Conversation

@kmondlane

Copy link
Copy Markdown
Collaborator

Summary

This PR implements the complete SocialCal v0 design system, introducing a cohesive purple-themed mobile-app style interface with a persistent bottom navigation bar, redesigned onboarding flow, and updated authentication pages. The design is layered on Bootstrap 5.3 + Bootstrap Icons with white rounded cards, soft shadows, and a lavender onboarding backdrop.

Key Changes

Design System & Styling

  • New static/css/style.css: Comprehensive 400+ line design system implementing:
    • Purple color palette (primary #6c2bd9, dark #5a23b6, soft variants)
    • CSS custom properties for consistent theming across the app
    • Bootstrap 5.3 overrides for primary colors and components
    • Soft shadows and 12-16px border radius throughout
    • Mobile-optimized spacing and typography

Navigation & Layout

  • Persistent bottom navigation: Fixed footer with Calendar/Discover/Profile tabs for authenticated users
  • Body padding adjustment: has-bottom-nav class adds 84px bottom padding to prevent content overlap
  • Updated base.html: Integrated new stylesheet, added bottom nav component, conditional body classes

Onboarding Flow Redesign

  • Unified onboarding styling: Removed inline styles from individual onboarding templates
  • Lavender backdrop: sc-onboarding body class applies gradient background (#f3e8ff to #faf5ff)
  • Centered white card layout: Consistent 460px max-width container with shadow and rounded corners
  • Updated templates:
    • welcome.html, event_types.html, calendar_sync.html, social_connect.html, complete.html
    • All now use centralized CSS classes instead of inline styles
    • Improved icon usage (e.g., bi-stars for event types, bi-people for social)

Authentication Pages

  • New .sc-auth-wrapper and .sc-auth-card classes: Consistent 460px centered card layout for login/signup/logout
  • Updated login.html, signup.html, logout.html: Refactored from Bootstrap grid to new auth card pattern
  • Improved form styling: Consistent padding, border radius, and button sizing

Calendar & Event Views

  • Month view: Updated table styling with calendar-month class for event pills
  • Week view: Day column styling with selected/today states and hover effects
  • Event cards: Hover animations (shadow lift, subtle translate)
  • Page titles: Applied .sc-page-title class to major headings across templates

Testing & Quality

  • New tests/usability/test_design_flows.py: Selenium-based end-to-end usability tests
    • Headless Chrome driver with mobile viewport (420x900)
    • Tests persistent bottom nav, week strip, onboarding, event detail, profile pages
    • Defensive design: skips cleanly if Selenium unavailable; uses explicit WebDriverWait
    • Marked flaky with pytest-rerunfailures for CI robustness
  • New run_checks.sh: Consolidated gate script mirroring CI checks (flake8, Django checks, pytest)
  • Updated pytest.ini: Added flaky marker definition

Code Cleanup

  • Removed unused imports (e.g., crawl4ai scraper reference in events/views.py)
  • Removed duplicate template files from onboarding/templates/ (consolidated to templates/onboarding/)
  • Removed old events/templates/events/event_detail.html and events/templates/events/form.html
  • Simplified error handling tests in core/tests/test_error_handling.py

CI/CD Updates

  • GitHub Actions: Exposed Chromium binary to Selenium tests via CHROME_BIN environment variable

Notable Implementation Details

  • CSS Variables: Extensive use of --sc-* custom properties for maintainability and theming
  • Bootstrap Integration: Overrides Bootstrap's primary color while preserving component structure
  • Mobile-First: 420

https://claude.ai/code/session_01KaMJLiLS6mBhM7DVC5AsXd

SocialCal Dev added 11 commits May 30, 2026 09:19
…th restyle

- static/css/style.css: purple design system (tokens, cards, buttons, bottom nav,
  calendar strip, onboarding/auth/discover components) layered on Bootstrap 5.3
- base.html: link design system, purple navbar, persistent bottom nav
  (Calendar/Discover/Profile) for authenticated users
- onboarding/welcome.html & calendar_app/month.html: adopt design-system classes
- tests/usability: Selenium StaticLiveServerTestCase suite (skips without a browser)
- core/tests/__init__.py: make core.tests a proper package
- events/views.py: import crawl4ai/ical scrapers lazily at call sites so the
  app boots without the heavy optional scraper deps (CI behavior unchanged)
- onboarding event_types/complete/calendar_sync/social_connect: adopt the
  shared design-system card layout, drop per-template inline <style> blocks
Apply the v0 'Discover' surface: page title, card-based event grid, and
purple action buttons. Preserves the webcal subscribe link and all event
content/search assertions covered by tests.
Replace bare element reads with WebDriverWait conditions and wait for URL
changes after navigation, eliminating render/navigation races. All five e2e
flows (bottom nav, calendar strip, event detail, onboarding, profile) pass.
Pin TIME_ZONE='UTC' via override_settings so the date the view extracts from
start_time matches the UTC date the test derives, and assert the event that
actually falls on that day. Previously failed depending on the wall-clock
date (pre-existing failure, reproducible on the base commit).
- events (form/import/delete) and profiles (list/edit/calendar) and core
  (privacy/terms): consistent sc-page-title headers + container/card wrappers
  so every page matches the v0 purple design (they already inherit the theme
  via style.css token overrides)
- CI: expose Playwright's Chromium to Selenium via CHROME_BIN so the
  tests/usability/ e2e suite runs for real (still skips cleanly if absent)
…flakes

- page_load_strategy='eager' so driver.get() returns on DOMContentLoaded
  instead of blocking on the external Spotify SDK script in <head>
- WebDriverWait 15s->30s for slow CI runners
- @pytest.mark.flaky(reruns=2) so a transient slow load is retried, not failed
Verified: 5 passed (exit 0) against real Chromium.
The filesystem (DIRS) template loader runs before APP_DIRS, so these app-level
copies were never rendered and had drifted to stale, unstyled markup. Delete
the 6 true duplicates (events/{event_detail,form}, onboarding/{welcome,
event_types,social_connect,calendar_sync}); keep google_calendar_permissions
which only exists at the app level. Suite remains 406 passed, 13 skipped.
…bug tests

- Add calendar_app/__init__.py + api/__init__.py so their test modules import
  under proper package names; this frees the bare 'tests' top-level name and
  fixes the pytest collection collision with tests/usability/
- events/views.py: replace the (unpatchable) inline lazy import with a
  module-level async scrape_crawl4ai_events() wrapper that imports crawl4ai
  lazily — keeps the app bootable without the heavy dep AND restores the
  patch target the import tests rely on
- core/urls.py: always register the self-guarding debug_error route so it is
  reversible regardless of DEBUG (view still only raises in DEBUG)
- core/tests/test_error_handling.py: fix never-running test (missing
  override_settings import + client fixture); now exercises both modes
- pytest.ini: register the 'flaky' marker (pytest-rerunfailures) to silence
  the unknown-mark warning

Suite: 135 passed, 5 skipped (usability suite skips w/o a browser), 0 failures.
@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 64bb1f6e-a982-4412-98cd-327f938eb8c9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/awesome-mccarthy-gNYzw

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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.

1 participant