{"id":27974158,"url":"https://github.com/abo3ish/lms-flask","last_synced_at":"2026-04-20T10:03:23.547Z","repository":{"id":291778931,"uuid":"978370897","full_name":"abo3ish/lms-flask","owner":"abo3ish","description":"Library Management System","archived":false,"fork":false,"pushed_at":"2025-05-06T13:02:17.000Z","size":2720,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-08T00:12:17.560Z","etag":null,"topics":["docker","docker-compose","html-css-javascript","library","library-management","library-management-system","python3","side-project","sqlite"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/abo3ish.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,"zenodo":null}},"created_at":"2025-05-05T22:08:43.000Z","updated_at":"2025-05-06T13:03:51.000Z","dependencies_parsed_at":"2025-05-08T00:12:18.220Z","dependency_job_id":null,"html_url":"https://github.com/abo3ish/lms-flask","commit_stats":null,"previous_names":["abo3ish/lms-flask"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abo3ish/lms-flask","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abo3ish%2Flms-flask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abo3ish%2Flms-flask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abo3ish%2Flms-flask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abo3ish%2Flms-flask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abo3ish","download_url":"https://codeload.github.com/abo3ish/lms-flask/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abo3ish%2Flms-flask/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32042294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["docker","docker-compose","html-css-javascript","library","library-management","library-management-system","python3","side-project","sqlite"],"created_at":"2025-05-08T00:12:09.425Z","updated_at":"2026-04-20T10:03:23.541Z","avatar_url":"https://github.com/abo3ish.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bibliotheca: Library Management System\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Python](https://img.shields.io/badge/python-v3.12-blue.svg)\n![Flask](https://img.shields.io/badge/flask-v2.3.2-green.svg)\n![Docker](https://img.shields.io/badge/docker-supported-blue.svg)\n\nBibliotheca is a comprehensive library management system built with Flask that helps librarians manage their collections, track circulation, and maintain member records efficiently.\n\n## Screenshots\n\n### Dashboard\n![Dashboard](app/static/img/screenshots/Screenshot%202025-05-06%20at%2015.53.27.png)\n\n### Member Profile\n![Member Profile](app/static/img/screenshots/screencapture-127-0-0-1-5000-members-1-2025-05-06-15_57_02.png)\n\n### Adding a New Book\n![Add Book](app/static/img/screenshots/screencapture-127-0-0-1-5000-books-add-2025-05-06-15_57_23.png)\n\n### Book Checkout\n![Book Checkout](app/static/img/screenshots/screencapture-127-0-0-1-5000-circulation-checkout-2025-05-06-15_57_36.png)\n\n### Reports\n![Reports](app/static/img/screenshots/Screenshot%202025-05-06%20at%2015.55.24.png)\n\n## Installation Options\n\n### Option 1: Docker Installation (Recommended)\n\nThe easiest way to run Bibliotheca across any platform (Windows, macOS, or Linux) is with Docker.\n\n#### Prerequisites\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\n#### Quick Start with Docker\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/yourusername/bibliotheca.git\n   cd bibliotheca\n   ```\n\n2. **Start the application**\n   ```bash\n   docker-compose up -d\n   ```\n\n3. **Access the application**\n   Open your browser and navigate to http://localhost:5000\n\n4. **Default login credentials**\n   - Admin User: admin@example.com / admin123\n   - Regular User: john@example.com / password123\n\n### Option 2: Traditional Installation\n\n#### Prerequisites\n- Python 3.10 or higher\n- pip (Python package installer)\n- Git\n\n#### Setup Instructions\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/yourusername/bibliotheca.git\n   cd bibliotheca\n   ```\n\n2. **Create a virtual environment**\n   ```bash\n   python -m venv venv\n   \n   # Activate the virtual environment\n   # For Windows\n   venv\\Scripts\\activate\n   \n   # For macOS/Linux\n   source venv/bin/activate\n   ```\n\n3. **Install dependencies**\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Set up environment variables**\n   ```bash\n   # Copy the example environment file\n   cp .env.example .env\n   \n   # Edit .env file with your configuration settings\n   # Make sure to generate a strong SECRET_KEY\n   ```\n\n5. **Initialize the database**\n   ```bash\n   # The database will be created when you run the app for the first time\n   # To seed the database with sample data:\n   python seed_db.py\n   ```\n\n6. **Start the development server**\n   ```bash\n   python run.py\n   ```\n\n7. **Access the application**\n   Open your browser and navigate to http://localhost:5000\n\n## Features\n\n- **Book Management**\n  - Add, edit, and remove books from the library collection\n  - Track book details including title, author, ISBN, genre, and more\n  - Manage book quantities and locations\n\n- **Member Management**\n  - Register new members and maintain their profiles\n  - Track contact information and membership status\n  - Monitor checkout history and current loans\n\n- **Circulation**\n  - Process book checkouts and returns\n  - Track due dates and calculate late fees automatically\n  - Send notifications for overdue items (optional)\n\n- **Reporting**\n  - Generate circulation statistics\n  - Inventory reports and book status\n  - Overdue book reports and fine collection tracking\n\n- **User-friendly Interface**\n  - Responsive design for desktop and mobile\n  - Search functionality for books and members\n  - Role-based access control (admin/staff/members)\n\n## Detailed Docker Guide\n\n### Development Environment\n\n```bash\n# Start the application with live reload\ndocker-compose up\n\n# Start in detached mode\ndocker-compose up -d\n\n# View logs\ndocker-compose logs -f\n\n# Stop the application\ndocker-compose down\n```\n\n### Production Environment\n\n```bash\n# Start the production stack with Nginx\ndocker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d\n\n# Stop the production stack\ndocker-compose -f docker-compose.yml -f docker-compose.prod.yml down\n```\n\n### Database Management\n\n```bash\n# To access the database shell\ndocker-compose exec web flask shell\n\n# To run database migrations\ndocker-compose exec web flask db upgrade\n\n# To seed the database with sample data\ndocker-compose exec web python seed_db.py\n```\n\n### Container Management\n\n```bash\n# Rebuild containers (after making changes)\ndocker-compose build --no-cache\n\n# View running containers\ndocker-compose ps\n\n# Execute a command in the web container\ndocker-compose exec web \u003ccommand\u003e\n\n# View container logs\ndocker-compose logs -f web\n```\n\n### Docker Configuration Files\n\n- **docker-compose.yml**: Base configuration\n- **docker-compose.override.yml**: Development-specific settings (auto-applied)\n- **docker-compose.prod.yml**: Production settings with Nginx\n- **Dockerfile**: Container build instructions\n- **.dockerignore**: Files excluded from the container\n\n### Environment Configurations\n\n- **Development**:\n  - Flask debug mode enabled\n  - Code hot-reloading\n  - Single worker for easier debugging\n\n- **Production**:\n  - Nginx for serving static files and load balancing\n  - Multiple Gunicorn workers for performance\n  - Debug mode disabled\n  - Optimized settings for production use\n\n### Cross-Platform Considerations\n\n- **Windows**: For best performance, ensure Docker is using WSL2 backend\n- **macOS**: The `:delegated` volume mounts improve filesystem performance\n- **Linux**: Works natively with optimal performance\n- **All platforms**: Database persistence via Docker volumes\n\n### Troubleshooting Docker Issues\n\n1. **Ports in use**:\n   ```bash\n   # Check if ports are in use\n   lsof -i :5000\n   # Stop the container and change the port in docker-compose.yml\n   ```\n\n2. **Database access issues**:\n   ```bash\n   # Check database volume\n   docker volume ls\n   # Inspect volume \n   docker volume inspect lms_db_data\n   ```\n\n3. **Container won't start**:\n   ```bash\n   # Check for errors\n   docker-compose logs web\n   ```\n\n4. **Rebuild from scratch**:\n   ```bash\n   docker-compose down -v\n   docker-compose build --no-cache\n   docker-compose up -d\n   ```\n\n## Project Structure\n\n```\nbibliotheca/\n├── app/                     # Application package\n│   ├── __init__.py          # App initialization\n│   ├── config.py            # Configuration settings\n│   ├── models/              # Database models\n│   ├── routes/              # Route handlers\n│   ├── static/              # Static files (CSS, JS, images)\n│   ├── templates/           # Jinja2 templates\n│   └── utils/               # Utility functions\n├── docker-compose.yml       # Base Docker configuration\n├── docker-compose.override.yml # Development Docker settings\n├── docker-compose.prod.yml  # Production Docker settings\n├── Dockerfile               # Docker container definition\n├── nginx/                   # Nginx configuration for production\n├── requirements.txt         # Python dependencies\n├── run.py                   # Application entry point\n└── seed_db.py               # Database seeding script\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create a new branch (`git checkout -b feature-branch`)\n3. Make your changes\n4. Commit your changes (`git commit -am 'Add new feature'`)\n5. Push to the branch (`git push origin feature-branch`)\n6. Create a new Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Acknowledgements\n\n- Flask and its extensions\n- SQLAlchemy ORM\n- Bootstrap for frontend styling\n- Font Awesome for icons\n- Docker for containerization\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabo3ish%2Flms-flask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabo3ish%2Flms-flask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabo3ish%2Flms-flask/lists"}