{"id":31940195,"url":"https://github.com/sarthak-g0yal/mldeploylab","last_synced_at":"2026-04-20T13:31:58.713Z","repository":{"id":304671511,"uuid":"994263602","full_name":"Sarthak-G0yal/MLDeployLab","owner":"Sarthak-G0yal","description":"Demonstrates the end-to-end workflow of building, deploying, and serving machine learning models.","archived":false,"fork":false,"pushed_at":"2025-07-22T07:40:32.000Z","size":17956,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-14T08:53:28.066Z","etag":null,"topics":["api","docker","fastapi","machine-learning","mlops"],"latest_commit_sha":null,"homepage":"https://mldeploylab-frontend.onrender.com/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sarthak-G0yal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-06-01T15:17:54.000Z","updated_at":"2025-07-22T07:40:35.000Z","dependencies_parsed_at":"2025-07-14T17:48:49.142Z","dependency_job_id":null,"html_url":"https://github.com/Sarthak-G0yal/MLDeployLab","commit_stats":null,"previous_names":["sarthak-g0yal/mldeploylab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Sarthak-G0yal/MLDeployLab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sarthak-G0yal%2FMLDeployLab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sarthak-G0yal%2FMLDeployLab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sarthak-G0yal%2FMLDeployLab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sarthak-G0yal%2FMLDeployLab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sarthak-G0yal","download_url":"https://codeload.github.com/Sarthak-G0yal/MLDeployLab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sarthak-G0yal%2FMLDeployLab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32048937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","docker","fastapi","machine-learning","mlops"],"created_at":"2025-10-14T08:52:32.631Z","updated_at":"2026-04-20T13:31:58.708Z","avatar_url":"https://github.com/Sarthak-G0yal.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MLDeployLab\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"frontend/assets/logo_square.png\" alt=\"MLDeployLab Logo\" width=\"180\" style=\"border-radius:8px; padding:4px; box-shadow:0 2px 6px rgba(0, 0, 0, 0.1);\"\u003e\n\u003c/p\u003e\n\n\n\n\nThis repository demonstrates the end-to-end workflow of building, deploying, and serving machine learning models using FastAPI, Docker, and Streamlit. MLDeployLab covers the complete lifecycle of ML model deployment—from training to serving predictions through RESTful APIs to capturing feedback for automated retraining.\n\n## Project Structure\n\n```\n.\n├── app                          # Backend FastAPI application\n│   ├── core                    # App configuration (e.g., config.py)\n│   ├── resources               # Trained models and encoders\n│   │   ├── encoders            # Serialized encoders (e.g., .joblib files)\n│   │   └── models              # PyTorch model files (.pt)\n│   ├── routers                 # FastAPI route definitions\n│   ├── schemas                 # Pydantic schemas for request/response validation\n│   ├── services                # Business/inference logic\n│   ├── main.py                 # FastAPI app entry point\n│   ├── Dockerfile              # Backend Dockerfile\n│   ├── requirements.txt        # Python dependencies\n│   └── pyproject.toml          # Project metadata and tooling config                     \n├── frontend                    # Streamlit frontend application\n│   ├── classifiers             # UI components for classifiers\n│   ├── config.py               # Frontend configuration\n│   ├── get_schema.py           # Schema fetch utility\n│   ├── main.py                 # Streamlit app entry point\n│   ├── Dockerfile              # Frontend Dockerfile\n│   ├── requirements.txt        # Python dependencies\n│   └── pyproject.toml          # Project metadata and tooling config\n├── notebooks                   # Jupyter notebooks for model training\n│   ├── AnimalClassifier.ipynb  # Training notebook for animal classifier\n│   └── RiceClassifier.ipynb    # Training notebook for rice classifier\n└── docker-compose.yaml         # Multi-service Docker configuration\n\n````\n\n## Backend\n\nThe backend is implemented with FastAPI and exposes RESTful endpoints for model inference. It is containerized with Docker and deployed on Render using the included `Dockerfile`.\n\n**Deployment:**  \nhttps://mldeploylab-app.onrender.com/\n\n\u003e The backend may enter a sleep state after periods of inactivity; it will resume automatically within a few minutes.\n\n## Frontend\n\nThe frontend is built with Streamlit to provide an interactive interface for testing models and submitting feedback. It is containerized with Docker and deployed on Render using the included `Dockerfile`.\n\n**Live Demo:**  \nhttps://mldeploylab-frontend.onrender.com/\n\n\u003e The frontend may enter a sleep state after periods of inactivity; it will resume automatically within a few minutes.\n\n## Local Development\n\nTo run both backend and frontend locally, ensure that Docker and Docker Compose are installed. From the project root:\n\n```bash\ndocker-compose up --build\n````\n\n* Backend API: `http://localhost:8000`\n* Streamlit UI: `http://localhost:8501`\n\n## Available Models\n\n### Rice Type Classifier\n\nClassifies rice grain types based on geometric and shape-based features.\n\n**Sample Input**\n\n```json\n{\n  \"Area\": 2872,\n  \"MajorAxisLength\": 74.69,\n  \"MinorAxisLength\": 51.40,\n  \"Eccentricity\": 0.73,\n  \"ConvexArea\": 3015,\n  \"EquivDiameter\": 60.47,\n  \"Extent\": 0.71,\n  \"Perimeter\": 208.31,\n  \"Roundness\": 0.83,\n  \"AspectRatio\": 1.45\n}\n```\n\n**Classes**\n\n- Jasmine\n- Gonen \n\n**Dataset**  \nRice Type Classification on Kaggle: https://www.kaggle.com/datasets/mssmartypants/rice-type-classification\n\n\n### Animal Image Classifier\n\nClassifies animals from an image URL. The API accepts a JSON payload with an image URL, downloads the image, and returns the predicted label.\n\n**Sample Input**\n\n```json\n{\n  \"image_url\": \"https://example.com/path/to/image.jpg\"\n}\n```\n\n**Classes**\n\n- Cat  \n- Dog  \n- Wild  \n\n**Dataset**  \nAnimal Faces on Kaggle: https://www.kaggle.com/datasets/andrewmvd/animal-faces\n\n## Feedback and Contributions\n\nContributions, suggestions, and feedback are welcome. Please open an issue or submit a pull request for improvements, bug reports, or feature requests.\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n\n## Author\n\nSarthak Goyal\n[sarthak.goyal.3505@gmail.com](mailto:sarthak.goyal.3505@gmail.com)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarthak-g0yal%2Fmldeploylab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsarthak-g0yal%2Fmldeploylab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsarthak-g0yal%2Fmldeploylab/lists"}