Personal Project
Jun 2026 – Jun 2026

Reading Journey

Built a lightweight personal reading tracker with an interactive reading-order flowchart, library management, reading history, and statistics for tracking books and series.

Reading Journey thumbnail

Project Overview

Reading Journey started because I wanted a small app I could build quickly, host on Cloudflare, and mostly forget about while I worked through the fantasy books and series I had been reading.

The original idea was simply to track what I had read and what I wanted to read next. I especially wanted a flowchart for planning reading order, since a normal list gets awkward when books belong to multiple series, have optional side stories, or can be approached through different paths. Once that was working, the project naturally grew into a broader reading dashboard with a library, history, ratings, word-count tracking, series progress, and statistics.

The demo also gives you a small window into what I have been reading recently ;)

Implementation

The frontend is built with React, TypeScript, Vite, and Tailwind CSS. The reading-order planner uses React Flow to create an interactive graph where books can be positioned, connected, labeled, reorganized, or added as complete series.

The backend runs entirely on Cloudflare Workers. D1 stores books, series, reading entries, preferences, and flowchart data, while R2 stores uploaded book covers. Keeping the entire stack on Cloudflare made the project inexpensive to host and easy to leave running without maintaining a traditional server.

Beyond the flow planner, the app includes:

  • a searchable library organized around books and series;
  • reading sessions for first reads and rereads;
  • reading history with start/end dates, ratings, and reviews;
  • statistics for books finished, words read, average ratings, monthly activity, categories, and series progress;
  • CSV import for quickly adding books;
  • lightweight personalization for the library name and visual accent.

Reflections

This was mainly a fun independent project and an excuse to get more practice building a complete application in React without letting the scope get too large. Because it was originally only for my own reading, I intentionally skipped an account system and treated the deployed database as my personal library.

That constraint kept the first version simple, but the project also made me interested in what a slightly broader version could look like. A future iteration could add lightweight accounts so people can maintain their own reading journeys, share reading-order graphs, and compare progress without turning the project into a large social platform.

Project Summary

Key Achievements

  • •Built an interactive flowchart for planning reading order across books and series, including branching paths and whole-series additions
  • •Added library, reading history, reread, rating, word-count, and series-progress tracking
  • •Deployed the full application on Cloudflare using Workers, D1, and R2 with effectively no server maintenance

Key Challenges

  • •Representing reading order as a flexible graph instead of a simple linear queue
  • •Keeping the project lightweight and personal while still supporting enough structure for series, reading sessions, and statistics

Key Learnings

  • •More hands-on practice structuring a moderately sized React and TypeScript application
  • •Building an interactive node-based interface with React Flow
  • •Using Cloudflare Workers, D1, and R2 together for a small full-stack application