Blog/Build a Carousel Bookshelf Website That Updates From Google Sheets, and Publish It on Netlify or Vercel (Student Guide)
Build a Carousel Bookshelf Website That Updates From Google Sheets, and Publish It on Netlify or Vercel (Student Guide)
@onlygrowthtalks·
13 September 2026

Build a Carousel Bookshelf Website That Updates From Google Sheets, and Publish It on Netlify or Vercel (Student Guide)

A student guide to building a carousel bookshelf — a 3D room where one book faces you at a time and the walls take its cover colour — with Claude Code, updating live from a Google Sheet and published free on Netlify or Vercel.

In this guide
  1. What you're building
  2. Before you start: Mac & Windows
  3. Create your project folder
  4. The Google Sheet
  5. The colour scheme
  6. The prompt
  7. What each part of the prompt does
  8. Build and test on localhost
  9. Option A: Deploy on Netlify
  10. Option B: Deploy on Vercel
  11. Connect a GoDaddy domain
  12. Other hosting options
  13. Skills you'll learn
  14. Put it on your resume
  15. Make money from it
  16. FAQ

AI Projects · Student Guide

This guide shows you how to build a carousel bookshelf website — a 3D room where the books turn to face you one at a time and the walls change colour with the cover — that updates itself from a Google Sheet, and how to publish it online on Netlify or Vercel. Every row in the sheet becomes a 3D book with a name, subheading, description, button and colour. When you edit the sheet, the live website picks up the change within about a minute, without rebuilding or re-uploading anything.

The lookCarousel bookshelf — a 3D room, one book facing you at a time
TimeAbout 45 minutes
CostFree (domain optional)
LevelBeginner, no coding
You'll useClaude Code, Google Sheets, Netlify or Vercel
01

What you're building

The finished project is a full-screen website called a carousel bookshelf. A wooden shelf holds a row of hardcover books drawn in 3D. The selected book sits in the centre, larger and pulled forward, while its neighbours angle away at the edges, and the whole room changes colour to match its cover. Visitors scroll through the books, open one, flip its pages, and click a button that takes them to a link you chose.

Two bookshelf builds, two different looks

This one is the carousel bookshelf: one book faces the reader at a time, in a 3D room that takes its colour from the cover. The other one is the book spine bookshelf, or spine wall, where every book stands side by side on a single shelf, spine out, filtered by category chips — better when there are thirty books to scan rather than eight to show off. Same Google Sheet, same prompt structure, completely different page.

What makes this version special is where the content lives. None of the book names, descriptions or links are written in the code. They sit in a Google Sheet that you own. The website reads the sheet when it loads and checks it again every 15 seconds. Add a row and a new book appears. Change a link and the button changes.

The AI Toolshelf, a 3D bookshelf website with ChatGPT centred on a wooden shelf, loaded from a Google Sheet
Fig. 1The finished carousel. Every book here, from ChatGPT to Runway, comes from a row in the Google Sheet. ChatGPT is the selected book, so it stands centre and the whole room has taken its blue.

The example is The AI Toolshelf, a shelf of 8 popular AI tools, each linking to the tool's website. You can replace them with your own books, courses, products or links in a few minutes.

An opened book called Claude beside a panel with its subheading, description and a Try Claude button
Fig. 2Clicking Open brings a book forward. The panel shows the Subheading, Description and Button text from the sheet, and the button opens the Button link.
02

Before you start: set up your computer

This guide assumes you already have Claude Code, Node.js and Python installed. Claude Code writes the website, Python runs it on your computer so you can preview it, and Node.js is needed if you deploy with Vercel's command-line tool. If you've already set these up, skip to step 3.

New to Claude Code?

Follow the official installation guide first: Set up Claude Code. You'll need a paid Claude plan (Pro or Max) or an Anthropic Console account to sign in. The short versions for Mac and Windows are below.

macOS Mac

  1. Claude Code: open the Terminal app and run the installer:
    curl -fsSL https://claude.ai/install.sh | bash
    Then run claude and sign in when asked.
  2. Node.js: download the LTS version from nodejs.org and run the installer.
  3. Python: most Macs already have it. Check with python3 --version. If it's missing, macOS offers to install the developer tools, or download it from python.org.

