Ubrary is a full-stack online library application designed to provide a seamless experience for both readers and administrators. It allows users to browse, borrow, and manage a vast collection of books through an intuitive web interface. The project is built with Django and utilizes the Django REST Framework to expose a powerful API.
- User Authentication: Secure user registration and login system.
- Book Catalog: Browse books by categories like Fantasy, Science, Technology, etc.
- Search Functionality: Easily find books with a powerful search feature.
- Book Details: View detailed information for each book, including cover, author, and description.
- Personalized Lists: Users can add books to their "Favorites" and "Borrowed" lists.
- Admin Panel: A comprehensive admin dashboard to manage books, users, and categories.
- RESTful API: A well-documented API for programmatic access to the library's resources.
- Backend: Django, Django REST Framework
- Frontend: HTML, CSS, JavaScript
- Database: SQLite3 (default, can be configured for others)
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
- Python (3.8+ recommended)
- pip (Python package installer)
-
Clone the repository:
git clone https://github.com/your-username/Ubrary.git cd Ubrary -
Create and activate a virtual environment:
- On Windows:
python -m venv venv .\venv\Scripts\activate
- On macOS/Linux:
python3 -m venv venv source venv/bin/activate
- On Windows:
-
Install dependencies: Note: A
requirements.txtfile is not present. You can create one usingpip freeze > requirements.txtafter installing the packages below.pip install Django djangorestframework Pillow
-
Apply database migrations:
python manage.py migrate
-
Create a superuser to access the admin panel:
python manage.py createsuperuser
(Follow the prompts to create a username and password)
-
Run the development server:
python manage.py runserver
The application will be available at
http://127.0.0.1:8000.
The project follows a standard Django project structure:
Ubrary/
├── db.sqlite3
├── library/
│ ├── __init__.py
│ ├── admin.py
│ ├── models.py
│ ├── serializers.py
│ ├── static/
│ ├── templates/
│ ├── urls.py
│ └── views.py
├── manage.py
├── media/
│ └── book_covers/
└── README.md
library/: The main Django app.library/models.py: Contains the database models (e.g.,Book,User).library/views.py: Contains the logic for rendering pages and API endpoints.library/serializers.py: Defines the API representations.library/urls.py: URL routing for the application.library/templates/: HTML templates for the frontend.library/static/: CSS, JavaScript, and image files.media/: Stores user-uploaded files like book covers.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Made with ❤️ by The Ubrary Team