{"id":21486200,"url":"https://github.com/bharathbk07/book-store","last_synced_at":"2025-07-19T11:34:36.582Z","repository":{"id":259271657,"uuid":"876886319","full_name":"bharathbk07/Book-Store","owner":"bharathbk07","description":"This is a FastAPI application for a bookstore management system, featuring user authentication, order management, and various endpoints for managing books, users, and carts.","archived":false,"fork":false,"pushed_at":"2024-10-26T08:45:31.000Z","size":64,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T10:11:43.422Z","etag":null,"topics":["fast-api","mysql","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bharathbk07.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-22T18:03:15.000Z","updated_at":"2024-10-30T14:00:15.000Z","dependencies_parsed_at":"2024-10-24T02:16:13.359Z","dependency_job_id":"130be976-dd57-4d5d-be78-433878eface4","html_url":"https://github.com/bharathbk07/Book-Store","commit_stats":null,"previous_names":["bharathbk07/book-store"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bharathbk07/Book-Store","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bharathbk07%2FBook-Store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bharathbk07%2FBook-Store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bharathbk07%2FBook-Store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bharathbk07%2FBook-Store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bharathbk07","download_url":"https://codeload.github.com/bharathbk07/Book-Store/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bharathbk07%2FBook-Store/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265926955,"owners_count":23850886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fast-api","mysql","python"],"created_at":"2024-11-23T13:19:53.570Z","updated_at":"2025-07-19T11:34:36.535Z","avatar_url":"https://github.com/bharathbk07.png","language":"Python","readme":"# Book-Store\n\nFastAPI Bookstore Application\n\nThis is a FastAPI application for a bookstore management system, featuring user authentication, order management, and various endpoints for managing books, users, and carts.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Environment Variables](#environment-variables)\n- [Database Setup](#database-setup)\n- [Running the Application](#running-the-application)\n- [API Documentation](#api-documentation)\n- [API Endpoints](#api-endpoints)\n  - [Authentication](#authentication)\n  - [User Management](#user-management)\n  - [Book Management](#book-management)\n  - [Order Management](#order-management)\n  - [Cart Management](#cart-management)\n- [Contributing](#contributing)\n\n## Features\n\n- **User Authentication**: Supports login and logout using HTTP Basic Authentication and token-based authentication (JWT).\n- **User Management**: Admins can view all user profiles and manage their orders.\n- **Book Management**: Admins can add, update, and delete books in the inventory.\n- **Order Management**: Users can place orders, view their orders, and cancel orders. Admins can manage order statuses.\n- **Cart Management**: Users can add books to their cart and view their cart items.\n\n## Folder Structure\n\n```\nBook store/\n├─ app/\n│  ├─ database/\n│  │  ├─ __init__.py\n│  │  ├─ db_connect.py\n│  ├─ orders/\n│  │  ├─ __init__.py\n│  │  ├─ ordermanagement.py\n│  ├─ schemas/\n│  │  ├─ __init__.py\n│  │  ├─ schemas.py\n│  ├─ search/\n│  │  ├─ __init__.py\n│  │  ├─ searchcontroller.py\n│  ├─ users/\n│  │  ├─ __init__.py\n│  │  ├─ user_routes.py\n│  ├─ utlis/\n│  │  ├─ __init__.py\n│  │  ├─ password_utils.py\n│  ├─ auth/\n│  │  ├─ __init__.py\n│  │  ├─ auth_routes.py\n│  │  ├─ jwt_handler.py\n│  ├─ books/\n│  │  ├─ __init__.py\n│  │  ├─ bookscontroller.py\n│  ├─ cart/\n│  │  ├─ __init__.py\n│  │  ├─ cartcontroller.py\n├─ main.py\n├─ requirements.txt\n├─ .gitignore\n├─ __init__.py\n\n```\n\n## Technologies Used\n\n- **FastAPI**: A modern web framework for building APIs with Python.\n- **MySQL**: Database for storing user, book, and order information.\n- **Pydantic**: Data validation and settings management using Python type annotations.\n- **Uvicorn**: ASGI server for running the FastAPI application.\n\n## Setup and Installation\n\n### Prerequisites\n\n- Python 3.7 or later\n- MySQL Server\n- pip (Python package installer)\n\n## Environment Variables\n\nCreate a `.env` file in the root directory and set the following environment variables:\n\n```plaintext\nDB_HOST=localhost\nDB_USER=your_db_user\nDB_PASSWORD=your_db_password\nDB_NAME=your_db_name\nSECRET_KEY=your_secert_key\n```\n\n# Online Bookstore Database Setup\n\nThis document provides instructions for setting up the database for the Online Bookstore application.\n\n## Creating the Database\n\nTo create the database, run the following SQL command:\n\n```sql\nCREATE DATABASE IF NOT EXISTS onlinebookstore;\n```\n\n# Creating Tables\n\nAfter creating the database, you can create the necessary tables by executing the following SQL commands:\n\n## Create Books Table\n```sql\nCREATE TABLE IF NOT EXISTS books (\n    barcode VARCHAR(100) PRIMARY KEY,\n    name VARCHAR(100),\n    author VARCHAR(100),\n    price INT,\n    quantity INT,\n    added_by VARCHAR(100)\n);\n```\n\n## Create Users Table\n```sql\nCREATE TABLE IF NOT EXISTS users (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    username VARCHAR(100) UNIQUE,\n    password VARCHAR(255),\n    firstname VARCHAR(100),\n    lastname VARCHAR(100),\n    address VARCHAR(255),\n    phone VARCHAR(20),\n    mailid VARCHAR(100) UNIQUE,\n    usertype VARCHAR(50)\n);\n```\n\u003ch2\u003eUse Below api to create admin user\u003c/h2\u003e\n\n```curl\ncurl --location 'localhost:8000/users/register' --header 'Content-Type: application/json' --data '{\n  \"username\": \"Admin\",\n  \"password\": \"Admin!\",\n  \"firstname\": \"Admin\",\n  \"lastname\": \"Admin\",\n  \"address\": \"Admin\",\n  \"phone\": \"Admin\",\n  \"mailid\": \"Admin\",\n  \"usertype\": \"admin\"\n}\n```\n\n## Create Orders table\n\n```sql\nCREATE TABLE IF NOT EXISTS orders (\n    order_id INT AUTO_INCREMENT PRIMARY KEY,\n    user_id INT,\n    barcode VARCHAR(100),\n    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,\n    transaction_id VARCHAR(100) UNIQUE,\n    total_amount DECIMAL(10, 2),\n    status VARCHAR(50),\n    quantity INT DEFAULT 1,\n    FOREIGN KEY (user_id) REFERENCES users(id),\n    FOREIGN KEY (barcode) REFERENCES books(barcode)\n);\n```\n\n## Create Cart table\n\n```sql\nCREATE TABLE IF NOT EXISTS cart (\n    cart_id INT AUTO_INCREMENT PRIMARY KEY,\n    user_id INT,\n    barcode VARCHAR(100),\n    quantity INT DEFAULT 1,\n    FOREIGN KEY (user_id) REFERENCES users(id),\n    FOREIGN KEY (barcode) REFERENCES books(barcode)\n);\n```\n\n## Running the Application\n\nStart the application using Uvicorn:\n\n```bash\nuvicorn main:app --reload\n```\n\nAccess the application at [http://127.0.0.1:8000](http://127.0.0.1:8000).\n\n## API Documentation\n\nThe API documentation is automatically generated by FastAPI and can be accessed at:\n\n- Swagger UI: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)\n- ReDoc: [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc)\n\n## API Endpoints\n\n### Authentication\n\n- **Login**\n\n  - **URL:** `/auth/login`\n  - **Method:** POST\n  - **Auth:** Basic Auth\n  - **Request Body:** (in Authorization header)\n    - username\n    - password\n  - **Response:**\n  \n  ```json\n  {\n    \"message\": \"Login successful!\",\n    \"Token\": \"Bearer {your_jwt_token}\"\n  }\n  ```\n\n- **Logout**\n\n  - **URL:** `/auth/logout`\n  - **Method:** POST\n  - **Auth:** Bearer Token\n  - **Response:**\n\n  ```json\n  {\n    \"message\": \"Successfully logged out\"\n  }\n  ```\n\n### User Management\n\n- **Get User Profile**\n\n  - **URL:** `/users/profile`\n  - **Method:** GET\n  - **Auth:** Bearer Token\n  - **Response:**\n\n  ```json\n  {\n    \"id\": 1,\n    \"username\": \"user1\",\n    \"usertype\": \"admin\"\n  }\n  ```\n\n### Book Management\n\n- **Add Book** \n- **Update Book** \n- **Delete Book** \n\n### Order Management\n\n- **Place Order**\n\n  - **URL:** `/order/order_book`\n  - **Method:** POST\n  - **Request Body:**\n\n  ```json\n  {\n    \"barcode\": \"123456\",\n    \"quantity\": 1\n  }\n  ```\n\n  - **Response:**\n\n  ```json\n  {\n    \"message\": \"Order placed successfully\",\n    \"transaction_id\": \"uuid\"\n  }\n  ```\n\n- **View Orders**\n\n  - **URL:** `/order/view_orders`\n  - **Method:** GET\n  - **Auth:** Bearer Token (Admin can view all orders)\n  - **Response:** List of orders with their details.\n\n### Cart Management\n\n- **View Cart**\n\n  - **URL:** `/cart/view`\n  - **Method:** GET\n  - **Auth:** Bearer Token\n  - **Response:** List of cart items for the user.\n\n## Contributing\n\nIf you would like to contribute to this project, please fork the repository and create a pull request.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbharathbk07%2Fbook-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbharathbk07%2Fbook-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbharathbk07%2Fbook-store/lists"}