Windows PC

  1. Claude Code: open PowerShell and run the installer:
    irm https://claude.ai/install.ps1 | iex
    Close and reopen PowerShell, run claude, and sign in.
  2. Node.js: download the LTS version from nodejs.org and run the installer.
  3. Python: install it from python.org, and tick "Add python.exe to PATH" on the first screen. Check with python --version.

To check everything worked, run these three commands. Each should print a version number. On Windows, use python instead of python3.

claude --version node --version python3 --version
03

Create your project folder on the Desktop

Keep the whole project in one folder on your Desktop. The website files, the spreadsheet Claude Code creates, and everything you deploy will all live there, so it's easy to find and easy to upload later.

  1. Create the folderRight-click your Desktop and create a new folder called ai-toolshelf. Use lowercase letters and hyphens, with no spaces.
  2. Open it in Claude CodeIn the Claude desktop app's Code tab, choose this folder as the project folder. Or open it from a terminal, as shown below.
  3. Check you're in the right placeAsk Claude Code "Which folder are you working in?" It should name your ai-toolshelf folder. Every file it creates, including shelf-sheet.xlsx, will be saved there.

macOS Terminal

mkdir -p ~/Desktop/ai-toolshelf cd ~/Desktop/ai-toolshelf claude

Windows PowerShell

mkdir $HOME\Desktop\ai-toolshelf cd $HOME\Desktop\ai-toolshelf claude

If your Desktop syncs with OneDrive, the folder may be at $HOME\OneDrive\Desktop instead.

04

The Google Sheet: your website's content manager

A Google Sheet works as a free, no-login content manager for a website. Instead of editing code, you edit rows in a spreadsheet, and the website reads those rows live. Your sheet has two tabs: Books, with one row per book, and Colours, the palette the books can use.

The Books tab of the Bookshelf AI project Google Sheet, with columns Order, Book name, Subheading, Description, Button text, Button link and Colour code, filled with 8 AI tools
Fig. 3The Books tab. Each of the 8 rows is one book on the shelf. Column G, Colour code, points to a colour in the Colours tab.
ColumnWhat it controlsExample
OrderPosition on the shelf. Lower numbers come first.2
Book nameTitle on the cover and in the open viewClaude
SubheadingShort line under the titleThoughtful writing and code
DescriptionParagraph shown when the book is openedAnthropic's assistant, known for…
Button textLabel on the main buttonTry Claude
Button linkWhere the button goes, in a new tabhttps://claude.ai
Colour codeA code from the Colours tab, or a hex colourC03

How the sheet is created

Claude Code can't sign in to your Google account, so it doesn't create the sheet inside Google. It creates a spreadsheet file called shelf-sheet.xlsx in your ai-toolshelf folder, with both tabs already filled in. You bring it into Google Sheets yourself:

  1. Open a blank sheetGo to sheets.new while signed in to your personal Google account.
  2. Import the fileChoose File → Import → Upload, select shelf-sheet.xlsx from Desktop/ai-toolshelf, and choose Replace spreadsheet. Both tabs come in, with colours.
  3. Name itClick the title at the top left and rename it, for example "Bookshelf AI project".
  4. Share it as view-onlyClick Share, set General access to Anyone with the link, and keep the role as Viewer. The website can only read a sheet shared this way.
  5. Give the link to Claude CodeClick Copy link and paste it into Claude Code. It saves the link in config.js and checks that both tabs load.
Is a link-viewable sheet safe?

Anyone with the link can read it, but only you can edit it. Everything in it appears on your public website anyway. Don't put private information in this sheet.

Why a Google Sheet is so useful here

  • No redeploying for content. The code online stays the same. Only the sheet changes, and the site reads it live.
  • No database or server. Google stores the data for free, so there's nothing to set up, secure or pay for.
  • Easy to hand over. Build a shelf for someone else and give them edit access to their sheet. They update it from their phone.
  • Hard to break. A dropdown in the Colour code column prevents typos, and a row without a Book name is simply skipped.
The bookshelf showing a Shelf updated from the sheet message after a ninth book, Notion AI, was added
Fig. 4A live update. A ninth row, Notion AI, and an edited subheading appeared without a page refresh, with a "Shelf updated from the sheet" message.
05

