Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal Book Tracker

A full-stack web application that helps readers store, search, and revisit insights from books they have finished reading.

Users can maintain a private digital library where they add books, write notes in Markdown, and quickly search or sort their reading history.


Problem

Readers often forget the key ideas from non-fiction books after some time. Notes are usually scattered across notebooks, apps, or bookmarks.

This application provides a centralized personal knowledge base where users can store insights and easily revisit them later.


Features

  • User authentication with JWT
  • Personal book library for each user
  • Add, edit, and delete books
  • Markdown support for writing structured notes
  • Automatic book cover fetching using external APIs
  • Search books by title
  • Sort books by finished date
  • Responsive dashboard for viewing all books

Tech Stack

Frontend

  • Vue 3
  • Vue Router
  • Axios
  • Markdown rendering library

Backend

  • FastAPI
  • SQLAlchemy ORM
  • JWT Authentication
  • bcrypt for password hashing

Database

  • SQLite (can be replaced with PostgreSQL)

External APIs

  • Google Books API (book metadata and cover images)
  • OpenLibrary Covers API (fallback cover images)

System Architecture

Frontend (Vue) ↓ REST API (FastAPI) ↓ Database (SQLAlchemy + SQLite) ↓ External APIs (Google Books / OpenLibrary)


Project Structure

Backend

backend/
 └── app/
      ├── main.py
      ├── database.py
      ├── models.py
      ├── schemas.py
      ├── routes/
      │     ├── auth_routes.py
      │     └── book_routes.py
      └── utils/
            ├── auth.py
            └── security.py

Frontend

frontend/
 └── src/
      ├── views/
      │     ├── BookList.vue
      │     ├── AddBook.vue
      │     ├── EditBook.vue
      │     ├── BookDetail.vue
      │     ├── Login.vue
      │     └── Register.vue
      ├── services/
      │     └── api.js
      └── router/
            └── index.js

Installation

Clone the Repository

git clone <repo-url>
cd book-tracker

Backend Setup

cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload

Backend will run at:

http://localhost:8000

Swagger API docs:

http://localhost:8000/docs

Frontend Setup

cd frontend
npm install
npm run dev

Frontend will run at:

http://localhost:5173

Example Workflow

  1. Register a new account
  2. Login to receive authentication token
  3. Add a book with title, author, and notes
  4. Book cover is automatically fetched from external API
  5. Notes are rendered in Markdown format
  6. Books can be searched or sorted by finished date
  7. Users can edit or delete books anytime

Future Improvements

  • AI generated summaries of book notes
  • Semantic search using embeddings
  • Tags for organizing books
  • Reading statistics dashboard
  • Export notes to PDF

Contributors

  • Anand Yelloju
  • Durga Narasaiah Naidu Kilaru

License

This project is for educational purposes.

About

A full-stack personal book tracking application built with FastAPI and Vue that allows users to store, search, and organize insights from non-fiction books using Markdown notes and automated book cover retrieval.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages