diff --git a/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md b/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md new file mode 100644 index 000000000..4495fb80c --- /dev/null +++ b/.beans/sendou.ink-0q9m--my-calendar-page-and-components.md @@ -0,0 +1,42 @@ +--- +# sendou.ink-0q9m +title: My calendar page and components +status: todo +type: task +created_at: 2026-01-11T11:45:35Z +updated_at: 2026-01-11T11:45:35Z +parent: sendou.ink-om3i +--- + +## Summary + +Build the `/my-calendar` page with list view and event card components. + +## Details + +**Page requirements:** +- Route: `/my-calendar` +- Login required (redirect if not authenticated) +- List view grouped by day (chronological) +- Empty state with links to /calendar and /scrims + +**Event card info:** +- Name (tournament name or scrim opponent) +- Time +- Status +- Check-in window (for tournaments) +- Click navigates directly to tournament/scrim page + +**Component sharing:** +- Build components that can be reused by sidebar My Calendar section +- Handle both tournament and scrim event types + +## Checklist + +- [ ] Add route to routes.ts +- [ ] Create page component with loader +- [ ] Create event list component (grouped by day) +- [ ] Create event card component (handles tournament + scrim) +- [ ] Implement empty state with links +- [ ] Add translations +- [ ] Style with CSS modules \ No newline at end of file diff --git a/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md b/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md index aca71ea80..4cbb70a99 100644 --- a/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md +++ b/.beans/sendou.ink-1kb8--show-times-on-mobile-my-calendar-panel.md @@ -3,8 +3,11 @@ title: Show times on mobile My Calendar panel status: todo type: task +priority: normal +tags: + - my-calendar-epic created_at: 2026-01-11T09:48:18Z -updated_at: 2026-01-11T09:48:18Z +updated_at: 2026-01-11T11:45:42Z parent: sendou.ink-6eko --- diff --git a/.beans/sendou.ink-d6vh--my-calendar-data-layer.md b/.beans/sendou.ink-d6vh--my-calendar-data-layer.md new file mode 100644 index 000000000..b0025be2a --- /dev/null +++ b/.beans/sendou.ink-d6vh--my-calendar-data-layer.md @@ -0,0 +1,42 @@ +--- +# sendou.ink-d6vh +title: My calendar data layer +status: todo +type: task +created_at: 2026-01-11T11:45:35Z +updated_at: 2026-01-11T11:45:35Z +parent: sendou.ink-om3i +--- + +## Summary + +Create the data fetching layer for the My Calendar page that combines tournaments and scrims into a unified event list. + +## Details + +**Data sources to combine:** +- Tournaments user is registered for +- Tournaments user is organizing +- Scrims with scheduled matches +- Scrims in looking-for-match state + +**Output:** +- Single sorted list of events (chronological) +- Each event needs: name, time, status, type (tournament/scrim) +- Tournament events need: check-in window info, handle two-day tournaments +- Filter to upcoming events only (no past) + +## Technical approach + +- Create loader at `/my-calendar` route +- Repository functions to fetch user tournaments and scrims +- Merge and sort by start time +- Design data structure that works for both page and sidebar (shared) + +## Checklist + +- [ ] Create repository function for user's upcoming tournaments +- [ ] Create repository function for user's upcoming scrims +- [ ] Create unified event type/interface +- [ ] Create loader that combines and sorts events +- [ ] Verify data structure works for sidebar consumption \ No newline at end of file diff --git a/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md b/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md index 2c941b78c..ef77290ee 100644 --- a/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md +++ b/.beans/sendou.ink-kw6u--show-scrims-in-my-calendar.md @@ -3,8 +3,11 @@ title: Show scrims in My calendar status: todo type: task +priority: normal +tags: + - my-calendar-epic created_at: 2026-01-11T09:44:26Z -updated_at: 2026-01-11T09:44:26Z +updated_at: 2026-01-11T11:45:42Z parent: sendou.ink-6eko --- diff --git a/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md b/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md new file mode 100644 index 000000000..e19e9b5c0 --- /dev/null +++ b/.beans/sendou.ink-oiw2--my-calendar-navigation-links.md @@ -0,0 +1,31 @@ +--- +# sendou.ink-oiw2 +title: My calendar navigation links +status: todo +type: task +created_at: 2026-01-11T11:45:36Z +updated_at: 2026-01-11T11:45:36Z +parent: sendou.ink-om3i +--- + +## Summary + +Add links to My Calendar page in sidebar (desktop) and mobile menu. + +## Details + +**Desktop sidebar:** +- Add "My Calendar" link +- Placement TBD (near existing Calendar link?) +- Only show when logged in + +**Mobile menu:** +- Add "My Calendar" link in appropriate location +- Only show when logged in + +## Checklist + +- [ ] Add My Calendar link to desktop sidebar +- [ ] Add My Calendar link to mobile menu +- [ ] Ensure links only appear when authenticated +- [ ] Add translations for link text \ No newline at end of file diff --git a/.beans/sendou.ink-om3i--my-calendar-page.md b/.beans/sendou.ink-om3i--my-calendar-page.md index 387107670..2b44bc212 100644 --- a/.beans/sendou.ink-om3i--my-calendar-page.md +++ b/.beans/sendou.ink-om3i--my-calendar-page.md @@ -1,29 +1,65 @@ --- # sendou.ink-om3i title: My calendar page -status: draft +status: todo type: epic +priority: normal created_at: 2026-01-11T09:45:51Z -updated_at: 2026-01-11T09:45:51Z +updated_at: 2026-01-11T10:37:00Z --- ## Summary -A dedicated page for viewing the user's personal calendar with all their commitments. +A dedicated page (`/my-calendar`) for viewing the user's personal calendar with all their upcoming commitments in one centralized view. ## Why -While the sidebar shows a quick glance at upcoming events, players need a full page view to see their complete schedule at a glance +Users struggle to see all their commitments (tournaments, scrims) in one place. While the sidebar shows a quick glance, players need a full page view to see their complete schedule. -## Scope +## Scope (Initial) -TBD - This is a placeholder epic for future planning. +**Must have:** +- Tournaments user is registered for +- Tournaments user is organizing +- Scrims (scheduled matches) +- Scrims (looking-for-match posts) -## Potential features - -- Calendar view (week/month) of all user events -- Tournament matches and check-in times -- Scheduled scrims +**Future consideration:** - SendouQ sessions - Team practice times -- Integration with external calendars (Google, etc.) +- External calendar integration (Google, etc.) + +## Design + +**View format:** Simple list view, grouped by day (chronological) + +**Event card info:** +- Name (tournament name or scrim opponent) +- Time +- Status +- Check-in window (for tournaments, e.g. "Check-in opens in 2 hours") +- Handle two-day tournaments appropriately + +**Time range:** All upcoming events only, no past events + +**Interaction:** Clicking an event navigates directly to the tournament/scrim page + +**URL:** `/my-calendar` (login required) + +**Empty state:** Simple message ("No upcoming events") with links to /calendar and /scrims + +**iCal export:** Support .ics file export for subscribing in external calendars (similar to existing /calendar feature) + +## Technical Notes + +- Share components and data fetching logic with sidebar "My Calendar" section +- Related tasks: `sendou.ink-kw6u` (scrims in sidebar), `sendou.ink-1kb8` (times on mobile panel) + +## Navigation + +- Add link to sidebar (desktop) +- Add link to mobile menu + +## Completion Criteria + +All child tasks resolved. \ No newline at end of file diff --git a/.beans/sendou.ink-yyzj--my-calendar-ical-export.md b/.beans/sendou.ink-yyzj--my-calendar-ical-export.md new file mode 100644 index 000000000..cee1943a1 --- /dev/null +++ b/.beans/sendou.ink-yyzj--my-calendar-ical-export.md @@ -0,0 +1,35 @@ +--- +# sendou.ink-yyzj +title: My calendar iCal export +status: todo +type: task +created_at: 2026-01-11T11:45:35Z +updated_at: 2026-01-11T11:45:35Z +parent: sendou.ink-om3i +--- + +## Summary + +Add .ics file export for the user's personal calendar, allowing subscription in external calendar apps. + +## Details + +**Feature:** +- Generate .ics file containing user's tournaments and scrims +- Similar to existing /calendar iCal feature but personalized +- Users can subscribe in Google Calendar, Apple Calendar, etc. + +**Events to include:** +- Tournaments user is registered for +- Tournaments user is organizing +- Scheduled scrims +- Looking-for-match scrims (optional - may not make sense) + +## Checklist + +- [ ] Research existing /calendar iCal implementation +- [ ] Create endpoint for personal calendar .ics +- [ ] Generate iCal events from user's tournaments +- [ ] Generate iCal events from user's scrims +- [ ] Add subscription URL/button to My Calendar page +- [ ] Test subscription in external calendar app \ No newline at end of file