The colour scheme

The Colours tab is a fixed palette of 12 named colours, each with a short code. Instead of typing a hex code into every book row, you type a code like C03, and the website looks up the colours for it.

The Colours tab of the Google Sheet, listing codes C01 to C12 with colour names, cover colours and text colours shown as filled cells
Fig. 5The Colours tab. Codes C01 to C12, each with a name, a Cover colour for the book's cloth, and a Text colour for its title and pattern.

Each colour has two parts. The Cover colour is the book's cloth. The Text colour is the foil stamping: the title and the pattern on the cover. From those two values, the website works out everything else, including the wall, floor, lighting and on-screen text, so the whole room changes mood for each book.

Change one hex value in the Colours tab, and every book using that code changes on the live site.

  • The shelf always looks designed. Every pair has been chosen so the title stays readable on its cover.
  • One edit updates many books. Great for rebranding a whole shelf in seconds.
  • Colour can carry meaning. Give each category its own code, such as C05 for writing tools and C08 for image tools.
CodeNameCoverText
C01Haze#ADC8D2#27262C
C02Charcoal#27262C#E1DF73
C03Tangerine#E77040#FBF0E4
C04Citron#E1DF73#27262C
C05Cobalt#334FA2#EEF2FB
C06Vermilion#F66440#FDEFEA
C07Ochre#DA9650#2B1D12
C08Crimson#D5373E#F8D9C8
C09Ultramarine#1B2C48#C9774B
C10Aubergine#3D2340#D7AD5A
C11Forest#2F4A3A#E9D8A6
C12Powder blue#86B1C4#F2F7F8
06

The prompt

With Claude Code open in your ai-toolshelf folder, paste this whole prompt. Claude Code asks you three short questions, then builds the website and the spreadsheet in that folder.

The Master Prompt
Paste into Claude Code inside Desktop/ai-toolshelf
Build me a 3D bookshelf website whose content comes from a Google Sheet that I own. When I edit the sheet, the live website must update by itself, without redeploying.
Work only inside the current folder. Save every file you create here.

PART 1 — ASK ME ONLY THREE THINGS, THEN START
1. The name of the shelf (e.g. "The AI Toolshelf")
2. A one-line subtitle (e.g. "A shelf of AI tools worth knowing")
3. A topic for 8 sample books (e.g. "popular AI tools")
Do not ask me anything about individual books. Their content will live in the sheet.
Also check whether I'm on macOS or Windows, and use the right commands for it (python3 on Mac, python on Windows).

