JSON • Data Structures • AI-Assisted Planning • Static Websites

From audiobook history to a book recommendations page.

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.

Core lesson: JSON is not just a homework format. It is a practical way to organize real data so a website, app, or script can use it.
Raw export Lifetime book activity, titles, authors, dates, links
Normalized JSON Clean fields, ranks, covers, ISBNs, notes
Privacy review Remove personal history fields before publishing
Static webpage Curated Top 30 list with covers and notes
The same source data can become a private archive, a public reading list, a project writeup, or a future searchable tool.

The raw idea

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?”

What I had

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.

What I needed

A public recommendation list

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.

What the source data looked like

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"
}
Why this matters: Once data has consistent fields, a program can loop through it, filter it, sort it, group it, rank it, and display it.

Public data vs private source data

A major part of this project is deciding what should be public and what should stay private.

Private source data

Useful while building

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.

Public website data

Clean and intentional

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"
}

AI planning conversation

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.

Student
“My audiobook app gave me an export of my lifetime book activity. Can we turn this into something useful?”
The student starts with real data and a real goal, not a vague request.
AI
“Yes. First we should inspect the structure and decide what fields are useful.”
The AI helps identify the shape of the data before jumping into design.
Student
“I want a recommendations page, not a full personal history dump.”
The student sets a privacy boundary and defines the actual output.
AI
“Then we should normalize a public JSON file with only the fields visitors need.”
The project changes from raw export to cleaned public data.
Student
“What fields should each book have?”
The student asks for a schema, which is the structure every record should follow.
AI
“Use rank, title, author, category, tags, ISBN, cover, why_recommended, and URL.”
The AI proposes a simpler public schema that supports a clean recommendation page.
Student
“Now that the data is clean, how should we display it?”
The student moves from data structure to interface design.
AI
“Start with a clean curated Top 30. Keep filters and search as future improvements.”
The first version stays readable instead of trying to show every possible feature.

Ways this data could be displayed

The current public page uses a curated Top 30 list, but the same JSON structure could support other displays later.

Current version

Curated Top 30

A ranked list with covers, authors, categories, recommendation notes, and Libby links.

Simple

Category sections

Group books under headings like Cybersecurity, Programming, Networking, AI, Outdoors, and Fiction.

Useful later

Searchable card grid

Let visitors search by title, author, topic, or tag if the list grows beyond a curated set.

Learning path

Reading roadmaps

Build paths like “Start with Linux,” “Learn cybersecurity stories,” or “Programming basics.”

Interactive

Filters and sorting

Filter by category, priority, format, and tags. Sort by title, priority, or recommendation order.

Portfolio

Project story

Show how a messy export became structured data and then a clean website.

Why this is relevant to a data structures course

This project is a practical example of data structures outside a textbook.

Array / List
The books array
The JSON contains a list of book objects. A program can loop through the list and display each book as a row.
Object / Dictionary
Each book record
Each book is an object with key-value pairs like rank, title, author, isbn, and cover.
Ordering
The rank field
A simple rank value controls the display order without hardcoding every book directly into the HTML.
Hash Map Idea
Fast lookup by category or tag
Categories and tags can be used as keys to group books into buckets for faster display and filtering.
Filtering
Future display option
A search box or category dropdown could filter the array into a smaller list if the page grows.
Sorting
Future display option
The same list could be sorted alphabetically, by category, by format, or by recommendation strength.
Normalization
Clean repeated messy data
Normalizing the data means every record follows the same structure, which makes it easier to process.
Schema Design
Choosing fields intentionally
The project requires deciding which fields belong in the public data model and which should stay private.

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.

What this teaches

This is a small project, but it connects several important skills.

01

Clean the data

Turn messy source data into consistent JSON records.

02

Protect privacy

Remove fields that do not need to be public.

03

Design the schema

Choose the keys every book object should have.

04

Render the page

Use HTML, CSS, and JavaScript to turn JSON into a clean ranked list with covers and recommendation notes.

Responsible AI use

This project is also an example of how a student can use AI without giving up ownership of the work.

Good use

Ask better questions

Instead of asking AI to “make a website,” the student asks how to inspect, clean, and use the data.

Good use

Design the schema

AI can suggest fields, but the student decides what belongs in the public version.

Good use

Compare display options

AI can help brainstorm category sections, cards, filters, search, sorting, ranked lists, and reading paths.

Required

Review the output

The student still needs to check the data, remove sensitive fields, test the page, and understand the code.

Final lesson

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.