Own your reading data. No ads. No tracking. No corporate algorithm.
A self-hosted, privacy-focused alternative to Goodreads that puts you in complete control of your reading life.
Goodreads has several issues:
- π Your data is a product - Track, analyze, and monetize your reading habits
- π No data export - Limited ability to truly own or migrate your reading history
- π΅οΈ Privacy concerns - Reading preferences reveal personal, political, and professional interests
BookSync is a privacy-first, self-hosted reading tracker that gives you:
- π Complete Privacy: Your reading data stays in YOUR Airtable base, encrypted and under your control
- π Self-Hosted: Run it locally or deploy it yourself
- π¨ Full Customization: Modify the code to fit your exact needs
- π€ Optional AI: Use AI recommendations only if YOU choose to enable them
- π± Modern Interface: Built with modern web technologies for a smooth experience
- β‘ Easy Setup - One-click Airtable setup with template CSV (5 minutes to get started)
- π Smart Book Search - Search millions of books via Google Books API
- π Reading Progress Tracking - Mark books as "To Read", "Reading", or "Finished"
- β Personal Ratings & Reviews - Rate books and save your thoughts and takeaways
- π¨ Beautiful, Clean UI - Modern interface that's actually pleasant to use
- πΎ Airtable Backend - All your data in your own Airtable base (free tier: 1,200 records)
- π€ AI Recommendations - Optional OpenAI integration for personalized book suggestions
- π Full Data Control - Export, backup, or analyze your data however you want
- π Privacy by Design - No telemetry, no tracking, no third-party scripts
- Node.js 18+ installed
- An Airtable account (free tier works great)
- Optional: Google Books API key (for better search results)
- Optional: OpenAI API key (for AI recommendations)
git clone https://github.com/yourusername/booksync.git
cd booksync
npm install- Create a new Airtable base at airtable.com
- Delete the default table (or rename it)
- Import the template CSV:
- Download
airtable-template.csvfrom this repo - In Airtable, click "Add or import" β "CSV file"
- Upload the template CSV
- Airtable will automatically create all the fields with the correct types!
- Download
- Configure the "Status" field:
- Click on the "Status" column header
- Select "Customize field type" β "Single select"
- The options (To Read, Reading, Read) should already be there from the template
- Delete the sample rows from the template (keep the empty table structure)
That's it! Your table is now set up with all the correct fields.
If you prefer to set up the table manually:
Click to expand manual setup instructions
- Create a new Airtable base at airtable.com
- Create a table called "Books" with these fields:
| Field Name | Field Type | Notes |
|---|---|---|
| Book Name | Single line text | Primary field (required) |
| ISBN | Single line text | |
| Status | Single select | Options: "To Read", "Reading", "Read" |
| Cover | Attachment | Book cover image |
| Author | Single line text | |
| Categories | Single line text | |
| Subtitle | Single line text | |
| Book Title | Single line text | |
| Started | Date | When you started reading |
| Finished | Date | When you finished |
| Rating | Number | Your rating (1-5) |
| Review & Takeaways | Long text | Your notes and thoughts |
| Year of Read | Number | Year completed |
-
API Key: Go to airtable.com/create/tokens
- Click "Create new token"
- Give it a name (e.g., "BookSync")
- Add these scopes:
data.records:read,data.records:write - Add access to your Books base
- Click "Create token" and copy it (starts with
pat_...)
-
Base ID:
- Open your Airtable base
- Click "Help" (?) in the top-right
- Select "API documentation"
- Your Base ID is shown at the top (starts with
app_...)
Why you need this: The Google Books API provides rich book metadata (covers, descriptions, ISBNs). Without it, search functionality is limited.
Steps:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Books API:
- Click "Enable APIs and Services"
- Search for "Books API"
- Click "Enable"
- Create credentials:
- Go to "Credentials" in the left sidebar
- Click "Create Credentials" β "API Key"
- Copy your API key
Note: Google Books API has a free tier with generous limits (1,000 requests/day). More than enough for personal use.
Why you need this: Enables AI-powered book recommendations based on your reading history. This is completely optional - the app works fine without it.
Steps:
- Go to platform.openai.com
- Sign up or log in
- Go to "API Keys" in your account settings
- Click "Create new secret key"
- Give it a name (e.g., "BookSync Recommendations")
- Copy the key (starts with
sk-...) - Set up billing: OpenAI requires a payment method, but costs are minimal
- Recommendations use GPT-4 or GPT-3.5-turbo
- Average cost: ~$0.01-0.05 per recommendation
- Set a monthly budget limit in your OpenAI account for safety
Privacy Note: When you use AI recommendations, your book titles are sent to OpenAI's API. This is optional and disabled by default.
Create a .env.local file in the root directory:
# Airtable Configuration (REQUIRED)
AIRTABLE_API_KEY=pat_your_api_key_here
AIRTABLE_BASE_ID=app_your_base_id_here
AIRTABLE_TABLE_NAME=Books
# Google Books API (OPTIONAL but recommended for better search)
GOOGLE_BOOKS_API_KEY=your_google_books_api_key_here
# OpenAI API (OPTIONAL - only needed for AI recommendations)
OPENAI_API_KEY=sk_your_openai_api_key_here# Development mode
npm run dev
# Production mode
npm run build
npm startOpen http://localhost:3000 in your browser.
| Data | Where it goes | Why |
|---|---|---|
| Book searches | Google Books API | To find book metadata (titles, covers, ISBNs) |
| Your saved books | Your Airtable base | Storage you control |
| AI recommendations | OpenAI API (optional) | Only if you enable this feature |
| Analytics | Nowhere | We don't collect any usage data |
- Vercel (free tier available) - Easiest option
- Search for books - Use the search bar to find any book
- Add to your library - Click to save books to your Airtable
- Track progress - Mark books as "To Read", "Reading", or "Finished"
- Add notes - Rate books and save your thoughts and takeaways
- Get recommendations - (Optional) Use AI to discover similar books
- View your collection - See all your books in a beautiful grid view
BookSync is designed to be easily customizable:
- Modify the Airtable schema - Add custom fields for genres, publishers, purchase date, etc.
- Change the UI - Edit the React components to match your style
- Add features - Want reading statistics? A reading challenge tracker? Build it!
- Export your data - Airtable allows CSV/JSON export anytime
This project is open source because reading is personal, and personal data should be in your control.
Contributions are welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
TL;DR: You can use, modify, and distribute this freely. Do whatever you want with it.
Built with β€οΈ for people who love reading and value privacy.
Your reading journey is personal. Keep it that way.