PART 2 — CREATE THE SPREADSHEET FILE
Create shelf-sheet.xlsx in this folder with exactly two tabs.
(Use Python with openpyxl. If it isn't installed, install it into a local folder with pip --target. If that fails, create data/Books.csv and data/Colours.csv instead and tell me to import each one as a separate tab.)

Tab "Books", with these columns in this order:
Order | Book name | Subheading | Description | Button text | Button link | Colour code
Fill in 8 real, accurate sample rows on my topic, with real https links.
Add a dropdown on the Colour code column that lists the codes from the Colours tab.

Tab "Colours", with these columns:
Colour code | Colour name | Cover colour | Text colour
C01 Haze #ADC8D2 #27262C
C02 Charcoal #27262C #E1DF73
C03 Tangerine #E77040 #FBF0E4
C04 Citron #E1DF73 #27262C
C05 Cobalt #334FA2 #EEF2FB
C06 Vermilion #F66440 #FDEFEA
C07 Ochre #DA9650 #2B1D12
C08 Crimson #D5373E #F8D9C8
C09 Ultramarine #1B2C48 #C9774B
C10 Aubergine #3D2340 #D7AD5A
C11 Forest #2F4A3A #E9D8A6
C12 Powder blue #86B1C4 #F2F7F8
Fill each Cover colour and Text colour cell with its own colour. Make the header rows bold and freeze them.
Also save the same data as data/Books.csv and data/Colours.csv, so the site works locally before a sheet is connected.

PART 3 — READING THE SHEET
- Put all settings in config.js: sheet (the Google Sheet link), booksTab "Books", coloursTab "Colours", refreshSeconds 15, name, subtitle, edition.
- If sheet is empty, read data/Books.csv and data/Colours.csv. Otherwise read each tab as CSV from:
  https://docs.google.com/spreadsheets/d/SHEET_ID/gviz/tq?tqx=out:csv&sheet=TAB_NAME
  Extract SHEET_ID from a full link. Add a timestamp to the URL and use cache: "no-store".
- Write a proper CSV parser that handles quoted fields, commas and line breaks inside quotes.
- Match column headers loosely (ignore case, spaces and punctuation).
- Skip rows without a Book name. Sort by Order.
- Colour code may be a code from the Colours tab or a raw hex. If it is missing or unknown, use a palette colour and log a warning in the console.
- Add https:// to links that don't have it.
- If Google returns an HTML page instead of CSV, show: "The sheet is not public. Share it as Anyone with the link: Viewer."
- Check the sheet every refreshSeconds, and immediately when the browser tab becomes visible again. If the data changed, rebuild the shelf, keep the same book selected if it still exists, dispose of old 3D objects, and show a toast: "Shelf updated from the sheet · N books".
- Never rebuild while a book is open. Save the update and apply it when the book is closed.
- Top-right, show "Synced HH:MM:SS" with a small green dot, or "Sheet unreachable, retrying" if a check fails.

PART 4 — THE WEBSITE
Tech: index.html, styles.css, config.js and JavaScript modules in src/. Load Three.js 0.165 from jsDelivr with an import map. No build step, no backend, no image or audio files. Generate all covers, textures and sounds in code.
The room: a textured back wall, a floor and a long walnut shelf, with soft shadows, warm light and a few floating dust particles.
The books: real 3D hardcovers with boards, a spine showing the title and number, a cream page block and a ribbon bookmark. Cloth-texture covers with foil stamping: Cover colour is the cloth, Text colour is the foil. Each book gets an abstract geometric motif, the book name in serif (shrink to fit if long) and the subheading in small caps.
The carousel: the selected book is centred, larger and pulled forward; neighbours angle away and fade at the edges; the shelf loops. Browse with the mouse wheel, arrow keys, dragging or swiping, clicking a book, or clicking dash markers.
Theme: derive wall, floor, lighting and interface ink colours from each book's cover colour, and fade the room to them on select.
Layout: top-left, name and subtitle. Top-right, edition line, colour name, sync status, mute button and volume slider. Bottom-left, "02 / 08", big title and subheading. Bottom-centre, ( OPEN ). Bottom-right, dash markers and "WHEEL · ARROWS · SELECT".
Open view: the book flies left and the shelf sinks away. A right panel shows "VOLUME 02 · <colour name>", a huge serif title, the subheading in italic, the description, and a solid pill button with the Button text and ↗ that opens the Button link in a new tab (rel="noopener noreferrer"; hide it if there's no link). Below: page navigation, Open book, Reset view, and a × close button. Dragging the background orbits the camera.
Pages: clicking the book opens the cover. Two turnable leaves: a title page, an About page with the description, a Next step page with the button text and link domain, and a closing quote. Pages curl as they turn. Turn with buttons, arrow keys, clicks or dragging. Escape closes.
Sound: Web Audio ambient pad with gentle chimes and small interaction sounds, starting on the first click; mute and volume saved in localStorage.
Mobile under 820px: camera pulls back; the open view becomes a bottom sheet.
Also: loading screen, static fallback grid with titles and buttons if WebGL fails, prefers-reduced-motion support, aria labels and a live region.

PART 5 — RUN, CONNECT, CHECK AND DEPLOY
1. Start a local server on port 4322 (python3 -m http.server 4322 on Mac, python -m http.server 4322 on Windows) and give me the localhost link.
2. Tell me how to import shelf-sheet.xlsx into Google Sheets (File → Import → Upload → Replace spreadsheet), share it as Anyone with the link: Viewer, and paste the link back to you.
3. When I paste the link, put it in config.js and fetch both tabs yourself to confirm they return CSV, not a sign-in page.
4. Ask me to edit one cell and confirm the change appears on the page without a reload.
5. Give me step-by-step instructions for two deployment options: Netlify (drag-and-drop with a free account) and Vercel (the npx vercel command). Then explain how to connect a domain bought on GoDaddy to whichever one I choose.
The Claude book opened to its About and Next step pages, beside the details panel
Fig. 6Inside a book. The pages are generated from the same row: an About page with the Description, and a Next step page with the Button text and link domain.
07

What each part of the prompt tells Claude to do

The prompt has five parts, and each gives Claude Code a separate job. That's why one paste can produce a complete, working project instead of a rough draft.

PartInstruction to ClaudeWhy it matters
1 · Ask three thingsCollect the shelf name, subtitle and sample topic, detect Mac or Windows, and ask nothing about individual booksA fast start. Book content lives in the sheet, so you never re-run the prompt to change a book.
2 · Create the spreadsheetBuild a two-tab .xlsx with exact columns, sample rows, the 12-colour palette and a dropdown, plus CSV copiesYou get a ready sheet to import, and the site works before any sheet is connected.
3 · Read the sheetFetch each tab as CSV, parse it safely, match headers loosely, check for changes, rebuild without interrupting readersThis is the "Google Sheets as a content manager" system that makes the site update itself.
4 · The websiteDescribe the 3D room, books, carousel, colour themes, open view, pages, sound, mobile layout and accessibilityPrecise design language gives a polished, consistent result instead of a generic page.
5 · Run, connect, check, deployStart the server, walk you through the sheet, verify both tabs load, test a live edit, explain Netlify, Vercel and GoDaddyClaude has to prove the project works, not just claim it does.

What the prompt is teaching you

  • Separate content from code. Anything that changes often belongs in data, not in instructions to rebuild.
  • Define the data exactly. Naming tabs and columns in order means the code and the sheet always agree.
  • Plan for failure. The prompt says what to do when a library is missing, the sheet is private, or a colour code is wrong.
  • Ask for proof. Part 5 turns "it should work" into checks Claude actually runs.
08

Build and test it on localhost

Localhost means the website runs only on your own computer, at an address like http://localhost:4322. It's where you build and test before publishing. Nobody else can see it, and it stops when you close the terminal.

  1. Answer the three questionsGive Claude Code your shelf name, subtitle and a topic, and let it build.
  2. Open the previewClaude Code starts the local server and gives you http://localhost:4322. Open it in your browser. At first, it reads the sample data saved in the folder.
  3. Connect your sheetImport shelf-sheet.xlsx into Google Sheets, share it as view-only, and paste the link into Claude Code, as in step 4.
  4. Test a live editWith the page open, change a book's subheading in the sheet. Within 15 to 60 seconds, the change appears without refreshing.
  5. Make it yoursReplace the sample rows with your own books and links. Five to nine books looks best.
Desktop view of an opened book with its details panel
Fig. 7Desktop: the open view with the book on the left and the sheet's text on the right.
The AI Toolshelf on a phone with Midjourney centred on the shelf
Fig. 8Mobile: the camera pulls back and the controls stack below the shelf.
Before you deploy

Open config.js in your folder and check that sheet contains your Google Sheet link. The published site reads the same sheet, so nothing else needs to change.

09 · Option A

Deploy on Netlify

Netlify hosts static websites for free, and this project is a static folder with no server code. You can publish it by dragging the folder into your browser. These steps work for any static project, not just this one: any folder with an index.html at the top.

  1. Sign up and log inGo to app.netlify.com/signup and sign up with GitHub, GitLab, Bitbucket, Google or email. Logging in keeps your site online and lets you update it later.
  2. Open Netlify DropGo to app.netlify.com/drop while logged in.
  3. Drag in your folderDrag Desktop/ai-toolshelf, the folder containing index.html, onto the page. Don't use a zip or the parent folder. Netlify gives you a random address such as https://jolly-cupcake-12ab34.netlify.app.
  4. Rename the addressOpen Site configuration → Change site name and choose something like ai-toolshelf, so the site becomes https://ai-toolshelf.netlify.app, if the name is free.
  5. Test itOpen the address on your laptop and phone, then edit a cell in your sheet and watch the live site update.
When do you redeploy?

Only when the code changes, for example after asking Claude Code for a design change. Sheet edits go live without redeploying. To upload new code, open your site in Netlify, go to Deploys, and drag the updated folder onto the deploy area. The address stays the same.

10 · Option B

Deploy on Vercel

Vercel also hosts static sites for free on its Hobby plan. The quickest way to upload a folder is Vercel's command-line tool, which runs through Node.js. Like Netlify, these steps work for any static project folder.

  1. Create a Vercel accountSign up at vercel.com/signup with GitHub, GitLab, Bitbucket or email, and choose the free Hobby plan.
  2. Open a terminal in your folderYou can ask Claude Code to run the next command for you, or run it yourself:
    cd ~/Desktop/ai-toolshelf
  3. DeployRun the command below. The first time, it asks you to log in through your browser and answer a few setup questions. Accept the defaults, and when asked about a build command, leave it empty, because there's nothing to build.
    npx vercel --prod
  4. Get your addressWhen it finishes, Vercel prints a live address like https://ai-toolshelf.vercel.app. Open it on your laptop and phone.
  5. Update laterAfter any code change, run npx vercel --prod again from the same folder. Sheet edits still go live without this.
NetlifyVercel
Easiest uploadDrag and drop in the browserOne terminal command
Needs Node.jsNoYes, for npx vercel
Free addressname.netlify.appname.vercel.app
Best forNon-coders, quick sharingIf you'll also build Next.js apps later
11

Connect a domain from GoDaddy

A custom domain turns ai-toolshelf.netlify.app into something like yourname.com. You buy the domain on GoDaddy, tell Netlify or Vercel about it, then point the domain's DNS records at your host. Both hosts add free HTTPS automatically.

Netlify Option A

  1. In Netlify, open your site → Domain managementAdd a domain, and enter your domain.
  2. Netlify shows the DNS records to add. Copy them exactly.
  3. In GoDaddy, go to My Products → your domain → DNS.
  4. Edit the A record for @ to the IP address Netlify shows (currently 75.2.60.5).
  5. Edit the CNAME for www to your site address, such as ai-toolshelf.netlify.app.

Vercel Option B

  1. In Vercel, open your project → Settings → Domains, and add your domain.
  2. Vercel shows the DNS records to add. Copy them exactly.
  3. In GoDaddy, go to My Products → your domain → DNS.
  4. Edit the A record for @ to the IP address Vercel shows (commonly 76.76.21.21).
  5. Edit the CNAME for www to the value Vercel shows (commonly cname.vercel-dns.com).
Two things to know

Always copy the values your dashboard shows. Hosts sometimes change them, and the ones on screen are always correct for your project.

DNS takes time. The domain usually works within an hour, but it can take up to 48 hours. Delete any old GoDaddy "Parked" or forwarding records that point elsewhere, or they'll conflict.

12

Other hosting options

Because this project is plain HTML, CSS and JavaScript, it runs on any static host. Netlify and Vercel are the simplest, but these also work well and are free for a project this size.

HostHow you uploadGood to know
GitHub PagesPush the folder to a GitHub repository and enable PagesA nice fit if you're building a GitHub portfolio
Cloudflare PagesUpload the folder or connect a Git repositoryFast global network, easy if your domain uses Cloudflare
RenderConnect a Git repository as a Static SiteHandy if you'll add a backend service later
Firebase HostingDeploy with the Firebase command-line toolUseful if you plan to add Google sign-in or a database
13

Skills you'll learn from this AI project

You don't have to write the code yourself, but reading the files Claude Code creates is one of the fastest ways to learn how a real website fits together. This project touches front-end development, 3D graphics, data, deployment and AI-assisted building.

Language or skillWhere it's usedWhat you learn
HTMLindex.htmlPage structure, buttons, dialogs and accessibility labels
CSSstyles.cssLayout, CSS variables for theming, animation, responsive mobile design
JavaScriptsrc/main.js, src/sheet.jsFetching data, parsing CSV, timers, events and state
Three.js (WebGL)src/main.js3D scenes, cameras, lights, shadows, materials and animation
Canvas 2Dsrc/textures.jsDrawing cover art and book pages in code
Web Audiosrc/audio.jsGenerating music and sound effects without files
Google Sheets as datasrc/sheet.jsUsing a spreadsheet as a free, live content manager
PythonSetup onlyCreating the .xlsx file and running a local server
Deployment and DNSNetlify or Vercel, GoDaddyPublishing a site, custom domains and DNS records
PromptingThe master promptWriting structured, testable instructions for an AI coding tool
14

How to present this project on your resume

This project shows front-end skills, 3D graphics and a real data integration, which makes it stand out more than a typical to-do app. List it under Projects with your live Netlify or Vercel link, and use three pointers like these:

  1. Built and deployed an interactive 3D bookshelf website using Three.js (WebGL), JavaScript, HTML and CSS, with procedurally generated textures, camera animation and a responsive mobile layout, hosted on Netlify with a custom domain.
  2. Used Google Sheets as a live, no-backend content manager: the site fetches and parses sheet data as CSV, checks for changes every 15 seconds, and rebuilds the 3D scene without a page reload or redeployment.
  3. Delivered the project with AI-assisted development in Claude Code, including data validation, error handling for private or malformed sheets, and accessibility support (ARIA labels, keyboard navigation, reduced motion).

In an interview, the most interesting thing to explain is how the site notices a change in the sheet and updates without interrupting a visitor who has a book open. Also link the project on LinkedIn with a short screen recording of the page turn.

15

How to make money from it

Once your own shelf is live, it doubles as a demo you can sell from. The Google Sheet is what makes it sellable: clients update their own shelf, so you don't become their unpaid content editor.

1. Build shelves for creators and teachers

Offer a done-for-you shelf. You run the prompt, fill in the client's sheet with their links, publish it, and hand them edit access to the sheet. Creators use it as a link in bio; teachers use it as a library of courses and notes. Illustrative prices to test:

PackageWhat's includedIndiaGlobal
StarterUp to 8 books, published on a free Netlify or Vercel address, sheet handed over₹2,000–₹4,000$50–$100
BrandBrand colours in the Colours tab, a GoDaddy domain connected, copy help₹5,000–₹10,000$150–$300
Care planMonthly design tweaks and new features₹500–₹1,500 / mo$15–$40 / mo

2. Sell your own products through it

Point each book's button at a Gumroad, Razorpay, Stripe or Topmate checkout. A book that visitors open and flip through feels more considered than a plain button in a list.

3. Sell a ready-made kit

Package the prompt, a sample sheet, the colour palette and a short video walkthrough as a low-priced digital product for students and creators.

4. Use it to get hired

A live 3D site that updates from a spreadsheet is a memorable portfolio piece for front-end, creative developer and freelance web roles.

16

Frequently asked questions

How does a website update from a Google Sheet without a backend?

Google Sheets can serve any tab of a shared sheet as CSV at a public address. The website's JavaScript downloads that CSV in the visitor's browser, turns each row into a book, and checks again every 15 seconds. No server or database of your own is involved.

Do I need to redeploy every time I change a book?

No. Changes in the sheet appear on the published site automatically. You only redeploy on Netlify or Vercel when you change the website's code or design.

Can visitors edit my Google Sheet?

No. Sharing it as "Anyone with the link: Viewer" lets people read it but not change it. Only you, and anyone you give edit access to, can edit it.

Why doesn't Claude Code create the Google Sheet directly?

Claude Code runs on your computer and doesn't have access to your Google account. It creates a ready-made spreadsheet file in your project folder instead, and importing it takes about a minute.

Should I choose Netlify or Vercel?

Both are free for this project. Choose Netlify if you want drag-and-drop with no terminal. Choose Vercel if you're comfortable running one command and may build Next.js apps later.

Do I need to buy a domain?

No. Your free netlify.app or vercel.app address works everywhere. A GoDaddy domain is optional, and mainly worth it for a personal brand or a client project.

Can I use it on localhost only, without publishing?

Yes. Run the local server in your project folder and open http://localhost:4322. It works the same way, including live sheet updates, but only on your computer and only while the server is running.

Build 100 AI Projects With Me

This is one of the 100 AI projects I'm building to help you learn AI by making real things, not just reading about them. Comment "SHELF" on the reel and I'll send you the prompt, the sample sheet and the colour palette.

Follow on Instagram →