Train5D Application - Page
Inventory
Overview
This document provides a comprehensive inventory of all pages in the
Train5D application, including their purpose, components, and
dependencies.
Core Pages
| index.tsx |
/ |
Landing page - Coming Soon |
None (static content) |
None |
None |
| **_app.tsx** |
N/A |
Next.js App wrapper |
CustomSessionProvider |
SCSS stylesheets |
None |
| dashboard.tsx |
/dashboard |
Main user dashboard |
DashboardLayout, SessionStatusWidget, SessionWarningBanner |
useCustomSession, useRouter |
/api/session/cross-device-check |
| admin.tsx |
/admin |
Admin dashboard |
Welcome, DashboardLayout |
useCustomSession, useRouter |
Session APIs |
Authentication Pages
| login.tsx |
/login |
User login |
LoginForm, AuthLayout |
GetServerSideProps |
/api/auth/[…nextauth] |
| register.tsx |
/register |
User registration |
RegisterForm, AuthLayout |
GetServerSideProps |
/api/auth/register |
| forgot-password.tsx |
/forgot-password |
Password reset request |
ForgotPasswordForm, AuthLayout |
GetServerSideProps, getSession |
/api/auth/forgot-password |
| auth/reset-password.tsx |
/auth/reset-password |
Password reset form |
ResetPasswordForm, AuthLayout |
GetServerSideProps, getSession |
/api/auth/reset-password |
| verify-email.tsx |
/verify-email |
Email verification |
None (inline component) |
useRouter, useState, useEffect |
/api/auth/verify-email |
| resend-verification.tsx |
/resend-verification |
Resend verification email |
None (inline form) |
useRouter, useState |
/api/auth/resend-verification |
| auth/signin.tsx |
/auth/signin |
NextAuth signin page |
AuthLayout |
None |
/api/auth/[…nextauth] |
Assessment Pages
| assessments/index.tsx |
/assessments |
Assessment library/list |
AssessmentsLibrary, DashboardLayout |
useCustomSession, useRouter |
/api/assessments |
| assessments/create.tsx |
/assessments/create |
Create new assessment |
EditAssessmentForm, DashboardLayout |
useCustomSession, useRouter |
/api/assessments (POST) |
| assessments/[id]/edit.tsx |
/assessments/[id]/edit |
Edit existing assessment |
EditAssessmentForm, DashboardLayout |
useCustomSession, useRouter |
/api/assessments/[id] |
| assessments/[id]/take.tsx |
/assessments/[id]/take |
Take/complete assessment |
Inline assessment form, Lucide icons |
useRouter, useState, useEffect |
/api/assessments/[id], /api/assessments/[id]/responses |
| assessments/my/index.tsx |
/assessments/my |
User’s assessments |
DashboardLayout, Lucide icons |
useCustomSession, useRouter, useState |
/api/assessments/my-assessments |
| assessments/public.tsx |
/assessments/public |
Public assessments list |
Inline list component, Lucide icons |
useState, useEffect, Link |
/api/assessments/public |
| assessments/results/[responseId].tsx |
/assessments/results/[responseId] |
Assessment results display |
Inline results component |
useRouter, useState, useEffect |
/api/assessments/responses/[responseId] |
Exercise Pages
| exercises/index.tsx |
/exercises |
Exercise library manager |
ExerciseLibrary, DashboardLayout |
useCustomSession, useRouter |
/api/exercises, /api/exercises/lookup-data |
| exercises/new.tsx |
/exercises/new |
Create new exercise |
ExerciseForm, DashboardLayout |
useCustomSession, useRouter |
/api/exercises (POST) |
| exercises/[id].tsx |
/exercises/[id] |
View exercise details |
DashboardLayout, capitalizeWords utility |
useCustomSession, useRouter |
/api/exercises/[id] |
| exercises/[id]/edit.tsx |
/exercises/[id]/edit |
Edit existing exercise |
ExerciseForm, DashboardLayout |
useCustomSession, useRouter |
/api/exercises/[id] (PUT) |
Nutrition Pages
| nutrition/index.tsx |
/nutrition |
Nutrition library manager |
NutritionLibrary, DashboardLayout |
useCustomSession, useRouter |
/api/nutrition/foods, /api/nutrition/lookup-data |
Utility Pages
| pricing.tsx |
/pricing |
Pricing page |
UnifiedHeader, Footer |
useCustomSession, useState, useEffect |
/api/tiers |
| account/sessions.tsx |
/account/sessions |
Session management |
SessionManager, SessionStatusWidget, Layout |
useCustomSession |
/api/session/list, /api/auth/sessions |
| testing.tsx |
/testing |
Session testing dashboard |
SessionTestingDashboard |
GetServerSideProps, getServerSession |
/api/testing/sessions |
| workout-builder.tsx |
/workout-builder |
Workout builder tool |
DashboardLayout |
useRouter, useState, useEffect |
TBD |
Component Dependencies
Summary
Most Used Components
- DashboardLayout - Used by 12+ pages (all
authenticated dashboard pages)
- AuthLayout - Used by all authentication pages (6
pages)
- useCustomSession - Used by all protected pages (15+
pages)
- useRouter - Used by almost all pages for
navigation
Layout Components
- DashboardLayout
(
/components/dashboard/DashboardLayout.tsx)
- AuthLayout
(
/components/AuthLayout.tsx)
- Layout (
/components/Layout.tsx)
- UnifiedHeader
(
/components/UnifiedHeader.tsx)
- Footer
(
/components/footer/Footer.tsx)
Major Feature Components
- ExerciseLibrary
(
/components/exercises/ExerciseLibrary.tsx)
- NutritionLibrary
(
/components/nutrition/NutritionLibrary.tsx)
- AssessmentsLibrary
(
/components/assessments/AssessmentsLibrary.tsx)
- ExerciseForm
(
/components/exercises/ExerciseForm.tsx)
- EditAssessmentForm
(
/components/assessments/EditAssessmentForm.tsx)
Session Components
- SessionManager
(
/lib/session/components/SessionManager.tsx)
- SessionStatusWidget
(
/lib/session/components/SessionStatusWidget.tsx)
- SessionWarningBanner
(
/lib/session/components/SessionWarningBanner.tsx)
- SessionTestingDashboard
(
/lib/session/components/SessionTestingDashboard.tsx)
Authentication Components
- LoginForm
(
/components/LoginForm.tsx)
- RegisterForm
(
/components/RegisterForm.tsx)
- ForgotPasswordForm
(
/components/ForgotPasswordForm.tsx)
- ResetPasswordForm
(
/components/ResetPasswordForm.tsx)
API Routes Summary
Authentication APIs
/api/auth/[...nextauth] - NextAuth handler
/api/auth/me - Get current user session
/api/auth/register - User registration
/api/auth/login - User login
/api/auth/logout - User logout
/api/auth/forgot-password - Request password reset
/api/auth/reset-password - Reset password
/api/auth/verify-email - Verify email
/api/auth/resend-verification - Resend verification
email
Session APIs
/api/session/check - Check session validity
/api/session/cross-device-check - Cross-device session
validation
/api/session/list - List user sessions
/api/session/cleanup - Clean up expired sessions
/api/auth/sessions - Manage sessions
Exercise APIs
/api/exercises - GET (list), POST (create)
/api/exercises/[id] - GET (detail), PUT (update),
DELETE
/api/exercises/lookup-data - Get all lookup data
/api/exercises/categories - Manage categories
/api/exercises/muscle-groups - Manage muscle
groups
/api/exercises/equipment - Manage equipment
/api/exercises/checkpoints - Manage checkpoints
/api/exercises/progressions - Manage progressions
Nutrition APIs
/api/nutrition/foods - Manage foods
/api/nutrition/lookup-data - Get all nutrition lookup
data
/api/nutrition/categories - Food categories
/api/nutrition/food-groups - Food groups
/api/nutrition/nutrients - Nutrients
/api/nutrition/vitamins-minerals - Vitamins and
minerals
/api/nutrition/macronutrients - Macronutrients
/api/nutrition/micronutrients - Micronutrients
Assessment APIs
/api/assessments - GET (list), POST (create)
/api/assessments/[id] - GET (detail), PUT (update),
DELETE
/api/assessments/[id]/questions - Manage questions
/api/assessments/[id]/responses - Submit/get
responses
/api/assessments/my-assessments - User’s
assessments
/api/assessments/public - Public assessments
/api/assessments/responses/[responseId] - Get response
details
Style Dependencies
Global Styles
main.scss - Main stylesheet
_pricing.scss - Pricing page styles
assessment-take.css - Assessment taking styles
assessment-results.css - Assessment results styles
assessment-medical-history.scss - Medical history
styles
nutrition-library.scss - Nutrition library styles
Component-specific Styles
Most components use scoped styles via CSS modules or styled-jsx.
Protected vs Public Pages
Public Pages (No
Authentication Required)
/ - Landing page
/login - Login page
/register - Registration page
/forgot-password - Forgot password
/verify-email - Email verification
/resend-verification - Resend verification
/assessments/public - Public assessments
/assessments/[id]/take - Take public assessment
/auth/signin - NextAuth signin
Protected Pages
(Authentication Required)
/dashboard - Main dashboard
/admin - Admin dashboard
/exercises/* - All exercise pages
/nutrition/* - All nutrition pages
/assessments - Assessment management
/assessments/create - Create assessment
/assessments/[id]/edit - Edit assessment
/assessments/my - User’s assessments
/account/sessions - Session management
/workout-builder - Workout builder
/pricing - Pricing (accessible but shows session
status)
Admin-Only Pages
/admin - Admin dashboard (role-based access)
Key Hooks Used
- useCustomSession - Custom session management
hook
- useRouter - Next.js routing
- useState - React state management
- useEffect - Side effects and data fetching
- GetServerSideProps - Server-side rendering (auth
pages)
- getServerSession - Server-side session check
Notes
- All protected pages use
useCustomSession for
authentication
- Most feature pages use
DashboardLayout for consistent
UI
- Authentication pages use
AuthLayout for consistent
branding
- Cross-device session enforcement is implemented on all protected
pages
- Device fingerprinting is used for session validation
- Session generation tracking prevents concurrent logins