Specify /my-calendar epic

This commit is contained in:
Kalle 2026-01-11 13:46:53 +02:00
parent 4ea7b43c7c
commit 5a4612a101
7 changed files with 206 additions and 14 deletions

View File

@ -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

View File

@ -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
---

View File

@ -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

View File

@ -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
---

View File

@ -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

View File

@ -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.

View File

@ -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