A modern, responsive web application for scanning book barcodes, retrieving book information, and building your personal library.
- Barcode Scanning: Scan book barcodes using your device's camera
- Book Information: Retrieve detailed book information from Google Books API
- Personal Library: Save books to your personal library
- Responsive Design: Works on desktop, tablet, and mobile devices
- Modern UI: Clean, minimalist interface with Tailwind CSS
- Nuxt.js 3: Vue.js framework for building modern web applications
- Tailwind CSS: Utility-first CSS framework
- Vue Barcode Reader: Barcode scanning library
- Appwrite: Backend as a Service for authentication and database
- Google Books API: Book information retrieval
- Node.js (v16 or later)
- npm or yarn
- Appwrite account
- Create an Appwrite project
- Create a database
- Create a collection with the following attributes:
title
(string)authors
(string[])description
(string)publishedDate
(string)thumbnail
(string)isbn
(string)
- Set appropriate read/write permissions for your collection
Create a .env
file in the root directory with the following variables:
NUXT_PUBLIC_APPWRITE_PROJECT_ID=your-project-id
NUXT_PUBLIC_APPWRITE_DATABASE_ID=your-database-id
NUXT_PUBLIC_APPWRITE_COLLECTION_ID=your-collection-id
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
- Allow camera access when prompted
- Position a book's barcode within the camera view
- Once scanned, book information will be displayed
- Click "Add to Library" to save the book to your personal collection
- View all your saved books in the "My Library" section
This project is configured to be deployed using Nixpacks, which automatically creates optimized Docker images.
-
Make sure you have Nixpacks installed:
curl -sSL https://nixpacks.com/install.sh | bash
-
Build your application with Nixpacks:
nixpacks build . --name book-scanner
-
Run the built image:
docker run -p 3000:3000 book-scanner
Make sure to set the following environment variables in your production environment:
NODE_ENV=production
NUXT_PUBLIC_APPWRITE_PROJECT_ID=your-project-id
NUXT_PUBLIC_APPWRITE_DATABASE_ID=your-database-id
NUXT_PUBLIC_APPWRITE_COLLECTION_ID=your-collection-id
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Books API for providing book data
- Appwrite for backend services
- Nuxt.js for the amazing framework
- Tailwind CSS for the styling utilities