A web-based books reading application that lets users discover, manage, and read books online.
BookSpace is a full-stack web application built with Node.js and Express that provides a platform for users to browse and read books online. It features user authentication, session management, a PostgreSQL database backend, and PDF rendering capabilities — making it a complete digital reading experience right in the browser.
No live demo link available yet. Clone and run locally using the instructions below.
- Clean and responsive UI built with HTML, CSS, and JavaScript
- User authentication (register & login) with password hashing via bcrypt
- Session-based user management using express-session
- Search and filter books by title, author, or genre
- Web-based book reading with PDF rendering
- PostgreSQL database integration for persistent storage
- Bookmarking and reading progress tracking
- User reviews and ratings for books
- Organized book browsing and management through history and user library
- Dedicated user profile to manage user information
| Layer | Technology |
|---|---|
| Runtime | Node.js |
| Framework | Express.js v5 |
| Database | PostgreSQL (via pg) |
| Auth | bcrypt, express-session |
| PDF Handling | pdf-lib |
| Frontend | HTML, CSS, Vanilla JavaScript |
Make sure you have Node.js and PostgreSQL installed on your machine.
# 1. Clone the repository
git clone https://github.com/RajVaibhav85/BookSpace.git
# 2. Navigate into the project directory
cd BookSpace
# 3. Install dependencies
npm install
# install express , pg , sessions , bcrypt - Create a PostgreSQL database for BookSpace.
- Set up your environment variables (see Environment Variables section).
- Run the database setup scripts from the
DataBase/folder to initialize your schema.
# Start the server (production)
npm start
# Or navigate to Control and execute node server.js
# Start the server with auto-reload (development)
npm run devThe app will run at http://localhost:3000 by default (or whichever port is configured).
Endpoints are handled in
Control/server.js. Common routes likely include:
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
Home / landing page |
| GET | /login |
Login page |
| POST | /login |
Authenticate user |
| GET | /register |
Registration page |
| POST | /register |
Create new user account |
| GET | /books |
Browse available books |
| GET | /books/:id |
View / read a specific book |
| GET | /logout |
Log out current user |
BookSpace/
├── About/ # About page assets and content
├── Control/ # Server-side logic (Express routes, controllers)
│ └── server.js # Main application entry point
├── DataBase/ # Database schema and query files
├── Dumpyard/ # Temporary / archived files ( ignore it is for contributors )
├── Public/ # Static assets (images, icons, etc.)
├── View2/ # Frontend HTML views / templates
├── .gitignore
├── package.json
├── package-lock.json
└── README.md
Screenshots coming soon.
Example:


Create a .env file in the root directory and add the following:
# Server
PORT=3000
# Database
DB_USER=your_db_username
DB_HOST=localhost
DB_NAME=bookspace
DB_PASSWORD=your_db_password
DB_PORT=5432
# Session
SESSION_SECRET=your_super_secret_keyNever commit your
.envfile to version control. It is already listed in.gitignore.
No automated tests are currently configured. To manually test the application:
- Start the server with
npm run dev - Visit
http://localhost:3000in your browser - Register a new account and verify login/logout flows
- Browse books and confirm PDF rendering works correctly Contributions adding a test suite (e.g., Jest, Mocha) are welcome!
You can deploy BookSpace to any Node.js-compatible hosting platform:
Render / Railway / Heroku:
# Set all environment variables in your hosting dashboard
# Set the start command to:
npm startVPS (e.g., DigitalOcean, AWS EC2):
# Install Node.js and PostgreSQL on the server
# Clone the repo, install dependencies, set up .env
# Use PM2 for process management:
npm install -g pm2
pm2 start Control/server.js --name bookspaceContributions are welcome! Here's how to get started:
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature-name - Make your changes and commit:
git commit -m "Add: your feature description" - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request
Please make sure your code is clean and well-commented.
- Mobile-responsive design improvements ( few pages are already implemented testing left )
- Admin panel for uploading and managing books
- Email notifications for new book additions
- Unit and integration test coverage
- No live deployment available yet
- No automated test suite in place
- Environment variable documentation may need updates as the project evolves
Found a bug? Please open an issue.
This project is licensed under the ISC License. See the LICENSE file for details.
- C Hemanth Sagar — @Hemanth-Zero
- K Sree Vaibhav — @RajVaibhav85
- Express.js — Fast, minimal web framework for Node.js
- pdf-lib — PDF rendering library
- bcrypt — Secure password hashing
- node-postgres (pg) — PostgreSQL client for Node.js
- express-session — Session middleware
If you have questions, suggestions, or just want to say hi:
- Open an issue on GitHub Issues
- GitHub: @RajVaibhav85 @Hemanth-Zero
This project is developed for educational purposes under the guidance of Gireesh Sir.
Made by C Hemanth Sagar , K Sree Vaibhav