TownBook is a community library management system designed to streamline book catalog browsing, reading room reservations, and library administration. The project consists of a React-based frontend and an Express/MongoDB backend.
https://townbook-ritik.netlify.app/login
https://townbook-efvj.onrender.com
- User authentication (login/register)
- Book catalog browsing
- Reading room reservations
- User profile management
- Admin dashboard for librarians
- Book and room request management
- Automated email reminders for book pickups
- Responsive design
- Frontend: React, Vite, Material-UI, Redux Toolkit, React Router, Axios
- Backend: Node.js, Express, MongoDB, Mongoose, JWT, Nodemailer, Node-cron
TownBook-main/
├── frontend/ # React frontend application
├── backend/ # Express backend API
└── README.md # Project documentation
- Node.js (v14 or higher)
- npm or yarn
- MongoDB (local or cloud instance)
git clone <repository-url>
cd TownBook-maincd backend
npm installCreate a .env file in the backend directory:
MONGODB_URI=mongodb://localhost:27017/townbook
PORT=5000
EMAIL_USER=your_gmail_address@gmail.com
EMAIL_PASSWORD=your_gmail_app_password
Start the backend server:
npm startcd ../frontend
npm installCreate a .env file in the frontend directory:
VITE_API_URL=http://localhost:5000/api
Start the frontend development server:
npm run devThe frontend will be available at http://localhost:5173.
POST /api/auth- User authenticationGET /api/books- Book catalogPOST /api/books- Add new book (admin)GET /api/rooms- List reading roomsPOST /api/reservations- Reserve a roomGET /api/book-requests- Book requests (admin)GET /api/room-requests- Room requests (admin)
- Daily email reminders for approved book pickups (using Node-cron and Nodemailer)
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to your branch
- Create a Pull Request
This project is licensed under the MIT License.
-- admin dashboard email - Librarian@gmail.com pass - Librarian@123