- Anisha Adhikari (221609) – Backend Developer
- Lamin Tamang (221720) – Backend Developer
- Nishan Giri (221728) – Backend Developer
- Prawneel Poudel (221734) – Frontend Developer
Our project is a full-stack Library Management System designed to help librarians and users efficiently manage books, authors, categories, and availability status. The system is built with FastAPI for the backend and React.js with TypeScript for the frontend, using TinyDB as a lightweight NoSQL database.
The system is targeted toward educational institutions and small organizations where a lightweight, easy-to-deploy, and cost-effective solution is more practical than traditional, complex systems. Using Docker, we ensure consistent environments across different machines, improving portability and deployment speed.
- Challenge: Traditional library systems are often outdated, inaccessible remotely, and hard to manage without technical expertise.
- Context: With growing digital needs, libraries require a lightweight, intuitive, and maintainable solution, even in low-resource settings.
- Impact: A cloud-ready, containerized library system significantly reduces operational overhead while improving accessibility and data handling.
- Develop a modern web application for managing library operations (books, authors, and categories).
- Use Docker for containerization, ensuring consistent environments and simple deployment.
- Implement FastAPI for RESTful API development and React.js with TypeScript for a clean, interactive frontend.
- Integrate TinyDB for lightweight, JSON-based data persistence with minimal setup.
-
Frontend
- Built with React.js and TypeScript
- Provides a user-friendly interface for managing library data
- Supports CRUD operations for books, authors, and categories
-
Backend
- Developed using FastAPI
- Organized with modular API routes:
- Author APIs
- Book APIs
- Category APIs
- Utility APIs (e.g., bulk upload, filters)
-
Database
- TinyDB, a lightweight, document-oriented JSON-based database
-
Deployment
- Fully Dockerized setup
- Deployable using
docker-compose
for both backend and frontend
- Localhost (via Docker containers)
- Python (FastAPI)
- TypeScript (React)
- TinyDB (local JSON-based storage)
- Backend: FastAPI, Pydantic
- Frontend: React.js, TypeScript
- Docker, Docker Compose
- RESTful API services
To run this Library Management System locally using Docker:
- Docker installed
- Docker Compose (comes with Docker)
- Modular API development with structured files like auth_and_book_apis.py, bulk_action_apis.py, etc.
- Utilized FastAPI routers for scalable API architecture.
- Integrated TinyDB with custom serialization for flexible storage.
- Implemented Docker containers for backend and frontend for consistent deployment.
- Cross-functional team collaboration ensured faster development and smooth integration.
- Swagger UI used for testing and exploring REST endpoints.
- Postman for manual testing of JSON payloads.
- Validation handled via Pydantic models to ensure input consistency.
- Functional Testing conducted within Docker containers post-deployment.
- Response Time: ~<100ms on local requests
- Concurrent Load: Handles multiple API requests without degradation
- Deployment Cost: Zero, using Docker and local JSON storage
- System Efficiency: FastAPI and TinyDB offer low overhead and quick startup
- Replace TinyDB with PostgreSQL or MongoDB for greater scalability
- Implement authentication and Role-Based Access Control (RBAC)
- Add advanced UI features like filtering, sorting, and search
- Integrate CI/CD pipelines using GitHub Actions or Jenkins
- Host the application on cloud platforms such as AWS EC2, Render, or Railway
- Team Collaboration: Special thanks to all team members for their active participation and consistent contributions.
- Open-Source Tools: Thanks to the communities of FastAPI, React, TinyDB, and Docker for their comprehensive documentation and support.
- FastAPI Documentation
- TinyDB Documentation
- React.js Documentation
- Docker Documentation
- Pydantic Documentation
This project is developed for academic purposes. License information (e.g., MIT, Apache 2.0) may be added if required.
Our project aims to build a full-stack Library Management System that allows librarians and users to manage books, authors, categories, and book availability. The system is developed using FastAPI for the backend and React.js and typescript for the frontend, and utilizes TinyDB as a lightweight database.
This project addresses the need for an efficient and modernized approach to handling library data without relying on heavy relational databases. It is particularly relevant for educational or small organizational use where resources are limited, and flexibility is essential. The use of Docker further ensures easy deployment and portability.