A simple and efficient web application for managing book notes, allowing users to store and organize their reading insights effectively.
The application is live at: Book Notes WebApp
This application provides a range of features to help users efficiently manage their book notes. Here are some key highlights:
- 📖 Add, edit, and delete book notes
- 🔍 Search and filter notes
- 📂 Categorize notes by book title or genre
- 🎨 Clean and responsive UI
- 🌐 Built using modern web technologies
- 📅 Sort books by title, rating, or finish date
- 👥 User authentication with Google OAuth and local strategy
- Frontend: HTML, CSS, JavaScript
- Backend: Node.js, Express.js
- Database: PostgreSQL
- Frameworks/Libraries: Bootstrap, Passport.js
Book-Notes-WebApp/
├── public/ # Static assets (CSS, JS, images)
├── views/ # Frontend templates (EJS)
├── routes/ # API routes
├── controller/ # Business logic
├── .vscode/ # VSCode settings
├── .env # Environment variables
├── .gitignore # Git ignore file
├── db.js # Database connection
├── index.js # Main server entry point
├── package.json # Dependencies and scripts
├── queries.sql # SQL queries for database setup
└── README.md # Project documentation
- Install Node.js
- Install PostgreSQL
These steps cover both setting up the repository and initializing the PostgreSQL database.
- Clone the repository:
git clone https://github.com/IamVatsal/Book-Notes-WebApp.git
- Navigate to the project folder:
cd Book-Notes-WebApp - Install dependencies:
npm install
- Set up environment variables:
cp .env.example .env # Update .env file with necessary details
GOOGLE_CLIENT_ID = "Your_Client_Id"
GOOGLE_CLIENT_SECRET = "Your_Client_Secret"
GOOGLE_CALLBACK_URL = "${YourBase URL}/login/auth/google/callback" (Optional)
DB_USER = Your_User_Name
DB_HOST = Your_DB_Host
DB_NAME = Your_DB_Name
DB_PASSWORD = Your_DB_Password
DB_PORT = Your_DB_Port
SESSION_SECRET = "SECRETWORD"
NODE_ENV = "local" or "production"-
Access the PostgreSQL shell:
psql -U your_username -d your_database
-
Create the
book_detailstable:CREATE TABLE book_details ( id SERIAL PRIMARY KEY, title TEXT NOT NULL, isbn TEXT NOT NULL, olid TEXT NOT NULL, authorName TEXT NOT NULL, genre TEXT NOT NULL, username TEXT NOT NULL, finishDate DATE NOT NULL, rating INTEGER NOT NULL, isPublic BOOLEAN DEFAULT FALSE, summary TEXT NOT NULL );
-
Create the
userstable:CREATE TABLE users ( id SERIAL PRIMARY KEY, email VARCHAR(100) NOT NULL UNIQUE, password TEXT NOT NULL, username TEXT NOT NULL UNIQUE );
-
Create the
sessiontable:CREATE TABLE session ( sid VARCHAR PRIMARY KEY, sess JSON NOT NULL, expire TIMESTAMPTZ NOT NULL );
-
Start the server:
npm start
-
Open your browser and visit:
http://localhost:3000
- Add new book notes with title, content, and category
- Search and filter through saved notes
- Edit or delete notes when needed
- Sort books by title, rating, or finish date
- Authenticate using Google OAuth or local strategy
Contributions are welcome! Follow these steps:
- Fork the repository
- Create a new branch (
feature-branch) - Commit changes (
git commit -m 'Add new feature') - Push to your fork (
git push origin feature-branch) - Create a pull request
This project is licensed under the MIT License.
For any queries or feedback, feel free to reach out:
- GitHub: IamVatsal
- Email: vatsalpatel0609@gmail.com
Made with ❤️ by IamVatsal


