From 907fa188415de347a642930353c167d0f2e60084 Mon Sep 17 00:00:00 2001 From: Chris Sanden Date: Sun, 3 May 2026 23:05:22 +0200 Subject: [PATCH] 'some' changes --- app/(tabs)/index.tsx | 435 +++++++++++++++++- app/(tabs)/subjects.tsx | 42 +- app/_layout.tsx | 5 +- app/assignment/upsertAssignment.tsx | 29 +- app/assignment/viewDetailsAssignment.tsx | 10 +- app/createUser.tsx | 207 ++++++--- app/login.tsx | 62 ++- app/setup.tsx | 356 ++++++++++++++ app/subject/upsertSubject.tsx | 24 +- app/subject/viewDetailsSubject.tsx | 10 +- app/task/timer.tsx | 408 +++++++++++++--- app/task/upsertTask.tsx | 24 +- app/task/viewDetailsTask.tsx | 83 +++- deploy/signup-confirmation/README.md | 21 + deploy/signup-confirmation/docker-compose.yml | 9 + deploy/signup-confirmation/site/index.html | 75 +++ lib/asyncStorage.ts | 22 +- lib/types.ts | 2 + notes/projectVision/AppDev_Project_Vision.pdf | Bin 0 -> 459242 bytes notes/vision-gap-closure-plan-2026-05-03.md | 257 +++++++++++ notes/work-report-timer-2026-05-03.md | 392 ++++++++++++++++ 21 files changed, 2253 insertions(+), 220 deletions(-) create mode 100644 app/setup.tsx create mode 100644 deploy/signup-confirmation/README.md create mode 100644 deploy/signup-confirmation/docker-compose.yml create mode 100644 deploy/signup-confirmation/site/index.html create mode 100644 notes/projectVision/AppDev_Project_Vision.pdf create mode 100644 notes/vision-gap-closure-plan-2026-05-03.md create mode 100644 notes/work-report-timer-2026-05-03.md diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index 90dc217..40ea27b 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -1,9 +1,10 @@ import { - GetActiveSprint, - RemoveActiveSprint, - type ActiveSprint, + GetActiveSession, + RemoveActiveSession, + type ActiveSession, } from '@/lib/asyncStorage'; -import { formatDate } from '@/lib/date'; +import type { SessionType } from '@/lib/types'; +import { formatDate, formatDateTime } from '@/lib/date'; import { RegisterForLocalNotificationsAsync } from '@/lib/notifications'; import { CheckAssignmentCompletion } from '@/lib/progress'; import { supabase } from "@/lib/supabase"; @@ -30,6 +31,29 @@ type UpcomingDeadlineTask = { deadline: string; }; +type DashboardProgressSummary = { + completedFocusSessionsToday: number; + minutesStudiedToday: number; + minutesStudiedThisWeek: number; +}; + +type RecentSession = { + sessionId: string; + taskTitle: string | null; + sessionType: SessionType; + elapsedSeconds: number; + status: string; + startedAt: string | null; + endedAt: string | null; +}; + +type RecentlyCompletedTask = { + tId: string; + title: string; + assignmentTitle: string; + lastChanged: string; +}; + const FLOW_STEPS = [ { label: '1', @@ -60,18 +84,88 @@ function formatTime(totalSeconds: number) { return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; } +function getSessionLabel(sessionType: SessionType) { + switch (sessionType) { + case 'short_break': + return 'Short Break'; + case 'long_break': + return 'Long Break'; + default: + return 'Active Sprint'; + } +} + +function formatTrackedMinutes(totalSeconds: number) { + return Math.floor(totalSeconds / 60); +} + +function formatTrackedDuration(totalSeconds: number) { + if (totalSeconds <= 0) { + return '0m'; + } + + const hours = Math.floor(totalSeconds / 3600); + const minutes = Math.floor((totalSeconds % 3600) / 60); + + if (hours === 0) { + return `${minutes}m`; + } + + if (minutes === 0) { + return `${hours}h`; + } + + return `${hours}h ${minutes}m`; +} + +function getSessionStatusLabel(status: string) { + switch (status) { + case 'completed': + return 'Completed'; + case 'cancelled': + return 'Cancelled'; + case 'expired': + return 'Timed out'; + default: + return status; + } +} + +function getStartOfToday() { + const now = new Date(); + return new Date(now.getFullYear(), now.getMonth(), now.getDate()); +} + +function getStartOfWeek() { + const today = getStartOfToday(); + const currentDay = today.getDay(); + const daysSinceMonday = (currentDay + 6) % 7; + + const startOfWeek = new Date(today); + startOfWeek.setDate(today.getDate() - daysSinceMonday); + return startOfWeek; +} + export default function HomeScreen() { const [session, SetSession] = useState(null); - const [activeSprint, setActiveSprint] = useState(null); + const [activeSprint, setActiveSprint] = useState(null); const [activeSprintTaskTitle, setActiveSprintTaskTitle] = useState(null); const [activeSprintTaskDesc, setActiveSprintTaskDesc] = useState(null); const [remainingSeconds, setRemainingSeconds] = useState(0); + const [dashboardSummary, setDashboardSummary] = useState({ + completedFocusSessionsToday: 0, + minutesStudiedToday: 0, + minutesStudiedThisWeek: 0, + }); + const [recentSessions, setRecentSessions] = useState([]); + const [recentlyCompletedTasks, setRecentlyCompletedTasks] = useState([]); const [upcomingDeadlineTasks, setUpcomingDeadlineTasks] = useState([]); const [isFlowInfoVisible, setIsFlowInfoVisible] = useState(false); const [completingTaskId, setCompletingTaskId] = useState(null); + const [subjectCount, setSubjectCount] = useState(0); const loadActiveSprint = useCallback(async () => { - const storedSprint = await GetActiveSprint(); + const storedSprint = await GetActiveSession(); if (!storedSprint) { setActiveSprint(null); @@ -87,7 +181,7 @@ export default function HomeScreen() { ); if (secondsLeft <= 0) { - await RemoveActiveSprint(); + await RemoveActiveSession(); setActiveSprint(null); setActiveSprintTaskTitle(null); setActiveSprintTaskDesc(null); @@ -98,6 +192,12 @@ export default function HomeScreen() { setActiveSprint(storedSprint); setRemainingSeconds(secondsLeft); + if (!storedSprint.taskId) { + setActiveSprintTaskTitle(getSessionLabel(storedSprint.sessionType)); + setActiveSprintTaskDesc('Take the break before you jump into the next focus session.'); + return; + } + const { data: dbTitle } = await supabase .from('tasks') .select('title') @@ -204,6 +304,160 @@ export default function HomeScreen() { setUpcomingDeadlineTasks(enrichedTasks); }, [session?.user.id]); + const loadDashboardProgress = useCallback(async () => { + if (!session?.user.id) { + setDashboardSummary({ + completedFocusSessionsToday: 0, + minutesStudiedToday: 0, + minutesStudiedThisWeek: 0, + }); + setRecentSessions([]); + setRecentlyCompletedTasks([]); + return; + } + + const startOfToday = getStartOfToday().toISOString(); + const startOfWeek = getStartOfWeek().toISOString(); + + const [ + { data: weeklySessions, error: weeklySessionsError }, + { data: rawRecentSessions, error: recentSessionsError }, + { data: completedTasks, error: completedTasksError }, + { count: fetchedSubjectCount, error: subjectCountError }, + ] = await Promise.all([ + supabase + .from('sprint_sessions') + .select('sessionId, sessionType, elapsedSeconds, status, startedAt, endedAt') + .eq('userId', session.user.id) + .eq('sessionType', 'focus') + .not('endedAt', 'is', null) + .gte('endedAt', startOfWeek), + supabase + .from('sprint_sessions') + .select('sessionId, taskId, sessionType, elapsedSeconds, status, startedAt, endedAt') + .eq('userId', session.user.id) + .not('endedAt', 'is', null) + .order('endedAt', { ascending: false }) + .limit(6), + supabase + .from('tasks') + .select('tId, title, aId, lastChanged') + .eq('uId', session.user.id) + .eq('isCompleted', true) + .order('lastChanged', { ascending: false }) + .limit(3), + supabase + .from('subjects') + .select('sId', { count: 'exact', head: true }) + .eq('uId', session.user.id), + ]); + + if (weeklySessionsError || recentSessionsError || completedTasksError || subjectCountError) { + setDashboardSummary({ + completedFocusSessionsToday: 0, + minutesStudiedToday: 0, + minutesStudiedThisWeek: 0, + }); + setRecentSessions([]); + setRecentlyCompletedTasks([]); + setSubjectCount(0); + return; + } + + setSubjectCount(fetchedSubjectCount ?? 0); + + const weeklySessionRows = weeklySessions ?? []; + const todaySummary = weeklySessionRows.reduce( + (summary, currentSession) => { + const endedAt = currentSession.endedAt ? new Date(currentSession.endedAt) : null; + + if (!endedAt || Number.isNaN(endedAt.getTime())) { + return summary; + } + + const elapsedSeconds = currentSession.elapsedSeconds ?? 0; + + summary.minutesStudiedThisWeek += formatTrackedMinutes(elapsedSeconds); + + if (endedAt >= new Date(startOfToday)) { + summary.minutesStudiedToday += formatTrackedMinutes(elapsedSeconds); + + if (currentSession.status === 'completed') { + summary.completedFocusSessionsToday += 1; + } + } + + return summary; + }, + { + completedFocusSessionsToday: 0, + minutesStudiedToday: 0, + minutesStudiedThisWeek: 0, + } satisfies DashboardProgressSummary + ); + + setDashboardSummary(todaySummary); + + const recentSessionRows = rawRecentSessions ?? []; + const recentTaskIds = [ + ...new Set( + recentSessionRows + .map((recentSession) => recentSession.taskId) + .filter((taskId): taskId is string => Boolean(taskId)) + ), + ]; + + const completedTaskRows = completedTasks ?? []; + const completedAssignmentIds = [ + ...new Set( + completedTaskRows + .map((task) => task.aId) + .filter((assignmentId): assignmentId is string => Boolean(assignmentId)) + ), + ]; + + const [{ data: recentTasks }, { data: completedAssignments }] = await Promise.all([ + recentTaskIds.length > 0 + ? supabase + .from('tasks') + .select('tId, title') + .in('tId', recentTaskIds) + : Promise.resolve({ data: [], error: null }), + completedAssignmentIds.length > 0 + ? supabase + .from('assignments') + .select('aId, title') + .in('aId', completedAssignmentIds) + : Promise.resolve({ data: [], error: null }), + ]); + + const tasksById = new Map((recentTasks ?? []).map((task) => [task.tId, task.title])); + const assignmentsById = new Map( + (completedAssignments ?? []).map((assignment) => [assignment.aId, assignment.title]) + ); + + setRecentSessions( + recentSessionRows.map((recentSession) => ({ + sessionId: recentSession.sessionId, + taskTitle: recentSession.taskId ? (tasksById.get(recentSession.taskId) ?? null) : null, + sessionType: recentSession.sessionType, + elapsedSeconds: recentSession.elapsedSeconds ?? 0, + status: recentSession.status, + startedAt: recentSession.startedAt, + endedAt: recentSession.endedAt, + })) + ); + + setRecentlyCompletedTasks( + completedTaskRows.map((task) => ({ + tId: task.tId, + title: task.title, + assignmentTitle: assignmentsById.get(task.aId) ?? 'Unknown Assignment', + lastChanged: task.lastChanged, + })) + ); + }, [session?.user.id]); + useEffect(() => { supabase.auth .getSession() @@ -227,8 +481,9 @@ export default function HomeScreen() { useFocusEffect( useCallback(() => { void loadActiveSprint(); + void loadDashboardProgress(); void loadUpcomingDeadlineTasks(); - }, [loadActiveSprint, loadUpcomingDeadlineTasks]) + }, [loadActiveSprint, loadDashboardProgress, loadUpcomingDeadlineTasks]) ); useEffect(() => { @@ -245,9 +500,10 @@ export default function HomeScreen() { setRemainingSeconds(secondsLeft); if (secondsLeft <= 0) { - void RemoveActiveSprint(); + void RemoveActiveSession(); setActiveSprint(null); setActiveSprintTaskTitle(null); + setActiveSprintTaskDesc(null); } }, 1000); @@ -324,7 +580,11 @@ export default function HomeScreen() { }} /> - + + {subjectCount === 0 ? ( + + + First step + + + Build your first study path + + + Start with one subject, then add one assignment and one task so you + can reach your first sprint without guessing what to do next. + + + router.push('/setup')} + > + + Start Guided Setup + + + + ) : null} + {activeSprint ? ( - Active Sprint + + {getSessionLabel(activeSprint.sessionType)} + {activeSprintTaskTitle ?? 'Selected task'} @@ -428,11 +714,16 @@ export default function HomeScreen() { onPress={() => router.push({ pathname: '/task/timer', - params: { tId: activeSprint.taskId }, + params: activeSprint.taskId + ? { tId: activeSprint.taskId } + : { + sessionType: activeSprint.sessionType, + durationMinutes: String(Math.max(1, Math.round(activeSprint.durationSeconds / 60))), + }, }) } > - Open Sprint + Open Session ) : ( @@ -441,10 +732,51 @@ export default function HomeScreen() { )} + + + Study progress + + + A quick view of today's and this week's focused study effort. + + + + + + Focus sessions today + + + {dashboardSummary.completedFocusSessionsToday} + + + + + + Minutes today + + + {dashboardSummary.minutesStudiedToday} + + + + + + + Minutes this week + + + {dashboardSummary.minutesStudiedThisWeek} + + + + Tasks with upcoming deadlines + + The next concrete work items that are most likely to matter soon. + {upcomingDeadlineTasks.length > 0 ? ( upcomingDeadlineTasks.map((task) => ( @@ -503,7 +835,82 @@ export default function HomeScreen() { No upcoming task deadlines. )} - + + + + + Recent sessions + + + The latest recorded sprints and breaks. + + + {recentSessions.length > 0 ? ( + recentSessions.map((recentSession) => ( + + + + + {recentSession.taskTitle ?? getSessionLabel(recentSession.sessionType)} + + + {getSessionLabel(recentSession.sessionType)} • {formatTrackedDuration(recentSession.elapsedSeconds)} + + + + + + {getSessionStatusLabel(recentSession.status)} + + + + + + {formatDateTime(recentSession.endedAt ?? recentSession.startedAt)} + + + )) + ) : ( + No recent sessions yet. + )} + + + + + Recently completed tasks + + + Tasks you have recently finished and moved out of the queue. + + + {recentlyCompletedTasks.length > 0 ? ( + recentlyCompletedTasks.map((task) => ( + + router.push({ + pathname: '/task/viewDetailsTask', + params: { tId: task.tId }, + }) + } + > + {task.title} + {task.assignmentTitle} + + Completed {formatDateTime(task.lastChanged)} + + + )) + ) : ( + No completed tasks yet. + )} + + + ); } diff --git a/app/(tabs)/subjects.tsx b/app/(tabs)/subjects.tsx index 7e0426f..7effbdc 100644 --- a/app/(tabs)/subjects.tsx +++ b/app/(tabs)/subjects.tsx @@ -51,7 +51,7 @@ export default function Subjects() { return () => sub.subscription.unsubscribe(); }, []); - const GetSubjects = async () => { + const GetSubjects = useCallback(async () => { if (!session?.user.id) return; const { data, error } = await supabase @@ -66,14 +66,14 @@ export default function Subjects() { } SetSubjects((data as Subject[]) ?? []); - }; + }, [session?.user.id]); useFocusEffect( useCallback(() => { if (session) { - GetSubjects(); + void GetSubjects(); } - }, [session]) + }, [GetSubjects, session]) ); return ( @@ -212,12 +212,22 @@ export default function Subjects() { {subjects.length === 0 ? ( - + No subjects yet - - Create your first subject to get started. + + Start with one subject so the rest of your study path has a clear + place to live. + + router.push('/setup')} + > + + Start Guided Setup + + ) : ( @@ -292,14 +302,16 @@ export default function Subjects() { )} - router.push('/subject/upsertSubject')} - > - - Create Subject - - + {subjects.length > 0 ? ( + router.push('/subject/upsertSubject')} + > + + Create Subject + + + ) : null} ); diff --git a/app/_layout.tsx b/app/_layout.tsx index ed1cbd7..da2de38 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -5,11 +5,12 @@ export default function RootLayout() { return ( + - + ); -} \ No newline at end of file +} diff --git a/app/assignment/upsertAssignment.tsx b/app/assignment/upsertAssignment.tsx index 5062f8e..8b774a6 100644 --- a/app/assignment/upsertAssignment.tsx +++ b/app/assignment/upsertAssignment.tsx @@ -20,12 +20,14 @@ import { } from 'react-native'; export default function UpsertAssignment() { - const { aId, sId: routeSId } = useLocalSearchParams<{ + const { aId, sId: routeSId, flow } = useLocalSearchParams<{ aId?: string; sId?: string; + flow?: string; }>(); const isEditMode = Boolean(aId); + const isSetupFlow = flow === 'setup'; const [title, SetTitle] = useState(''); const [description, SetDescription] = useState(''); @@ -195,6 +197,17 @@ export default function UpsertAssignment() { SetIsSaving(false); + if (!isEditMode && isSetupFlow) { + router.replace({ + pathname: '/task/upsertTask', + params: { + aId: savedAssignment.aId, + flow: 'setup', + }, + }); + return; + } + Alert.alert( isEditMode ? 'Assignment successfully updated!' @@ -258,7 +271,9 @@ export default function UpsertAssignment() { Title Description Deadline ); -} \ No newline at end of file +} diff --git a/app/assignment/viewDetailsAssignment.tsx b/app/assignment/viewDetailsAssignment.tsx index cf8ce24..dd708c1 100644 --- a/app/assignment/viewDetailsAssignment.tsx +++ b/app/assignment/viewDetailsAssignment.tsx @@ -295,7 +295,7 @@ export default function ViewDetailsAssignment() { - Task Progress + Tasks completed @@ -318,6 +318,10 @@ export default function ViewDetailsAssignment() { ? 'All tasks complete' : `${remainingTasks} task${remainingTasks === 1 ? '' : 's'} remaining`} + + + Based only on completed tasks in this assignment. + @@ -463,7 +467,9 @@ export default function ViewDetailsAssignment() { {section.emptyMessage} - Tasks for this assignment will show up here. + {tasks.length === 0 + ? 'Create the first task so this assignment turns into one clear next action.' + : 'Tasks for this assignment will show up here.'} ) : ( diff --git a/app/createUser.tsx b/app/createUser.tsx index 0fca889..5a2d3af 100644 --- a/app/createUser.tsx +++ b/app/createUser.tsx @@ -1,10 +1,12 @@ import { supabase } from '@/lib/supabase'; import { router } from 'expo-router'; -import { useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { Alert, + Animated, Keyboard, KeyboardAvoidingView, + KeyboardEvent, Platform, Pressable, ScrollView, @@ -18,6 +20,48 @@ export default function CreateUser() { const [email, SetEmail] = useState(''); const [password, SetPassword] = useState(''); const [isLoading, SetIsLoading] = useState(false); + const [isKeyboardVisible, setIsKeyboardVisible] = useState(false); + const scrollViewRef = useRef(null); + const cardLift = useRef(new Animated.Value(0)).current; + + useEffect(() => { + const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow'; + const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide'; + + const handleKeyboardShow = (event: KeyboardEvent) => { + setIsKeyboardVisible(true); + + const keyboardHeight = event.endCoordinates.height; + const liftAmount = Math.min( + Platform.OS === 'ios' ? keyboardHeight * 0.5 : keyboardHeight * 0.6, + 260 + ); + + Animated.timing(cardLift, { + toValue: -liftAmount, + duration: event.duration ?? 220, + useNativeDriver: true, + }).start(); + }; + + const handleKeyboardHide = () => { + setIsKeyboardVisible(false); + + Animated.timing(cardLift, { + toValue: 0, + duration: 220, + useNativeDriver: true, + }).start(); + }; + + const showSubscription = Keyboard.addListener(showEvent, handleKeyboardShow); + const hideSubscription = Keyboard.addListener(hideEvent, handleKeyboardHide); + + return () => { + showSubscription.remove(); + hideSubscription.remove(); + }; + }, [cardLift]); const SignUp = async () => { if (email.trim() === '' || password.trim() === '') { @@ -47,7 +91,7 @@ export default function CreateUser() { router.replace('/login'); return; } - router.replace('/'); + router.replace('/setup'); }; const inputClassName = @@ -57,90 +101,113 @@ export default function CreateUser() { - - - Study Sprint - - - - Organize subjects, assignments, and tasks in one calm workflow. - - - - - - Create account - - - Start your next study sprint. - - - - - Email + + + + Study Sprint + + + + Organize subjects, assignments, and tasks in one calm workflow. - - - - Password + + + Create account - + + Start your next study sprint. + + + + + What this app does + + + Study Sprint helps you move from subject to assignment to task, + then into a focused sprint. + + + Why an account exists + + + Your account keeps that structure and your tracked study + progress attached to you. + + + + + + Email + + + + + + + Password + + + + + + + {isLoading ? 'Creating account...' : 'Create account'} + + + + router.push('/login')} + > + + Already have an account? Log in + + - - - - {isLoading ? 'Creating account...' : 'Create account'} - - - - router.push('/login')} - > - - Already have an account? Log in - - - + ); -} \ No newline at end of file +} diff --git a/app/login.tsx b/app/login.tsx index 6cf89e1..94ab877 100644 --- a/app/login.tsx +++ b/app/login.tsx @@ -1,12 +1,45 @@ import { supabase } from "@/lib/supabase"; import { router } from "expo-router"; -import { useState } from "react"; -import { Alert, Keyboard, KeyboardAvoidingView, Platform, Pressable, ScrollView, Text, TextInput, TouchableWithoutFeedback, View } from "react-native"; +import { useEffect, useRef, useState } from "react"; +import { Alert, Keyboard, KeyboardAvoidingView, KeyboardEvent, Platform, Pressable, ScrollView, Text, TextInput, TouchableWithoutFeedback, View } from "react-native"; export default function Login() { const [email, SetEmail] = useState(''); const [password, SetPassword] = useState(''); const [isLoading, SetIsLoading] = useState(false); + const [isKeyboardVisible, setIsKeyboardVisible] = useState(false); + const scrollViewRef = useRef(null); + + useEffect(() => { + const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow'; + const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide'; + + const handleKeyboardShow = (event: KeyboardEvent) => { + setIsKeyboardVisible(true); + + const keyboardHeight = event.endCoordinates.height; + const offsetBaseline = Platform.OS === 'ios' ? 180 : 140; + const nextScrollOffset = Math.max(0, keyboardHeight - offsetBaseline); + + scrollViewRef.current?.scrollTo({ + y: nextScrollOffset, + animated: true, + }); + }; + + const handleKeyboardHide = () => { + setIsKeyboardVisible(false); + scrollViewRef.current?.scrollTo({ y: 0, animated: true }); + }; + + const showSubscription = Keyboard.addListener(showEvent, handleKeyboardShow); + const hideSubscription = Keyboard.addListener(hideEvent, handleKeyboardHide); + + return () => { + showSubscription.remove(); + hideSubscription.remove(); + }; + }, []); const login = async () => { if(email.trim() === '' || password.trim() === '') { @@ -38,17 +71,21 @@ export default function Login() { @@ -70,6 +107,16 @@ export default function Login() { Continue your study workflow. + + + Your study path stays with your account + + + Subjects, assignments, tasks, and tracked sprint progress follow + you after you sign in. + + + Email @@ -97,6 +144,9 @@ export default function Login() { secureTextEntry value={password} onChangeText={SetPassword} + onFocus={() => { + scrollViewRef.current?.scrollToEnd({ animated: true }); + }} /> @@ -125,4 +175,4 @@ export default function Login() { ); -} \ No newline at end of file +} diff --git a/app/setup.tsx b/app/setup.tsx new file mode 100644 index 0000000..3652a5c --- /dev/null +++ b/app/setup.tsx @@ -0,0 +1,356 @@ +import { GetActiveSession, RemoveActiveSession, type ActiveSession } from '@/lib/asyncStorage'; +import { supabase } from '@/lib/supabase'; +import { Session } from '@supabase/supabase-js'; +import { Redirect, Stack, router, useFocusEffect, useLocalSearchParams } from 'expo-router'; +import { useCallback, useEffect, useMemo, useState } from 'react'; +import { Pressable, ScrollView, Text, View } from 'react-native'; + +type SetupState = { + subjectId: string | null; + assignmentId: string | null; + taskId: string | null; + completedFocusSessions: number; +}; + +const SETUP_STEPS = [ + { + key: 'subject', + title: 'Create your first subject', + description: + 'Start with one course or study area so the rest of the structure has a clear home.', + }, + { + key: 'assignment', + title: 'Create your first assignment', + description: + 'Add one project, exercise set, or exam-prep block inside that subject.', + }, + { + key: 'task', + title: 'Create your first task', + description: + 'Break the assignment into one concrete thing you can actually sit down and do.', + }, + { + key: 'sprint', + title: 'Start your first sprint', + description: + 'Begin one focused study session so the app immediately turns into action instead of setup.', + }, +] as const; + +type SetupStepKey = (typeof SETUP_STEPS)[number]['key']; + +export default function SetupScreen() { + const { + subjectId: subjectIdParam, + assignmentId: assignmentIdParam, + taskId: taskIdParam, + } = useLocalSearchParams<{ + subjectId?: string; + assignmentId?: string; + taskId?: string; + }>(); + + const [session, setSession] = useState(null); + const [isAuthLoading, setIsAuthLoading] = useState(true); + const [setupState, setSetupState] = useState({ + subjectId: subjectIdParam ?? null, + assignmentId: assignmentIdParam ?? null, + taskId: taskIdParam ?? null, + completedFocusSessions: 0, + }); + const [activeSession, setActiveSession] = useState(null); + + useEffect(() => { + supabase.auth.getSession().then(({ data }) => { + setSession(data.session ?? null); + setIsAuthLoading(false); + }); + + const { data: sub } = supabase.auth.onAuthStateChange((_event, newSession) => { + setSession(newSession); + setIsAuthLoading(false); + }); + + return () => sub.subscription.unsubscribe(); + }, []); + + const loadSetupState = useCallback(async () => { + if (!session?.user.id) { + setSetupState({ + subjectId: null, + assignmentId: null, + taskId: null, + completedFocusSessions: 0, + }); + setActiveSession(null); + return; + } + + const [storedActiveSession, subjectResult, assignmentResult, taskResult, focusSessionResult] = + await Promise.all([ + GetActiveSession(), + supabase + .from('subjects') + .select('sId') + .eq('uId', session.user.id) + .order('lastChanged', { ascending: false }) + .limit(1) + .maybeSingle(), + supabase + .from('assignments') + .select('aId') + .eq('uId', session.user.id) + .order('lastChanged', { ascending: false }) + .limit(1) + .maybeSingle(), + supabase + .from('tasks') + .select('tId') + .eq('uId', session.user.id) + .order('lastChanged', { ascending: false }) + .limit(1) + .maybeSingle(), + supabase + .from('sprint_sessions') + .select('sessionId', { count: 'exact', head: true }) + .eq('userId', session.user.id) + .eq('sessionType', 'focus') + .eq('status', 'completed'), + ]); + + if (storedActiveSession && storedActiveSession.endTime <= Date.now()) { + await RemoveActiveSession(); + setActiveSession(null); + } else { + setActiveSession(storedActiveSession); + } + + setSetupState({ + subjectId: subjectIdParam ?? subjectResult.data?.sId ?? null, + assignmentId: assignmentIdParam ?? assignmentResult.data?.aId ?? null, + taskId: taskIdParam ?? taskResult.data?.tId ?? null, + completedFocusSessions: focusSessionResult.count ?? 0, + }); + }, [assignmentIdParam, session?.user.id, subjectIdParam, taskIdParam]); + + useFocusEffect( + useCallback(() => { + void loadSetupState(); + }, [loadSetupState]) + ); + + const currentStep = useMemo(() => { + if (!setupState.subjectId) { + return 'subject'; + } + + if (!setupState.assignmentId) { + return 'assignment'; + } + + if (!setupState.taskId) { + return 'task'; + } + + return 'sprint'; + }, [setupState]); + + const isSetupComplete = + setupState.taskId !== null && setupState.completedFocusSessions > 0; + + const handlePrimaryAction = useCallback(async () => { + if (isSetupComplete) { + router.replace('/'); + return; + } + + if (currentStep === 'subject') { + router.push({ + pathname: '/subject/upsertSubject', + params: { flow: 'setup' }, + }); + return; + } + + if (currentStep === 'assignment' && setupState.subjectId) { + router.push({ + pathname: '/assignment/upsertAssignment', + params: { + sId: setupState.subjectId, + flow: 'setup', + }, + }); + return; + } + + if (currentStep === 'task' && setupState.assignmentId) { + router.push({ + pathname: '/task/upsertTask', + params: { + aId: setupState.assignmentId, + flow: 'setup', + }, + }); + return; + } + + if (!setupState.taskId) { + return; + } + + const freshActiveSession = await GetActiveSession(); + + if (freshActiveSession && freshActiveSession.endTime > Date.now()) { + router.push({ + pathname: '/task/timer', + params: freshActiveSession.taskId + ? { tId: freshActiveSession.taskId } + : { + sessionType: freshActiveSession.sessionType, + durationMinutes: String( + Math.max(1, Math.round(freshActiveSession.durationSeconds / 60)) + ), + }, + }); + return; + } + + if (freshActiveSession) { + await RemoveActiveSession(); + setActiveSession(null); + } + + router.push({ + pathname: '/task/timer', + params: { + tId: setupState.taskId, + durationSeconds: '5', + }, + }); + }, [currentStep, isSetupComplete, setupState]); + + const primaryLabel = isSetupComplete + ? 'Go to dashboard' + : currentStep === 'subject' + ? 'Create first subject' + : currentStep === 'assignment' + ? 'Create first assignment' + : currentStep === 'task' + ? 'Create first task' + : activeSession + ? 'Open active sprint' + : 'Start first sprint'; + + if (isAuthLoading) { + return null; + } + + if (!session) { + return ; + } + + return ( + + + + + + + First-time setup + + + Build one simple study path + + + You only need one subject, one assignment, one task, and one sprint to + make the app useful. + + + + + {SETUP_STEPS.map((step, index) => { + const isDone = + step.key === 'subject' + ? Boolean(setupState.subjectId) + : step.key === 'assignment' + ? Boolean(setupState.assignmentId) + : step.key === 'task' + ? Boolean(setupState.taskId) + : isSetupComplete; + const isCurrent = !isDone && currentStep === step.key; + + return ( + + + + + {isDone ? '✓' : index + 1} + + + + + + {step.title} + + + {step.description} + + + + + ); + })} + + + + + {isSetupComplete + ? 'You have already completed at least one focus sprint.' + : currentStep === 'sprint' + ? 'The structure is ready. The next step is to actually begin a sprint.' + : 'Follow the next step below. The rest of the app will make more sense once that path exists.'} + + + + + {primaryLabel} + + + + + + ); +} diff --git a/app/subject/upsertSubject.tsx b/app/subject/upsertSubject.tsx index ae10dde..509f2ca 100644 --- a/app/subject/upsertSubject.tsx +++ b/app/subject/upsertSubject.tsx @@ -20,8 +20,9 @@ import { export default function UpsertSubject() { - const { sId } = useLocalSearchParams<{ sId?: string }>(); + const { sId, flow } = useLocalSearchParams<{ sId?: string; flow?: string }>(); const isEditMode = Boolean(sId); + const isSetupFlow = flow === 'setup'; const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); @@ -88,7 +89,7 @@ export default function UpsertSubject() { const result = isEditMode && sId ? await supabase.from('subjects').update(payload).eq('sId', sId) - : await supabase.from('subjects').insert(payload); + : await supabase.from('subjects').insert(payload).select().single(); setIsSaving(false); @@ -101,6 +102,17 @@ export default function UpsertSubject() { return; } + if (!isEditMode && isSetupFlow && result.data?.sId) { + router.replace({ + pathname: '/assignment/upsertAssignment', + params: { + sId: result.data.sId, + flow: 'setup', + }, + }); + return; + } + Alert.alert( isEditMode ? 'Subject updated successfully!' : 'Subject created successfully!' ); @@ -154,7 +166,7 @@ export default function UpsertSubject() { {isEditMode? ' Update this subject and keep your study structure organized.' - : 'Add a subject to organize your assignments and studyt tasks.'} + : 'Add a subject to organize your assignments and study tasks.'} @@ -162,7 +174,7 @@ export default function UpsertSubject() { Title Description ); -} \ No newline at end of file +} diff --git a/app/subject/viewDetailsSubject.tsx b/app/subject/viewDetailsSubject.tsx index 7ec88d3..6085278 100644 --- a/app/subject/viewDetailsSubject.tsx +++ b/app/subject/viewDetailsSubject.tsx @@ -288,7 +288,7 @@ export default function ViewDetailsSubject() { - Assignment Progress + Assignments completed @@ -313,6 +313,10 @@ export default function ViewDetailsSubject() { remainingAssignments === 1 ? '' : 's' } remaining`} + + + Based only on completed assignments in this subject. + @@ -451,7 +455,9 @@ export default function ViewDetailsSubject() { {section.emptyMessage} - Assignments for this subject will show up here. + {assignments.length === 0 + ? 'Create the first assignment to give this subject a real study path.' + : 'Assignments for this subject will show up here.'} ) : ( diff --git a/app/task/timer.tsx b/app/task/timer.tsx index 7e1a038..26d8e39 100644 --- a/app/task/timer.tsx +++ b/app/task/timer.tsx @@ -1,12 +1,12 @@ import { - GetActiveSprint, - RemoveActiveSprint, - SaveActiveSprint, + GetActiveSession, + RemoveActiveSession, + SaveActiveSession, } from '@/lib/asyncStorage'; import { supabase } from '@/lib/supabase'; -import type { Task } from '@/lib/types'; +import type { SessionType, Task } from '@/lib/types'; import * as Haptics from 'expo-haptics'; -import { Stack, useLocalSearchParams } from 'expo-router'; +import { router, Stack, useLocalSearchParams } from 'expo-router'; import * as React from 'react'; import { Alert, @@ -48,6 +48,12 @@ const HOLD_TO_CANCEL_MS = 2000; const CANCEL_ANIMATION_DELAY_MS = 250; const BUTTON_PRESS_IN_MS = 80; const BUTTON_PRESS_OUT_MS = 140; +const SHORT_BREAK_DURATION_MINUTES = 5; + +type PostSessionPrompt = { + completedSessionType: SessionType; + returnTaskId: string | null; +}; function formatTime(totalSeconds: number) { const minutes = Math.floor(totalSeconds / 60); @@ -69,6 +75,23 @@ function getSessionId(sessionData: unknown) { return maybeSession.sessionId ?? maybeSession.sessionid ?? null; } +function getSessionLabel(sessionType: SessionType) { + switch (sessionType) { + case 'short_break': + return 'Short Break'; + case 'long_break': + return 'Long Break'; + default: + return 'Sprint'; + } +} + +type StartSessionInput = { + sessionType: SessionType; + taskId: string | null; + durationSeconds: number; +}; + export default function TimerScreen() { const [containerHeight, setContainerHeight] = React.useState(0); const [duration, setDuration] = React.useState(TIMER_OPTIONS[0]); @@ -76,6 +99,8 @@ export default function TimerScreen() { const [timerOverlayVisible, setTimerOverlayVisible] = React.useState(false); const [timeRemaining, setTimeRemaining] = React.useState(0); const [task, setTask] = React.useState(null); + const [currentSessionType, setCurrentSessionType] = React.useState('focus'); + const [postSessionPrompt, setPostSessionPrompt] = React.useState(null); const scrollX = React.useRef(new Animated.Value(0)).current; const timerAnimation = React.useRef(new Animated.Value(0)).current; @@ -100,9 +125,44 @@ export default function TimerScreen() { const cancelHoldIdRef = React.useRef(0); const cancelHoldStartedAtRef = React.useRef(0); - const { tId } = useLocalSearchParams<{ tId?: string}>(); + const { tId, sessionType: sessionTypeParam, durationMinutes, durationSeconds, returnTaskId } = useLocalSearchParams<{ + tId?: string; + sessionType?: SessionType; + durationMinutes?: string; + durationSeconds?: string; + returnTaskId?: string; + }>(); const timerOverlayHeight = Math.max(containerHeight, 1); const timerOverlayOffscreenY = timerOverlayHeight + 1000; + const selectedSessionType: SessionType = sessionTypeParam ?? 'focus'; + const showDurationPicker = + selectedSessionType === 'focus' && durationMinutes == null && durationSeconds == null; + const selectedDurationMinutes = React.useMemo(() => { + if (!durationMinutes) { + return null; + } + + const parsedDuration = Number(durationMinutes); + + if (!Number.isFinite(parsedDuration) || parsedDuration <= 0) { + return null; + } + + return parsedDuration; + }, [durationMinutes]); + const selectedDurationSeconds = React.useMemo(() => { + if (!durationSeconds) { + return null; + } + + const parsedDuration = Number(durationSeconds); + + if (!Number.isFinite(parsedDuration) || parsedDuration <= 0) { + return null; + } + + return parsedDuration; + }, [durationSeconds]); React.useEffect(() => { if (containerHeight > 0 && !timerIsRunning) { @@ -190,16 +250,16 @@ export default function TimerScreen() { }); const finalizeSprintSession = React.useCallback(async (finalStatus: 'completed' | 'cancelled' | 'expired') => { - const activeSprint = await GetActiveSprint(); + const activeSession = await GetActiveSession(); - if (!activeSprint) { + if (!activeSession) { return; } - await RemoveActiveSprint(); + await RemoveActiveSession(); const { error } = await supabase.rpc('finalize_sprint_session', { - p_session_id: activeSprint.sessionId, + p_session_id: activeSession.sessionId, p_final_status: finalStatus, p_ended_at: new Date().toISOString(), }); @@ -271,11 +331,16 @@ export default function TimerScreen() { cancelOverlayAnimation.setValue(0); setTimerOverlayVisible(false); setTimeRemaining(0); + setCurrentSessionType(selectedSessionType); setIsRunning(false); - }, [cancelOverlayAnimation, timerAnimation, timerOverlayOffscreenY]); + }, [cancelOverlayAnimation, selectedSessionType, timerAnimation, timerOverlayOffscreenY]); const finishTimer = React.useCallback(() => { clearCountdownInterval(); + const completedSessionType = currentSessionType; + const completedReturnTaskId = + completedSessionType === 'focus' ? (tId ?? null) : (returnTaskId ?? null); + void finalizeSprintSession('completed'); Animated.parallel([ @@ -308,12 +373,11 @@ export default function TimerScreen() { }), ]).start(() => { setIsRunning(false); - /* TODO - Implement store and send of ellapsed time value in seconds to DB - for total time spent statistic - */ - resetSessionValues(); + setPostSessionPrompt({ + completedSessionType, + returnTaskId: completedReturnTaskId, + }); }); }); }, [ @@ -321,10 +385,13 @@ export default function TimerScreen() { cancelButtonAnimation, clearCountdownInterval, countdownAnimation, + currentSessionType, finalizeSprintSession, focusModeAnimation, resetSessionValues, taskDetailsAnimation, + returnTaskId, + tId, ]); // This picks up the timer overlay animation from the current Y position and @@ -416,31 +483,40 @@ export default function TimerScreen() { ); React.useEffect(() => { - if (!tId || timerIsRunning || containerHeight === 0) { + if (timerIsRunning || containerHeight === 0) { return; } const restoreSprint = async () => { - const activeSprint = await GetActiveSprint(); + const activeSession = await GetActiveSession(); - if (!activeSprint || activeSprint.taskId !== tId) { + if (!activeSession) { return; } - const remainingMs = activeSprint.endTime - Date.now(); + if (activeSession.sessionType === 'focus' && activeSession.taskId !== tId) { + return; + } + + if (activeSession.sessionType !== 'focus' && selectedSessionType !== activeSession.sessionType) { + return; + } + + const remainingMs = activeSession.endTime - Date.now(); if (remainingMs <= 0) { await finalizeSprintSession('expired'); return; } - const totalMs = activeSprint.durationSeconds * 1000; + const totalMs = activeSession.durationSeconds * 1000; const elapsedMs = totalMs - remainingMs; const elapsedRatio = Math.max(0, Math.min(elapsedMs / totalMs, 1)); const restoredY = timerOverlayHeight * elapsedRatio; setIsRunning(true); setTimerOverlayVisible(true); + setCurrentSessionType(activeSession.sessionType); sessionStartedAtRef.current = Date.now() - elapsedMs; sessionDurationMsRef.current = totalMs; @@ -451,7 +527,7 @@ export default function TimerScreen() { taskDetailsAnimation.setValue(1); cancelOverlayAnimation.setValue(0); - startCountdown(activeSprint.endTime); + startCountdown(activeSession.endTime); startProgressAnimation(restoredY); }; @@ -467,29 +543,39 @@ export default function TimerScreen() { startCountdown, startProgressAnimation, taskDetailsAnimation, + selectedSessionType, tId, timerOverlayHeight, timerIsRunning, ]); - const startTimerSession = React.useCallback(async () => { - if (!tId || timerIsRunning || containerHeight === 0) { + const startSession = React.useCallback(async ({ + sessionType, + taskId, + durationSeconds, + }: StartSessionInput) => { + if (timerIsRunning || containerHeight === 0) { return; } - const totalSeconds = duration * TIMER_UNIT_IN_SECONDS; - const endTime = Date.now() + totalSeconds * 1000; + if (sessionType === 'focus' && !taskId) { + Alert.alert('Could not start session', 'Focus sessions must be linked to a task.'); + return; + } + + const endTime = Date.now() + durationSeconds * 1000; const { data: userData, error: userError } = await supabase.auth.getUser(); if (userError || !userData.user?.id) { - Alert.alert('Could not start sprint', 'Missing signed-in user for sprint session.'); + Alert.alert('Could not start session', 'Missing signed-in user.'); return; } const { data: sessionData, error: sessionError } = await supabase.rpc('start_sprint_session', { - p_task_id: tId, + p_task_id: taskId, p_user_id: userData.user.id, - p_planned_duration: totalSeconds, + p_session_type: sessionType, + p_planned_duration: durationSeconds, p_started_at: new Date().toISOString(), }); @@ -497,8 +583,8 @@ export default function TimerScreen() { if (sessionError || !sessionId) { Alert.alert( - 'Could not start sprint', - sessionError?.message ?? 'Sprint session could not be created.' + 'Could not start session', + sessionError?.message ?? 'Session could not be created.' ); return; } @@ -506,18 +592,20 @@ export default function TimerScreen() { Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success); setIsRunning(true); setTimerOverlayVisible(true); + setCurrentSessionType(sessionType); taskDetailsAnimation.setValue(0); countdownAnimation.setValue(0); cancelOverlayAnimation.setValue(0); sessionStartedAtRef.current = Date.now(); - sessionDurationMsRef.current = totalSeconds * 1000; + sessionDurationMsRef.current = durationSeconds * 1000; - void SaveActiveSprint({ + void SaveActiveSession({ sessionId, - taskId: tId, - durationSeconds: totalSeconds, + sessionType, + taskId, + durationSeconds, endTime, }); @@ -531,10 +619,54 @@ export default function TimerScreen() { runStartSequence, startCountdown, taskDetailsAnimation, - tId, timerIsRunning, ]); + const startTimerSession = React.useCallback(async () => { + if (selectedSessionType === 'focus' && !tId) { + return; + } + + const totalSeconds = + selectedDurationSeconds ?? (selectedDurationMinutes ?? duration) * TIMER_UNIT_IN_SECONDS; + + await startSession({ + sessionType: selectedSessionType, + taskId: selectedSessionType === 'focus' ? (tId ?? null) : null, + durationSeconds: totalSeconds, + }); + }, [duration, selectedDurationMinutes, selectedDurationSeconds, selectedSessionType, startSession, tId]); + + const handleStartShortBreak = React.useCallback(() => { + setPostSessionPrompt(null); + router.replace({ + pathname: '/task/timer', + params: { + sessionType: 'short_break', + durationMinutes: String(SHORT_BREAK_DURATION_MINUTES), + returnTaskId: tId ?? undefined, + }, + }); + }, [tId]); + + const handleContinueSameTask = React.useCallback(() => { + if (!postSessionPrompt?.returnTaskId) { + router.replace('/'); + return; + } + + setPostSessionPrompt(null); + router.replace({ + pathname: '/task/timer', + params: { tId: postSessionPrompt.returnTaskId }, + }); + }, [postSessionPrompt]); + + const handleBackToDashboard = React.useCallback(() => { + setPostSessionPrompt(null); + router.replace('/'); + }, []); + const cancelTimer = React.useCallback(() => { if (!timerIsRunning) { return; @@ -745,7 +877,7 @@ export default function TimerScreen() { Start - Sprint + {selectedSessionType === 'focus' ? ( + Sprint + ) : null} @@ -814,7 +948,7 @@ export default function TimerScreen() { }, ]} > - Hold to end sprint + Hold to end session @@ -836,32 +970,45 @@ export default function TimerScreen() { {formatTime(timeRemaining)} - - item.toString()} - horizontal - bounces={false} - onScroll={Animated.event([{ nativeEvent: { contentOffset: { x: scrollX } } }], { - useNativeDriver: true, - })} - showsHorizontalScrollIndicator={false} - onMomentumScrollEnd={handleTimerPickerMomentumEnd} - snapToInterval={ITEM_SIZE} - decelerationRate="fast" - style={styles.timerPickerList} - contentContainerStyle={styles.timerPickerContent} - renderItem={renderTimerItem} - /> - + {!timerIsRunning && showDurationPicker ? ( + + item.toString()} + horizontal + bounces={false} + onScroll={Animated.event([{ nativeEvent: { contentOffset: { x: scrollX } } }], { + useNativeDriver: true, + })} + showsHorizontalScrollIndicator={false} + onMomentumScrollEnd={handleTimerPickerMomentumEnd} + snapToInterval={ITEM_SIZE} + decelerationRate="fast" + style={styles.timerPickerList} + contentContainerStyle={styles.timerPickerContent} + renderItem={renderTimerItem} + /> + + ) : !timerIsRunning ? ( + + + {selectedDurationSeconds != null + ? `${selectedDurationSeconds} sec` + : `${selectedDurationMinutes ?? SHORT_BREAK_DURATION_MINUTES} min`} + + + This session uses a fixed duration so you can move straight into the next step. + + + ) : null} - {task?.title ?? 'Sprint'} - {task?.description || 'Focus on this task until the timer ends.'} + + {currentSessionType === 'focus' ? task?.title ?? 'Sprint' : getSessionLabel(currentSessionType)} + + + {currentSessionType === 'focus' + ? task?.description || 'Focus on this task until the timer ends.' + : 'Use this timer as a real break before starting the next focus session.'} + + + {postSessionPrompt ? ( + + + Session complete + + {postSessionPrompt.completedSessionType === 'focus' + ? 'What do you want to do next?' + : 'Break finished'} + + + {postSessionPrompt.completedSessionType === 'focus' + ? 'Start a short break now or skip it and return to your dashboard.' + : 'Jump back into the same task or head back to the dashboard.'} + + + {postSessionPrompt.completedSessionType === 'focus' ? ( + <> + + Start short break + + + Skip break + + + ) : ( + <> + + Continue with same task + + + Back to dashboard + + + )} + + + ) : null} ); } @@ -915,6 +1106,27 @@ const styles = StyleSheet.create({ timerPickerList: { flexGrow: 0, }, + fixedDurationBlock: { + position: 'absolute', + top: height * 0.28, + left: 32, + right: 32, + alignItems: 'center', + }, + fixedDurationLabel: { + color: colors.text, + fontSize: 56, + fontFamily: 'Menlo', + fontWeight: '900', + textAlign: 'center', + }, + fixedDurationDescription: { + color: colors.text, + fontSize: 18, + lineHeight: 26, + marginTop: 16, + textAlign: 'center', + }, timerPickerContent: { paddingHorizontal: ITEM_SPACING, }, @@ -984,4 +1196,66 @@ const styles = StyleSheet.create({ right: 0, alignItems: 'center', }, + postSessionOverlay: { + ...StyleSheet.absoluteFillObject, + backgroundColor: 'rgba(20, 26, 34, 0.94)', + justifyContent: 'center', + paddingHorizontal: 24, + zIndex: 10, + }, + postSessionCard: { + borderRadius: 28, + backgroundColor: '#F7F4EA', + paddingHorizontal: 24, + paddingVertical: 28, + }, + postSessionEyebrow: { + color: '#7A6F5A', + fontSize: 13, + fontWeight: '700', + letterSpacing: 0.8, + textTransform: 'uppercase', + }, + postSessionTitle: { + color: '#323F4E', + fontSize: 30, + fontWeight: '800', + marginTop: 10, + }, + postSessionBody: { + color: '#52606D', + fontSize: 17, + lineHeight: 25, + marginTop: 12, + marginBottom: 24, + }, + postSessionPrimaryButton: { + minHeight: 54, + borderRadius: 18, + backgroundColor: '#323F4E', + alignItems: 'center', + justifyContent: 'center', + paddingHorizontal: 20, + }, + postSessionPrimaryButtonText: { + color: '#FFFFFF', + fontSize: 16, + fontWeight: '800', + }, + postSessionSecondaryButton: { + minHeight: 54, + borderRadius: 18, + borderWidth: 1, + borderColor: '#C2B8A3', + backgroundColor: '#EFE7D8', + alignItems: 'center', + justifyContent: 'center', + paddingHorizontal: 20, + marginTop: 12, + }, + postSessionSecondaryButtonText: { + color: '#323F4E', + fontSize: 16, + fontWeight: '700', + }, }); diff --git a/app/task/upsertTask.tsx b/app/task/upsertTask.tsx index f134dfa..07a552c 100644 --- a/app/task/upsertTask.tsx +++ b/app/task/upsertTask.tsx @@ -19,12 +19,14 @@ import { } from 'react-native'; export default function UpsertTask() { - const { tId, aId: routeAId } = useLocalSearchParams<{ + const { tId, aId: routeAId, flow } = useLocalSearchParams<{ tId?: string; aId?: string; + flow?: string; }>(); const isEditMode = Boolean(tId); + const isSetupFlow = flow === 'setup'; const [title, SetTitle] = useState(''); const [description, SetDescription] = useState(''); @@ -100,7 +102,7 @@ export default function UpsertTask() { const result = isEditMode && tId ? await supabase.from('tasks').update(payload).eq('tId', tId) - : await supabase.from('tasks').insert(payload); + : await supabase.from('tasks').insert(payload).select().single(); if (result.error) { SetIsSaving(false); @@ -122,6 +124,14 @@ export default function UpsertTask() { SetIsSaving(false); + if (!isEditMode && isSetupFlow && result.data?.tId) { + router.replace({ + pathname: '/task/timer', + params: { tId: result.data.tId }, + }); + return; + } + Alert.alert( isEditMode ? 'Task successfully updated!' : 'Task successfully created!' ); @@ -183,7 +193,7 @@ export default function UpsertTask() { Title Description ); -} \ No newline at end of file +} diff --git a/app/task/viewDetailsTask.tsx b/app/task/viewDetailsTask.tsx index 16ff67f..6930a72 100644 --- a/app/task/viewDetailsTask.tsx +++ b/app/task/viewDetailsTask.tsx @@ -1,4 +1,4 @@ -import { GetActiveSprint, RemoveActiveSprint } from '@/lib/asyncStorage'; +import { GetActiveSession, RemoveActiveSession } from '@/lib/asyncStorage'; import { formatDateTime } from '@/lib/date'; import { CheckAssignmentCompletion } from '@/lib/progress'; import { getSubjectColorSet, type SubjectColor } from '@/lib/subjectColors'; @@ -33,6 +33,7 @@ const { tId } = useLocalSearchParams<{ tId: string }>(); const [task, SetTask] = useState(null); const [session, SetSession] = useState(null); +const [completedFocusSessions, setCompletedFocusSessions] = useState(0); const [contextMeta, setContextMeta] = useState({ subjectTitle: 'No Subject', assignmentTitle: 'No Assignment', @@ -49,7 +50,24 @@ useEffect(() => { return () => sub.subscription.unsubscribe(); }, []); -const GetTask = async (taskId: string) => { +const loadTaskStudyActivity = useCallback(async (taskId: string, userId: string) => { + const { count, error } = await supabase + .from('sprint_sessions') + .select('sessionId', { count: 'exact', head: true }) + .eq('taskId', taskId) + .eq('userId', userId) + .eq('sessionType', 'focus') + .eq('status', 'completed'); + + if (error) { + setCompletedFocusSessions(0); + return; + } + + setCompletedFocusSessions(count ?? 0); +}, []); + +const GetTask = useCallback(async (taskId: string) => { const { data, error } = await supabase .from('tasks') .select('*') @@ -62,6 +80,7 @@ const GetTask = async (taskId: string) => { } SetTask(data); + await loadTaskStudyActivity(taskId, data.uId); if (data.aId) { const { data: assignmentData, error: assignmentError } = await supabase @@ -102,20 +121,20 @@ const GetTask = async (taskId: string) => { }); } } -}; +}, [loadTaskStudyActivity]); useFocusEffect( useCallback(() => { if (session && tId) { GetTask(tId); } - }, [session, tId]) + }, [GetTask, session, tId]) ); const handleSprintStart = async () => { - const activeSprint = await GetActiveSprint(); + const activeSession = await GetActiveSession(); - if (!activeSprint) { + if (!activeSession) { router.push({ pathname: '/task/timer', params: { tId: task?.tId}, @@ -125,10 +144,10 @@ const handleSprintStart = async () => { - const secondsLeft = Math.ceil((activeSprint.endTime - Date.now()) / 1000) + const secondsLeft = Math.ceil((activeSession.endTime - Date.now()) / 1000) if (secondsLeft <= 0) { - await RemoveActiveSprint(); + await RemoveActiveSession(); router.push({ pathname: '/task/timer', params: { tId: task?.tId} @@ -137,23 +156,23 @@ const handleSprintStart = async () => { } - if (activeSprint!.taskId === task?.tId) { + if (activeSession.taskId === task?.tId) { router.push({ pathname: '/task/timer', - params: { tId: activeSprint!.taskId}}); + params: { tId: activeSession.taskId ?? undefined }}); return; } Alert.alert( - 'Active sprint in progress', - 'Starting a new sprint will end the current active sprint', + 'Active session in progress', + 'Starting a new sprint will end the current active session', [ { text: 'Cancel', style: 'cancel', }, { text: 'Start new sprint', style: 'destructive', onPress: async () => { - await RemoveActiveSprint(); + await RemoveActiveSession(); router.push({ pathname: '/task/timer', params: { tId: task?.tId }, @@ -332,14 +351,46 @@ return ( {contextMeta.assignmentTitle} + + + + Status: {task.isCompleted ? 'Completed' : 'Not completed'} + + + + + + + Study activity + + + This tracks focused work on the task separately from whether the task is marked completed. + + + + + + Focus time + + + {formatTrackedTime(task.totalTimeInSeconds ?? 0)} + + + + + + Completed sessions + + + {completedFocusSessions} + + + Last changed: {formatDateTime(task.lastChanged)} - - Time spent: {formatTrackedTime(task.totalTimeInSeconds ?? 0)} - diff --git a/deploy/signup-confirmation/README.md b/deploy/signup-confirmation/README.md new file mode 100644 index 0000000..5670acc --- /dev/null +++ b/deploy/signup-confirmation/README.md @@ -0,0 +1,21 @@ +# Signup Confirmation Page + +This serves a very small static confirmation page with `nginx`. + +## Run + +```bash +docker compose up -d +``` + +It will be available on port `8080` on the VPS. + +## Files + +- `docker-compose.yml`: starts `nginx:alpine` +- `site/index.html`: the page shown after email confirmation + +## Notes + +- If you already have a reverse proxy on the VPS, point your domain or subdomain to `http://localhost:8080`. +- If you want this container to bind directly to port `80`, change `8080:80` to `80:80` in `docker-compose.yml`. diff --git a/deploy/signup-confirmation/docker-compose.yml b/deploy/signup-confirmation/docker-compose.yml new file mode 100644 index 0000000..3f2fe29 --- /dev/null +++ b/deploy/signup-confirmation/docker-compose.yml @@ -0,0 +1,9 @@ +services: + signup-confirmation: + image: nginx:alpine + container_name: study-sprint-signup-confirmation + restart: unless-stopped + ports: + - "8080:80" + volumes: + - ./site:/usr/share/nginx/html:ro diff --git a/deploy/signup-confirmation/site/index.html b/deploy/signup-confirmation/site/index.html new file mode 100644 index 0000000..7c35789 --- /dev/null +++ b/deploy/signup-confirmation/site/index.html @@ -0,0 +1,75 @@ + + + + + + Study Sprint + + + +
+

Study Sprint

+

Thank you for signing up.

+

Your email has been confirmed. You can now sign in to your account in the Study Sprint app.

+
+ + diff --git a/lib/asyncStorage.ts b/lib/asyncStorage.ts index dcd72e2..c12a845 100644 --- a/lib/asyncStorage.ts +++ b/lib/asyncStorage.ts @@ -1,11 +1,13 @@ import AsyncStorage from '@react-native-async-storage/async-storage'; +import type { SessionType } from '@/lib/types'; const notificationKey = (aId: string) => `assignment_notification_${aId}`; const activeSprintKey = 'active_sprint'; -export type ActiveSprint = { - sessionId: string, - taskId: string; +export type ActiveSession = { + sessionId: string; + sessionType: SessionType; + taskId: string | null; durationSeconds: number; endTime: number; }; @@ -22,20 +24,20 @@ export async function RemoveAssignmentNotificationId(aId: string) { await AsyncStorage.removeItem(notificationKey(aId)); } -export async function SaveActiveSprint(activeSprint: ActiveSprint) { - await AsyncStorage.setItem(activeSprintKey, JSON.stringify(activeSprint)); +export async function SaveActiveSession(activeSession: ActiveSession) { + await AsyncStorage.setItem(activeSprintKey, JSON.stringify(activeSession)); } -export async function GetActiveSprint() { - const activeSprint = await AsyncStorage.getItem(activeSprintKey); +export async function GetActiveSession() { + const activeSession = await AsyncStorage.getItem(activeSprintKey); - if (!activeSprint) { + if (!activeSession) { return null; } - return JSON.parse(activeSprint) as ActiveSprint; + return JSON.parse(activeSession) as ActiveSession; } -export async function RemoveActiveSprint() { +export async function RemoveActiveSession() { await AsyncStorage.removeItem(activeSprintKey); } diff --git a/lib/types.ts b/lib/types.ts index 65e93a2..fcbc7a0 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -1,5 +1,7 @@ import type { SubjectColor } from '@/lib/subjectColors'; +export type SessionType = 'focus' | 'short_break' | 'long_break'; + export type Task = { tId: string; title: string; diff --git a/notes/projectVision/AppDev_Project_Vision.pdf b/notes/projectVision/AppDev_Project_Vision.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b9c0369c13e209baf37262d2a854ad676dfaae1f GIT binary patch literal 459242 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

@2EHtteB3y1O6kg7T5M!`Jb0k}v3lKt{SGN6 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 OoC@8%c=7hbyPH1_&V#@J literal 0 HcmV?d00001 diff --git a/notes/vision-gap-closure-plan-2026-05-03.md b/notes/vision-gap-closure-plan-2026-05-03.md new file mode 100644 index 0000000..64c955f --- /dev/null +++ b/notes/vision-gap-closure-plan-2026-05-03.md @@ -0,0 +1,257 @@ +# Study Sprint Project Vision Gap Closure Plan + +## #Overview +This document turns the remaining gaps between the current app and the project vision into a concrete implementation plan. + +Each section below covers one gap between the current version of Study Sprint and the product vision described in `notes/projectVision/AppDev_Project_Vision.pdf`. + +The goal is not to expand the app into a large productivity platform. The goal is to close the remaining vision gaps while keeping the product small, student-focused, and realistic to complete. + +The app direction assumes the current backend-based architecture remains in place. The report can explain that the project moved from a local-storage-first idea to a database-backed model because authentication and cross-device persistence would otherwise provide little practical value. + +--- + +## #Gap1FocusSessionsAndBreaks + +### #VisionGap +The vision describes a study app built around focus sessions and breaks. + +The current app supports task-linked focus sprints, but it does not yet complete the full study loop with a real break flow. + +### #WhyThisMatters +Without break handling, the timer is only a session starter and stopper. + +That means the app is missing part of the core study pattern the vision promises. + +### #Plan +1. Add a lightweight session model that distinguishes between `focus`, `short break`, and `long break`. +2. Keep task linkage only on `focus` sessions so break sessions stay simple. +3. After a completed focus sprint, show a post-session choice screen with: + - `Start short break` + - `Skip break` +4. After a completed short break, show: + - `Continue with same task` + - `Back to dashboard` +5. Add a simple cycle rule: + - after a chosen number of completed focus sessions, offer `long break` instead of `short break` +6. Keep the first implementation minimal by using fixed default durations before considering user customization. + +### #DoneWhen +- The app supports a full `focus -> break -> continue` flow. +- Breaks are treated as real app states, not just something the user has to manage manually. +- The timer flow now matches the vision wording about focus sessions and breaks. + +--- + +## #Gap2DashboardProgressAndHistory + +### #VisionGap +The vision says the app should make progress visible through completed sessions, study time, or simple statistics. + +The current app already shows active sprint state, upcoming deadline tasks, and task time data, but the dashboard still needs to work more clearly as a progress overview. + +### #WhyThisMatters +The app should answer the question: `Am I actually making progress?` + +If that answer is not obvious from the dashboard, the motivational part of the vision is only partially fulfilled. + +### #Plan +1. Add a compact dashboard progress summary near the top of the screen. +2. Show at least these values: + - `Focus sessions completed today` + - `Minutes studied today` + - `Minutes studied this week` +3. Add a `Recent sessions` section below the summary. +4. Show for each recent session: + - task title if present + - session type + - duration + - completed or cancelled state + - time or date +5. If there is room and it stays visually simple, add a small `Recently completed tasks` section after recent sessions. +6. Keep the dashboard layout compact so it still feels like a low-friction home screen rather than a report page. + +### #DoneWhen +- The dashboard gives immediate visibility into recent study effort. +- Session history is visible without needing a dedicated analytics screen. +- Progress feels tied to real study behavior, not only to planning structure. + +--- + +## #Gap3ConsistentProgressModel + +### #VisionGap +The vision expects progress to feel simple and understandable. + +Right now, progress exists in multiple places, but it should be made more consistent so the user can understand what each screen is measuring. + +### #WhyThisMatters +If `progress` means one thing on one screen and something unrelated on another, the app feels less clear and less intentional. + +### #Plan +1. Define one clear meaning of progress per layer: + - `Subject`: completed assignments out of total assignments + - `Assignment`: completed tasks out of total tasks + - `Task`: total study time plus completed focus sessions + - `Dashboard`: today's and this week's study activity +2. Review the labels on each screen so they match those meanings exactly. +3. Make sure no screen mixes planning progress and session progress without clearly separating them. +4. Re-check the database queries and UI labels so each metric comes from the right source of truth. +5. If needed, add small helper text where a metric could otherwise be ambiguous. + +### #DoneWhen +- Each screen communicates one clear type of progress. +- The app feels easier to understand from first use. +- Progress presentation supports the vision goal of simplicity. + +--- + +## #Gap4FirstTimeUserFriction + +### #VisionGap +The vision emphasizes low friction and ease of use from the first launch. + +The current app uses authentication and a structured hierarchy, which is reasonable for the chosen architecture, but it still needs a smoother first-run experience. + +### #WhyThisMatters +The app can still meet the low-friction goal even with auth, but only if the user is guided quickly into the first meaningful action. + +### #Plan +1. Add a short explanation on the login or signup flow that says: + - what the app does + - why an account exists + - that progress follows the user +2. After the first successful signup, route the user into a guided setup flow instead of a generic empty dashboard. +3. Build the setup flow as a strict sequence: + - create first subject + - create first assignment + - create first task + - start first sprint +4. Add clear empty states on key screens so each one gives only one obvious next action. +5. Use prefilled examples or short placeholder hints where that reduces thinking for the user. +6. Avoid giving the user too many choices before they have created their first workable study path. + +### #DoneWhen +- A new user can reach their first sprint with minimal confusion. +- The app no longer feels empty or directionless after authentication. +- The structured hierarchy feels guided instead of heavy. + +--- + +## #Gap5MainFlowFriction + +### #VisionGap +The vision promises a fast and focused experience that reduces procrastination rather than adding more friction. + +The current app already has the right hierarchy, but the main flow should be tightened so starting real work feels faster. + +### #WhyThisMatters +Even a good feature set can feel wrong if the path to action is too slow or too fragmented. + +### #Plan +1. Make `Start Sprint` the strongest action on task-level screens. +2. Use a sensible default sprint duration so the user can begin immediately without extra setup. +3. Review the number of taps from dashboard to active study session and remove unnecessary detours. +4. Ensure that post-sprint actions are explicit and simple: + - start break + - continue same task + - return to dashboard +5. Keep the dashboard focused on next actions rather than loading it with too many management controls. +6. Re-check labels, button wording, and action order so the app always pushes the user toward concrete study work. + +### #DoneWhen +- Starting a study sprint feels fast. +- The app consistently guides the user toward focused work. +- The product behavior matches the vision goal of low-friction use. + +--- + +## #Gap6ReliabilityAndSessionState + +### #VisionGap +The vision identifies reliability as critical. + +The app already has a stronger session model than before, but reliability work should explicitly close the loop for running, finishing, cancelling, resuming, and displaying sessions. + +### #WhyThisMatters +If the timer or sprint state feels inconsistent, the app loses trust very quickly. + +### #Plan +1. Review the full sprint lifecycle and make sure every session ends in a valid final state: + - `completed` + - `cancelled` + - `expired` + - break equivalents if breaks are added +2. Make sure dashboard history, task totals, and active sprint state all reflect the same underlying session truth. +3. Confirm that reopening the app after a session should have ended produces the correct finalization behavior. +4. Confirm that cancelled sessions do not accidentally remain active in local resume storage. +5. Test the edge cases around: + - app backgrounding + - app reopen + - expired sprint reopen + - switching between timer and dashboard +6. Document any remaining non-ideal behavior clearly if platform limitations prevent a perfect solution. + +### #DoneWhen +- Session state transitions are predictable. +- History, task totals, and active sprint status stay in sync. +- The timer feels dependable enough to support the vision's reliability requirement. + +--- + +## #Gap7ScopeDisciplineAndVisionAlignment + +### #VisionGap +The vision values a realistic scope and a smaller polished product over a larger unfinished one. + +To stay aligned with that, the remaining work needs to focus only on the features that directly close the vision gaps. + +### #WhyThisMatters +The fastest way to miss the vision now is to expand sideways into extra features instead of finishing the core loop properly. + +### #Plan +1. Treat these as the remaining priority set: + - focus and break flow + - dashboard progress summary + - session history visibility + - onboarding and empty-state friction reduction + - reliability and session-state cleanup +2. Explicitly avoid adding large optional features during this phase, such as: + - social login + - advanced analytics + - calendar systems + - collaboration tools + - broad gamification +3. Update the report wording so the architectural shift to DB/auth is explained as a pragmatic decision, not as a contradiction left unresolved. +4. Re-check the final app against the vision using product outcomes rather than older implementation assumptions like strictly local persistence. + +### #DoneWhen +- The team is working only on features that directly close vision gaps. +- The report and the final app tell the same story. +- The product remains small, focused, and polished enough for the project scope. + +--- + +## #SuggestedImplementationOrder +1. Implement the focus and break session flow. +2. Add dashboard progress summary and recent session history. +3. Make progress definitions consistent across subject, assignment, task, and dashboard screens. +4. Build the first-time setup flow and improve empty states. +5. Tighten the main sprint-start flow and post-session actions. +6. Run reliability testing across active sprint, cancelled sprint, expired sprint, and restored sprint paths. +7. Update the report so the DB/auth decision and final scope are explained clearly. + +--- + +## #FinalGoal +When this plan is complete, Study Sprint should feel like a finished small study app rather than a partly connected prototype. + +A user should be able to: +- sign in and understand the app quickly +- create a simple study structure without confusion +- start a focus session tied to a task +- continue naturally into a break +- return and continue studying +- see visible proof of progress on the dashboard + +That is the point where the current app most clearly matches the project vision. diff --git a/notes/work-report-timer-2026-05-03.md b/notes/work-report-timer-2026-05-03.md new file mode 100644 index 0000000..13bbe75 --- /dev/null +++ b/notes/work-report-timer-2026-05-03.md @@ -0,0 +1,392 @@ +# Focus, Dashboard, And Progress Model Work Report + +## #Overview +Today the timer work moved from a sprint-only model toward a more general session flow that can support both focused work and breaks. + +The main goal was to start closing the vision gap around `focus -> break -> continue`, while keeping the implementation local to the existing timer route instead of introducing a larger navigation or state-management rewrite. + +The work therefore covered both app-side session-model changes and the Supabase function updates needed to make the new flow actually start and finalize sessions correctly. + +Later in the same work session, the scope also expanded into the dashboard and the progress presentation on the detail screens so the app better matches the remaining vision-gap plan. + +The scope then expanded one step further into first-time-user friction, so the work also covered a guided onboarding path and clearer empty states for new accounts. + +Later still, the work expanded beyond the app itself into the signup-confirmation path around account creation. That included auth-screen behavior fixes, a shorter guided-setup timer for quick verification, a minimal confirmation landing page for VPS deployment, Caddy routing, and a less boilerplate-looking confirmation email template. + +--- + +## #ImplementedFeatures + +### #GeneralSessionModel +Changed the local timer model from a sprint-specific structure into a more general session structure: +- added `SessionType` in `lib/types.ts` +- introduced the session types: + - `focus` + - `short_break` + - `long_break` +- replaced the old `ActiveSprint` shape with `ActiveSession` in `lib/asyncStorage.ts` +- stored `sessionType` together with `sessionId`, `taskId`, `durationSeconds`, and `endTime` + +This means the active timer is no longer assumed to always be a task-linked focus sprint. + +--- + +### #TimerSessionStartAndRestore +Updated the timer screen so it can start and restore different session types: +- replaced sprint-specific storage calls with `GetActiveSession(...)`, `SaveActiveSession(...)`, and `RemoveActiveSession(...)` +- generalized the timer start path into `startSession(...)` +- passed `p_session_type` into the Supabase `start_sprint_session(...)` RPC +- kept task linkage only for `focus` sessions +- updated the restore logic so a focus session restores by `tId`, while break sessions restore by `sessionType` + +This gives the existing timer screen enough information to behave differently for focus sessions and break sessions without creating a second timer screen. + +--- + +### #DashboardAndTaskIntegration +Updated the surrounding screens so they understand the new active-session shape: +- updated `app/task/viewDetailsTask.tsx` to read the new active session model +- updated `app/(tabs)/index.tsx` so the dashboard card can describe either a focus session or a break session +- made the dashboard open the timer with either a task id or a break-session configuration, depending on what is active + +This keeps the rest of the app aligned with the timer change, instead of leaving the new session model isolated to one file. + +--- + +### #DashboardProgressAndHistory +Extended the dashboard so it works more clearly as a study-activity overview: +- added a compact `Study progress` summary near the top of the dashboard +- showed: + - `Focus sessions today` + - `Minutes today` + - `Minutes this week` +- loaded the summary from `sprint_sessions` instead of from planning data +- added a `Recent sessions` section showing: + - task title when available + - session type + - duration + - final status + - date and time +- added a small `Recently completed tasks` section based on recent task completion updates + +This moved the dashboard closer to the vision requirement that progress should reflect actual study behavior rather than only task structure. + +--- + +### #DashboardLayoutRestructure +Reworked the order of the dashboard sections so the screen reads more clearly as a home surface: +- kept the active-session card at the top when relevant +- placed `Study progress` before the task lists +- moved `Tasks with upcoming deadlines` directly under the progress summary +- pushed `Recent sessions` and `Recently completed tasks` lower as secondary context +- made the lower history area work as a side-by-side layout when screen width allows it +- changed the dashboard body to a scrollable layout so the extra sections still fit without clipping + +The result is a dashboard that moves from orientation, to next action, to history instead of feeling like a stacked report page. + +--- + +### #ConsistentProgressModel +Aligned the progress language across the detail screens so each layer measures one clear thing: +- on the subject details screen, changed the progress label from `Assignment Progress` to `Assignments completed` +- added helper text clarifying that subject progress is based only on completed assignments +- on the assignment details screen, changed the progress label from `Task Progress` to `Tasks completed` +- added helper text clarifying that assignment progress is based only on completed tasks +- on the task details screen, separated completion state from study activity +- added a dedicated `Study activity` block showing: + - tracked focus time from `tasks.totalTimeInSeconds` + - completed focus-session count from `sprint_sessions` +- added an explicit task status label so completion state is not confused with study effort + +This made the meaning of progress more consistent: +- `Subject` now reads as assignment completion +- `Assignment` now reads as task completion +- `Task` now reads as study effort plus completion state +- `Dashboard` now reads as recent study activity + +--- + +### #FirstTimeSetupAndEmptyStates +Added the first guided setup flow so new users are pushed into one clear study path instead of landing in an empty app: +- added a dedicated `app/setup.tsx` route for first-time setup +- changed signup so a newly authenticated user is routed to setup instead of directly to the dashboard +- built the setup flow as a strict sequence: + - create first subject + - create first assignment + - create first task + - start first sprint +- updated the subject, assignment, and task creation screens so they can advance automatically to the next setup step +- removed the setup-breaking success popups between those guided creation steps +- added short auth-screen explanations describing: + - what the app does + - why an account exists + - that study structure and progress follow the user +- added clearer empty states on the dashboard and subjects screen that point the user into guided setup +- tightened the empty-state copy on subject and assignment details so each one points toward the next required object in the hierarchy + +This closes a large part of the first-run friction gap without introducing a separate onboarding system or broader navigation rewrite. + +--- + +### #AuthScreenKeyboardHandling +Adjusted the auth screens so text inputs do not stay buried behind the on-screen keyboard: +- updated `app/login.tsx` so the login content scrolls and shifts upward when the keyboard opens +- updated `app/createUser.tsx` so the entire create-account content block lifts upward with the keyboard instead of only trying to scroll one input into view +- kept the changes local to the auth screens instead of introducing a broader shared keyboard abstraction + +This was aimed specifically at the real usability problem where the password field could end up hidden during login or signup. + +--- + +### #SignupNavigationAndHeaderAlignment +Adjusted the signup screen navigation so it matches the rest of the app more closely: +- removed the temporary in-screen back button experiment from the signup page +- re-enabled the normal stack header for `createUser` in `app/_layout.tsx` +- kept signup navigation on the default app-style back arrow instead of a one-off local control + +This kept the auth flow visually more consistent with the rest of the route stack. + +--- + +### #GuidedSetupFiveSecondSprint +Changed guided setup so the first sprint can be tested almost immediately: +- updated `app/setup.tsx` so the setup flow opens the timer with a fixed `5` second duration +- extended `app/task/timer.tsx` so it can also accept an explicit `durationSeconds` route param +- kept the rest of the timer behavior unchanged, so the setup-specific shortcut still runs through the same session start, storage, and completion flow as normal timers + +This made the first-run path quicker to test without changing the broader timer model back to a special-case setup implementation. + +--- + +### #SignupConfirmationDeployment +Built the first deployable confirmation landing page outside the Expo app: +- added `deploy/signup-confirmation/site/index.html` as a minimal static confirmation page +- added `deploy/signup-confirmation/docker-compose.yml` so the page can be served with `nginx:alpine` +- added a small README for VPS deployment notes and port mapping +- verified the page deployment path together with the external VPS/domain setup already in use + +This created a concrete destination URL for signup confirmation emails instead of leaving the email to resolve into a blank or undefined endpoint. + +--- + +### #CaddyAndEmailConfirmationPolish +Finished the external confirmation flow around signup: +- corrected the Caddy reverse-proxy target from container port `8080` to `80` for the `nginx` confirmation container +- confirmed that the confirmation page then resolved correctly behind the existing Caddy-plus-Docker setup +- replaced the original bare confirmation email body with a cleaner branded HTML email using the existing `{{ .ConfirmationURL }}` placeholder + +This moved the signup confirmation flow from a functional but rough setup into something that is both deployable and presentable. + +--- + +### #PostSessionBreakFlow +Added the first real post-session flow in the timer UI: +- after a completed focus session, the timer now shows: + - `Start short break` + - `Skip break` +- starting the break reopens the same timer route in `short_break` mode +- after a completed short break, the timer now shows: + - `Continue with same task` + - `Back to dashboard` +- passed `returnTaskId` through the route so the timer can return the user to the original task after the break + +This is the first implementation of an actual study loop rather than a timer that simply ends and disappears. + +--- + +### #BreakTimerPresentation +Adjusted the timer UI so break sessions read more clearly: +- added a fixed-duration block for break sessions instead of showing the normal duration picker +- used a fixed 5-minute short-break duration for the first implementation +- kept the focus-session picker unchanged +- made the break start button match the existing `Start Sprint` button styling, but show only `Start` +- removed the bug where picker or pre-start break elements remained visible on top of the running break session + +This keeps the first break flow minimal and visually consistent with the existing timer screen. + +--- + +### #SupabaseFunctionAlignment +Adjusted the Supabase side so the new app flow could actually run: +- updated `start_sprint_session(...)` to accept `p_session_type` +- allowed break sessions to start with `taskId = null` +- aligned the SQL with the real table schema using: + - `sessionId` + - `taskId` + - `userId` + - `sessionType` + - `countedIntoTaskTotal` +- corrected function-return behavior so the app receives the created session id in the shape it expects +- kept finalize logic so only `focus` sessions contribute to `tasks.totalTimeInSeconds` + +Without this database alignment, the app-side session model would compile but still fail when starting real sessions. + +--- + +## #ProblemsAndSetbacks + +### #SchemaMismatch +The main blocker today was that the first SQL version assumed table columns that did not exist in the real Supabase schema. + +The actual `sprint_sessions` table already contained: +- `sessionId` +- `taskId` +- `userId` +- `plannedDuration` +- `startedAt` +- `endedAt` +- `elapsedSeconds` +- `status` +- `countedIntoTaskTotal` +- `sessionType` + +But it did not contain `createdAt` or `updatedAt`, so the first function version failed at runtime. + +--- + +### #FunctionReturnShape +Another blocker was the shape of the return value from `start_sprint_session(...)`. + +Even after the insert worked, the app still showed: +- `Session could not be created.` + +The issue was not the insert itself, but that the returned value shape did not match what `getSessionId(...)` was looking for on the app side. + +This had to be corrected so the RPC returned the created session id in a directly readable object shape. + +--- + +### #PauseUIScreenOverlap +The first version of the break UI had presentation bugs: +- the pause start button text looked cramped and awkward +- pre-start pause UI stayed visible after the break actually started +- picker or fixed-duration elements overlapped the running break session + +This was corrected by hiding pre-start break UI while the timer is running and by reverting the pause start button back to the same visual model as the existing sprint start button. + +--- + +### #ConfirmationRoutePortMismatch +The external signup-confirmation deployment initially failed behind Caddy with `HTTP ERROR 502`. + +The actual issue was not the Docker network arrangement itself, but that the reverse proxy was targeting `signup-confirmation:8080` even though the `nginx` container listens internally on port `80`. + +Changing the upstream target to the real container port fixed the route. + +--- + +## #CurrentState + +The timer flow now goes further than the previous sprint-only model. + +The app now supports: +- starting a `focus` session tied to a task +- starting a `short_break` session with no task linkage +- storing and restoring the active session with its type +- showing a post-focus decision between taking a break or skipping it +- returning from a completed short break into the same task flow or back to the dashboard +- keeping break sessions out of task time totals + +At this point, the app has the first working version of the focus-and-break loop described in the vision plan, even though the cycle logic and long-break offer are not implemented yet. + +The dashboard also now gives a clearer answer to: +- `What have I done today?` +- `What should I work on next?` + +And the detail screens now separate planning completion from study activity more explicitly, which makes the app easier to read without having to infer what each progress bar means. + +For a brand-new user, the app also no longer drops straight into a generic empty state after account creation. There is now a clearer route from signup to: +- first subject +- first assignment +- first task +- first sprint + +That makes the hierarchy feel more guided and less like a blank structure the user has to interpret alone. + +The signup path also now has a more complete confirmation loop around it: +- the auth screens behave more safely when the mobile keyboard opens +- guided setup can launch a very short first sprint for fast verification +- the confirmation email can point to a real public landing page +- that landing page has a working Docker/Caddy deployment path on the VPS +- the email itself no longer looks like a raw boilerplate template + +--- + +## #Verification + +During today's work, the following behaviors were verified through implementation checks and runtime iteration: +- the new session model compiles across timer, dashboard, task details, and local storage +- `start_sprint_session(...)` now succeeds after the Supabase function updates +- the timer can start using the new session-based flow +- break sessions no longer leave the picker or fixed-duration setup visible on top of the running timer +- the dashboard compiles with the new progress-summary, recent-session, and recent-completion sections +- the task details screen compiles with a new `sprint_sessions`-based completed-session count +- the subject and assignment detail screens now label completion metrics more explicitly +- the new guided setup route compiles and links correctly with the subject, assignment, and task creation flow +- the login and signup screens compile after the keyboard-handling adjustments +- the guided setup route now opens the timer with an explicit 5-second fixed duration +- the deployable signup-confirmation page was brought up behind the VPS Caddy setup after correcting the upstream container port from `8080` to `80` +- the confirmation email template was updated to a cleaner HTML version while keeping `{{ .ConfirmationURL }}` as the actual confirmation link placeholder + +Static verification also passed: + +```text +npx tsc --noEmit +exited successfully + +npm run lint +exited with existing warning only in: +- app/task/timer.tsx +``` + +I did not run a live interactive app test for the later dashboard and progress-model changes. That part of the verification is static rather than runtime-confirmed. + +--- + +## #FilesChanged + +Main app files worked on: + +```text +app/task/timer.tsx +app/task/viewDetailsTask.tsx +app/(tabs)/index.tsx +app/(tabs)/subjects.tsx +app/setup.tsx +app/subject/viewDetailsSubject.tsx +app/subject/upsertSubject.tsx +app/assignment/viewDetailsAssignment.tsx +app/assignment/upsertAssignment.tsx +app/task/upsertTask.tsx +app/createUser.tsx +app/login.tsx +app/_layout.tsx +lib/asyncStorage.ts +lib/types.ts +deploy/signup-confirmation/docker-compose.yml +deploy/signup-confirmation/site/index.html +deploy/signup-confirmation/README.md +``` + +New note added: + +```text +notes/work-report-timer-2026-05-03.md +``` + +--- + +## #Conclusion + +The main result today was not just a timer change, but a broader step toward closing the remaining vision gaps around study flow and progress clarity. + +The app now has: +- a session model that can represent both focused work and breaks +- the first concrete `focus -> break -> continue` path from the vision plan +- a dashboard that reflects recent study effort more directly +- detail screens that use more explicit and consistent progress meanings +- a first guided onboarding path that leads a new user from signup to their first workable sprint path +- more usable auth screens when entering credentials on mobile +- a complete basic signup-confirmation flow that now reaches a real deployed landing page and a cleaner confirmation email + +The remaining work in this area is now less about inventing the model from scratch and more about extending, polishing, and live-validating the pieces that are already in place.