The 23 detail routes in review order: the session page with its CTA state strip first, then the club event, previews, scoring and the draw, the club pages, places and receipts, people and records, and the message and document pages.
The session page: where, when, what it costs, who is coming, and the one action; for a confirmed player the day’s own step as well, checking themselves in. Route /sessions/[sessionId].
A club event, a dinner or a social: when, where, how many of the cap, the club, who is coming, and the one action, 참석하기 or 참석 취소. Members only. The creator and the club’s officials edit it or cancel it from the header ⋯. Route /clubs/[clubId]/events/[eventId].
What a non-member sees before applying: counts, never names, and one apply verb that follows the approval mode. Route /sessions/[sessionId]/preview.
Everyone’s page for a session and for a tournament, one tab set per session type: LIVE is the courts now (each court’s head, its match in play as a live Block, its queue under it), 일정 is every match (by round, or one card per group), 대진표 is the bracket of a tournament, 순위 the tables. A player enters their own match’s score, may change it for 10 minutes if they entered it, and asks for a review if it still looks wrong. Route /sessions/[sessionId]/scorecard.
The scoreboard with the organizer’s layer over it: the same header, tabs and cards as 스코어카드, plus a 할 일 inbox for the exceptions, one state action on a card, the phase’s one step in the CTA band, and the structural edits in ⋯. The organizer makes the draw, starts the matches, steps in where players have not recorded a score, adds a latecomer, starts the next round and ends the event; a tournament session is the same page with its groups and its 본선. Route /match-board, query sessionId.
How a session makes its matchups, one pipeline in a form of two screens: 구성 (the session’s answers as a value list: 대상, who plays and on how many courts with the facts the session fixes; 대진 방식, the styles of its 종목 with what each needs nested under it; and one 고급 설정 row for the policy axes) then 미리보기 (the draw as a proposal: who rests, each court’s match, 다시 생성), and 저장 commits it. Between rounds the same page is 라운드 추가, and a 대회 opens it as the tournament’s method and knobs. Route /sessions/[sessionId]/draw.
A club post with its reactions and a threaded talk beneath it. Route /clubs/[clubId]/board/[postId].
The application of one applicant, a task page that leads with the person: their identity Block (the face, the name, 구력 and the 신뢰 door), the application (the day and the message) and this club’s records, ending in the decision the club’s 가입 방식 asks for (officials approve, or members vote). Route /clubs/[clubId]/join-review/[userId].
How people find and join the club, and how it runs: one summary of the club’s figures, then a Cell group per question (how people join, where they come from, the recruiting profile, the plan). Route /clubs/[clubId]/analytics.
A place on a page of its own, whether a club plays there or it is only in the directory: its next sessions, the clubs that call it home, its photos and one group of facts. Route /venues/[venueId].
The receipt of a suggestion to change a place, a task page: the venue as a row with the request's status, then what changed, on what evidence and what was decided. Route /venue-contributions/[id].
The receipt of an ownership request, a task page led by the venue's row with the request's status, and for an owner the one place to end it. Route /venue-owner-claims/[id].
Another player's page, an object page: the person's identity Block (the face, the name with the level, the club, 구력 and the 신뢰 door, which opens 신뢰 기록), then what tells the kind of player they are: 전적 (its door 전체 보기 › opens 기간 기록 read as theirs), 플레이 (single and doubles ratings, 주 종목 and 선호 시간), 최근 경기 (the last five), 나와의 전적 and 업적, with the friendship as the one band. Route /profile/[userId].
One person’s trust record, where every person’s 신뢰 door opens: for oneself 내 신뢰 기록 (the score as the 신뢰 meter, three tiles that say why, the last 20 sessions as one list, each with its state and its points), for an official of the club 멤버 기록 (led by the member’s identity Block, then their record in this club, the dues as one Cell, the requests answered on their rows). A row opens its Sheet. Route /profile/trust, and for an official /profile/trust?userId=&clubId=.
A week or a month of matches, a summary page: the period and its record as tiles, the days played, the opponents, and every match, all under one filter. Route /records/[period].
One day of matches opened from a calendar cell, a summary page: the day, its record and its rating as tiles, then each match. Route /records/day, query date.
Everyone you have played with or against, both records per person (owner review 41): 같은 편 (partners, doubles) and 상대 (opponents, singles and doubles). Route /records/analysis/rivals, from 기록’s 파트너와 천적. Filtered to one person it is 나와의 전적, from 공개 프로필 (review 46, M28).
A one-to-one or group conversation, with the request gate before it starts. Route /messages/[threadId].
Announcements as rows of a title and a date that open a notice page: an important one pinned first, an unread dot on what is new. Route /legal/notices.
The FAQ under its topics, then one 문의하기 button that opens an email with the app version, device and account filled in, and the KakaoTalk channel as the second way. Route /legal/contact.
The terms of service as a pushed document page: the title, one line with the 시행일 and the door to the earlier versions, a contents list and the numbered articles. Route /legal/terms.
The privacy policy as a pushed document page: the title, one line with the 시행일 and the door to the earlier versions, a summary of six Cells, a contents list and the numbered articles with tables, and the data download at its end. Route /legal/privacy.
The detail routes, composed from the shared flat v2 kit.
flat-v2-detail.jsx
grounded in 77 source file(s)
packages/features/sessions/src/session-detail/page/session-hero.tsxpackages/features/sessions/src/session-detail/page/session-notice.tsxpackages/features/sessions/src/session-detail/page/session-roster-section.tsxpackages/features/sessions/src/session-detail/page/session-matches-section.tsxpackages/features/sessions/src/session-detail/page/session-info-group.tsxpackages/features/sessions/src/session-detail/sections/session-detail-overlays.tsxpackages/features/sessions/src/session-detail/view/build-notice.tspackages/features/sessions/src/manner-tags-sheet.tsxpackages/features/clubs/src/shared/post-row.tsxpackages/features/clubs/src/post-detail/post-action-row.tsxpackages/features/clubs/src/post-detail/comment-row.tsxpackages/features/messaging/src/dm-thread/helpers.tspackages/features/sessions/src/session-detail-screen.tsxpackages/features/sessions/src/session-detail/view/build-band.tspackages/features/sessions/src/session-detail/header/session-manage-doors.tspackages/features/sessions/src/session-detail/header/use-session-header.tsxpackages/features/sessions/src/session-detail/overlays/deposit-sheet.tsxapps/mobile/app/s/[sessionId].tsxpackages/features/sessions/src/public-pickup-preview-screen.tsxpackages/features/sessions/src/spectator-scorecard-screen.tsxpackages/features/sessions/src/operator-scorecard-screen.tsxpackages/features/sessions/src/scorecard-page/schedule-match-row.tsxpackages/features/sessions/src/scorecard-page/overlays/score-entry-sheet.tsxpackages/features/sessions/src/scorecard-page/tabs/live-tab.tsxpackages/features/sessions/src/scorecard-page/model/courts.tspackages/features/sessions/src/scorecard-page/scorecard-page.tsxpackages/features/clubs/src/club-detail/visitor/visitor-page.tsxpackages/features/clubs/src/club-detail/visitor/visitor-band.tsxpackages/features/clubs/src/post-detail-screen.tsxpackages/features/clubs/src/join-review-detail-screen.tsxpackages/features/clubs/src/club-analytics-screen.tsxpackages/features/sessions/src/venue-page/venue-detail-screen.tsxpackages/features/sessions/src/venue-page/venue-notice.tsxpackages/features/sessions/src/venue-contributions/detail-screen.tsxpackages/features/sessions/src/venue-owner-claims/detail-screen.tsxpackages/features/profile/src/public-profile-screen.tsxpackages/features/records/src/record-detail-screen.tsxpackages/features/records/src/record-detail/record-day-detail-screen.tsxpackages/features/records/src/head-to-head-screen.tsxpackages/features/messaging/src/dm-thread-screen.tsxpackages/features/profile/src/legal-docs/legal-doc-page.tsxpackages/features/profile/src/terms-screen.tsxpackages/features/profile/src/privacy-screen.tsxpackages/features/profile/src/announcements-screen.tsxpackages/features/profile/src/contact-screen.tsxpackages/app/src/domain/rules/club-groups.rules.tspackages/app/src/config/i18n/ko/clubs.tspackages/features/clubs/src/settings/planning-group.tsxpackages/features/clubs/src/settings/info-group.tsxpackages/features/clubs/src/settings/join-group.tsxpackages/app/src/presentation/hooks/use-share-club-invite.tspackages/app/src/presentation/hooks/queries/use-club-events.tspackages/app/src/presentation/hooks/mutations/use-club-event-mutations.tspackages/app/src/domain/entities/club-event.entity.tssupabase/migrations/00695_club_events_hardening.sqlpackages/features/messaging/src/dm-thread/participants-modal.tsxpackages/features/clubs/src/club-event/club-event-screen.tsxpackages/features/clubs/src/club-event/event-attendees.tsxpackages/features/clubs/src/club-event/event-band.tspackages/features/clubs/src/club-event/event-cap-sheet.tsxpackages/features/clubs/src/club-event/event-detail-page.tsxpackages/features/clubs/src/club-event/event-edit-page.tsxpackages/features/clubs/src/club-event/event-edit-rules.tspackages/features/clubs/src/club-event/event-edit-sheets.tsxpackages/features/clubs/src/club-event/event-gate-frame.tsxpackages/features/clubs/src/club-event/event-gate.tspackages/features/clubs/src/club-event/event-hero.tsxpackages/features/clubs/src/club-event/event-info.tsxpackages/features/clubs/src/club-event/event-limits.tspackages/features/clubs/src/club-event/event-menu.tspackages/features/clubs/src/club-event/event-view-model.tspackages/features/clubs/src/club-event/event-when-sheet.tsxpackages/features/clubs/src/club-event/use-cancel-event.tspackages/features/clubs/src/club-event/use-club-event-page.tspackages/features/clubs/src/club-event/use-event-edit.tspackages/features/clubs/src/shared/club-gate-view.tsxpackages/ui/src/date-time-sheet.tsx