A matchmaking site connecting book donors and seekers.
BookBuddy helps schools create their own book exchange platform where students can donate books they no longer need and find books they want to read.
This was initially a random idea I started developing, thanks to the pile of books I made a standing desk out of. At Hack Club, I'm continuing to work on it as part of my Journey project. Here's the Journey project page for BookBuddy: BookBuddy Journey.
npm install
npm run serve
npm run build
npm run lint
BookBuddy uses Firebase for data storage and authentication. Follow these steps to set up your own Firebase instance:
- Go to the Firebase Console
- Click "Add project" and follow the setup wizard
- Name your project (e.g., "YourSchool-BookBuddy")
- Choose whether to enable Google Analytics (recommended)
- Accept the terms and click "Create project"
- In the Firebase Console, click "Firestore Database" in the left menu
- Click "Create database"
- Choose "Start in test mode" for development (you can set up rules later)
- Select a location close to your school
- Click "Enable"
- In the Firebase Console, click the gear icon (⚙️) and select "Project settings"
- Scroll down to "Your apps" and click the web icon (</>)
- Register your app with a nickname (e.g., "yourschool-bookbuddy")
- Click "Register app"
- Copy the Firebase configuration object (you'll need this in the next step)
- In your BookBuddy project, create a
.env
file in the root directory - Copy the contents of
.env.example
into your.env
file - Replace the placeholder values with your Firebase configuration values:
VUE_APP_FIREBASE_API_KEY=your-api-key-here
VUE_APP_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VUE_APP_FIREBASE_PROJECT_ID=your-project-id
VUE_APP_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
VUE_APP_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
VUE_APP_FIREBASE_APP_ID=your-app-id
To populate your database with sample books:
- Go to the Firestore Database in your Firebase Console
- Create a collection called "books"
- Add documents with the following fields:
- title (string): Book title
- author (string): Book author
- category (string): Book category
- description (string): Book description
- status (string): "available", or "donated"
- condition (string): Book condition
- addedDate (timestamp): When the book was added
- donorId (string): ID of the donor (if using authentication)
BookBuddy includes a local storage fallback for development without Firebase. To use this mode:
- Don't create a
.env
file (or rename it temporarily) - The app will automatically use the fallback local storage database
You may want to customize:
- Your fork name in
package.json
- Firebase configuration in
.env
- Firebase rules in
firestore.rules
- Fork name and repo URL in
public/config.yaml
- Your preferred logo in
src/assets/logo.png
andpublic/favicon.ico
- Build your project:
npm run build
- Deploy to Firebase Hosting:
npm install -g firebase-tools firebase login firebase init hosting firebase deploy
Shoutout to Yaashica! 🥳