InkInsight is a lightweight single-page application that helps book lovers discover books, manage custom reading lists, and share ratings. The project is built with modern front-end tooling and uses Firebase for authentication and persistence.
Check out the app here: https://inkinsight-62df5.web.app
Screenshots
Table of contents
- About
- Features
- Tech stack
- Project structure
- Getting started
- Firebase configuration
- Available scripts
- Contributing
- License
InkInsight provides an intuitive UI for searching books, viewing detailed metadata, creating and editing personalized lists, and rating books. It aims to be a minimal, usable companion for readers who want to organize and reflect on their reading.
- Authentication: Sign up, sign in, and sign out with Firebase Authentication.
- Book discovery: Search and view book metadata (title, author, cover image, description, page count, ISBN, ratings) via a third-party API integration.
- Custom lists: Create, rename, and delete lists; add and remove books from lists.
- Ratings & reviews: Rate books with a 1–5 star system and persist ratings.
- Offline-friendly: Local persistence helpers use
localStorageto keep basic state between sessions.
- Frontend: React (JSX) with functional components and hooks.
- Bundler / Dev server: Vite for fast development and optimized builds.
- State management: Redux Toolkit (
store+ slices) for global state. - Backend / Persistence: Firebase (Authentication + Firestore) for user accounts and data storage.
- APIs: A remote books API (configured via
src/config/apiConfig.js) for book metadata. - Utilities: Small helpers in
src/utilitiesfor validation and common operations. - Styling: TailwindCSS inline styling in views found in
src/view.
index.html— app entry HTMLsrc/index.jsx— React entry pointsrc/app.jsx— top-level router and providerssrc/config/apiConfig.js— external API configurationsrc/config/firebaseConfig.js— Firebase setup (fill with your keys)src/database/firebase.js— Firebase helpers used across the appsrc/store/— Redux Toolkit slices and store configurationsrc/presenter/— presenter modules containing business logicsrc/view/— presentational React components and styles
Prerequisites
- Node.js (v16+ recommended)
- npm (or Yarn)
Install and run locally
npm install
npm run devThis starts the Vite dev server (default http://localhost:5173).
Build for production
npm run build
npm run preview- Create a Firebase project and enable Authentication and Firestore.
- Copy your Firebase config values into
src/config/firebaseConfig.jsfollowing the existing file shape. - Ensure any API keys or secrets are handled appropriately for production (use environment variables for CI/deploy).
If you prefer, create a .env file and reference values from your config files rather than committing secrets.
npm run dev— run the development servernpm run build— build the production bundlenpm run preview— locally preview the production build
Contributions are welcome. If you plan to contribute:
- Open an issue to discuss changes or features.
- Create a branch for your work.
- Submit a pull request with a clear description of changes.
This project includes a top-level LICENSE file. Refer to it for license details.
For questions or to share feedback, open an issue or contact the repository owner.



