A large reading-history export
The source data contained hundreds of borrow events and hundreds of unique titles. It included titles, authors, publishers, ISBNs, cover image URLs, Libby links, dates, activities, and library information.
This project started with a simple idea: my audiobook app gave me an export of my lifetime book activity. Instead of leaving it as a messy file, I wanted to turn it into something useful.
The result is a small data project: take a long personal reading history, normalize it into clean JSON, remove private fields, and use it to build a curated public Top 30 book recommendations page.
The project started with a question, not a finished plan.
Prompt idea: “My audiobook app gave me an export of my lifetime book activity. Can I use this as data input to build an HTML page for my book recommendations?”
The source data contained hundreds of borrow events and hundreds of unique titles. It included titles, authors, publishers, ISBNs, cover image URLs, Libby links, dates, activities, and library information.
A full private reading history is not the same thing as a public recommendations page. The project needed a cleaner public version with only the fields visitors actually need.
The useful part was that the data already had structure. It was not just plain text.
{
"title": "The Code Book",
"author": "Simon Singh",
"publisher": "Books on Tape",
"isbn": "9780593554272",
"url": "https://share.libbyapp.com/title/6286690",
"cover": "https://img2.od-cdn.com/ImageType-100/1191-1/{3A9BCDCE-C845-419E-BE4D-E28BDAF68BEC}IMG100.JPG",
"date": "January 22, 2026",
"activity": "Borrowed",
"library": "Brooklyn Public Library"
}
A major part of this project is deciding what should be public and what should stay private.
The full file is useful for analysis because it includes dates, activity history, library names, duplicate borrow events, publishers, ISBNs, covers, and raw Libby metadata.
But that does not mean every field belongs on a public website.
The public version keeps only the fields needed for recommendations: rank, title, author, category, tags, ISBN, cover image, recommendation note, and URL.
This keeps the page useful without publishing unnecessary personal reading-history metadata.
{
"rank": 1,
"title": "Hackers",
"author": "Steven Levy",
"category": "Tech History / Hacker Culture",
"tags": ["hacker-culture", "computing-history", "builders"],
"isbn": "",
"cover": "https://img1.od-cdn.com/ImageType-100/6578-1/{109CE608-FB03-4EB8-ACA8-FA4FAC95C9E7}Img100.jpg",
"why_recommended": "A foundational book for understanding the older meaning of hacking.",
"url": "https://share.libbyapp.com/title/2461570"
}
This is the kind of AI conversation a student should have: start with real data, ask what is possible, question the structure, protect privacy, and decide what to build.
The current public page uses a curated Top 30 list, but the same JSON structure could support other displays later.
A ranked list with covers, authors, categories, recommendation notes, and Libby links.
Group books under headings like Cybersecurity, Programming, Networking, AI, Outdoors, and Fiction.
Let visitors search by title, author, topic, or tag if the list grows beyond a curated set.
Build paths like “Start with Linux,” “Learn cybersecurity stories,” or “Programming basics.”
Filter by category, priority, format, and tags. Sort by title, priority, or recommendation order.
Show how a messy export became structured data and then a clean website.
This project is a practical example of data structures outside a textbook.
rank, title, author, isbn, and cover.
rank value controls the display order without hardcoding every book directly into the HTML.
Data structures lesson: A data structure is not just something used in coding assignments. It is how real information gets shaped so programs can search it, sort it, filter it, protect it, and display it.
This is a small project, but it connects several important skills.
Turn messy source data into consistent JSON records.
Remove fields that do not need to be public.
Choose the keys every book object should have.
Use HTML, CSS, and JavaScript to turn JSON into a clean ranked list with covers and recommendation notes.
This project is also an example of how a student can use AI without giving up ownership of the work.
Instead of asking AI to “make a website,” the student asks how to inspect, clean, and use the data.
AI can suggest fields, but the student decides what belongs in the public version.
AI can help brainstorm category sections, cards, filters, search, sorting, ranked lists, and reading paths.
The student still needs to check the data, remove sensitive fields, test the page, and understand the code.
This project shows how raw personal data can become a real public resource when it is cleaned, normalized, privacy-reviewed, and displayed carefully. It also shows why data structures matter: the structure of the data controls what the website can do with it.