Skip to main content

Overview

EpiNeko’s progress tracking system allows users to mark individual episodes as watched, automatically updating their library statistics and watch status. The system integrates seamlessly with the library management and provides visual feedback on viewing progress.

Episode Tracking

Mark individual episodes as watched with one click

Auto Status Update

Status automatically changes based on progress

Visual Progress

Progress bars show completion percentage

Episode Metadata

View episode titles, dates, and filler indicators

Episodes Watched Field

Each library item tracks the number of episodes you’ve watched:
Database Schema (supabase/migrations/20260218_initial_schema.sql:55):
The episodes_watched field defaults to 0 and represents the highest episode number you’ve completed. For example, episodes_watched: 5 means you’ve watched episodes 1-5.

Episode Data Structure

Episode information is fetched from the Jikan API:

EpisodeList Component

The main component for displaying and tracking episode progress:

Component Props

number
required
The MyAnimeList ID (Jikan ID) of the anime
number | null
required
Total episode count for the series. Can be null for unknown or ongoing series.
string
required
Anime title for library operations
string
required
Poster image URL for library operations

Marking Episodes as Watched

Toggle Episode Function

The core function for marking episodes:
Implementation Reference: src/components/anime/EpisodeList.tsx:44-85

Automatic Behaviors

If you mark an episode as watched and the anime isn’t in your library, it’s automatically added:

Visual Components

Progress Header

Displays current progress at the top of the episode list:
Features:
  • Shows watched count vs total
  • Updates in real-time as you mark episodes
  • Styled with primary border accent

Episode Cards

Each episode is displayed as an interactive card:
Visual States (src/components/anime/EpisodeList.tsx:121-169):
  • Unwatched: Gray background, white/5 border
  • Watched: Green background, emerald border with glow
  • Hover: Border brightens, checkbox highlights
  • Active: Scale animation on click

Episode Information

Additional metadata displayed for each episode:
1

Episode Number

Format: T1 E (Season 1, Episode X)Displayed in rounded pill badge
2

Episode Title

English or romaji title from JikanTruncates if too long
3

Japanese Title

Original Japanese title (if available)Shown in smaller text below main title
4

Filler/Recap Indicators

Future enhancement - show badges for filler/recap episodes

Loading and Empty States

Loading State

Displays spinner while fetching episode data:

No Episodes Available

When Jikan has no episode data but total count is known:
Fallback Behavior (src/components/anime/EpisodeList.tsx:96-101):
  • Generates placeholder episodes if Jikan data unavailable
  • Uses episode numbers as titles
  • Still fully functional for progress tracking

Truly Empty

No episodes and no total count:

Batch Operations

Mark Multiple Episodes

Mark multiple episodes at once by clicking the highest episode number:
User Flow:
  1. User clicks episode 10 checkbox
  2. All episodes 1-10 are considered watched
  3. Visually, all episode cards 1-10 show as completed
  4. Progress counter updates: “10 / 28 VISTOS”

Unmark Episodes

Clicking the current highest episode decrements the count:
Example:
  • Currently watched through episode 10
  • Click episode 10 again
  • Count decreases to 9
  • Episode 10 shows as unwatched

Integration with Library

Progress tracking is tightly integrated with library management:

Error Handling

Comprehensive error handling with rollback:
Error Scenarios (src/components/anime/EpisodeList.tsx:73-84):
  • User not authenticated
  • Network failure
  • Database constraint violation
  • Rate limiting

Fetching Episode Data

Episodes are fetched from Jikan API:
Data Fetch Pattern (src/components/anime/EpisodeList.tsx:22-42):

Progress Visualization

Progress is visualized in multiple places:

Episode List Header

Shows fraction and percentage:

Profile Statistics

Progress bars on profile page:

Library Cards

Could add progress indicators to library cards:

Best Practices

Optimistic Updates

Update UI immediately for responsive feel

Always Rollback

Revert optimistic changes on error

Batch Fetch

Fetch episodes and library data in parallel

Loading States

Show spinners during data fetches and updates

Advanced Features

Sequential Watching

Future enhancement - enforce sequential watching:

Partial Episodes

Track partial episode progress:

Watch History

Track when episodes were watched: