{"id":25828870,"url":"https://github.com/tawfikhammad/summify","last_synced_at":"2026-05-15T03:32:23.748Z","repository":{"id":256822686,"uuid":"856535981","full_name":"tawfikhammad/Summify","owner":"tawfikhammad","description":"An app summarizes documents (pdf-txt) supported extractive and abstractive summarization.","archived":false,"fork":false,"pushed_at":"2025-06-17T03:29:01.000Z","size":14644,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-17T04:27:08.583Z","etag":null,"topics":["deployment","fastapi","nlp","summarization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tawfikhammad.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":"2024-09-12T18:35:26.000Z","updated_at":"2025-06-17T03:29:04.000Z","dependencies_parsed_at":"2024-09-13T08:18:08.896Z","dependency_job_id":"eacd508c-7d11-4900-b144-048462a0813e","html_url":"https://github.com/tawfikhammad/Summify","commit_stats":null,"previous_names":["tawfikhammad/text-summarization-project"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tawfikhammad/Summify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawfikhammad%2FSummify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawfikhammad%2FSummify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawfikhammad%2FSummify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawfikhammad%2FSummify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tawfikhammad","download_url":"https://codeload.github.com/tawfikhammad/Summify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tawfikhammad%2FSummify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33052617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"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":["deployment","fastapi","nlp","summarization"],"created_at":"2025-02-28T18:39:53.314Z","updated_at":"2026-05-15T03:32:23.742Z","avatar_url":"https://github.com/tawfikhammad.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Summify\r\n\r\nA FastAPI-based document summarization service that supports both **extractive** and **abstractive** summarization. It allows users to upload documents (PDF or text files) and receive summaries based on their preferred summarization approach.\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n1. [Project Structure](#project-structure)\r\n2. [API Routes](#api-routes)\r\n3. [How to Use](#how-to-use)\r\n4. [Installation](#installation)\r\n5. [Connect with Me](#connect-with-me)\r\n\r\n---\r\n\r\n## Project Structure\r\n\r\n```\r\nSummify/\r\n├── src/\r\n│   ├── assets/\r\n│   │   └── test_cases/\r\n│   ├── config/\r\n│   │   ├── __init__.py\r\n│   │   └── settings.py\r\n│   ├── controllers/\r\n│   │   ├── __init__.py\r\n│   │   ├── BaseController.py\r\n│   │   └── SummaryController.py\r\n│   ├── core/\r\n│   │   ├── __init__.py\r\n│   │   ├── file_parser.py\r\n│   │   └── summarizer.py\r\n│   ├── helpers/\r\n│   │   ├── enums/\r\n│   │   │   ├── __init__.py\r\n|   |   |   ├── extraction_enums.py\r\n|   |   |   ├── scan_enums.py\r\n|   |   |   ├── summary_enums.py\r\n|   |   |   └── validation_enums.py\r\n│   │   ├── file_validation.py\r\n│   │   ├── lang_detection.py\r\n│   │   ├── scan_checker.py\r\n│   │   └── text_processing.py\r\n│   └── routes/\r\n│       ├── __init__.py\r\n|       ├── base.py\r\n│       ├── summary.py\r\n│       └── schemas/\r\n│           ├── __init__.py\r\n│           └── upload_request.py\r\n│\r\n├── .env.example\r\n├── .gitignore\r\n├── main.py\r\n├── requirements.txt\r\n├── LICENSE\r\n└── README.md\r\n```\r\n\r\n---\r\n\r\n## API Routes\r\n\r\n### **Get `/welcome`**\r\n\r\nFor Welcome message\r\n\r\n### **POST `/data/summary/file`**\r\n\r\nSummarize a document (PDF or text file).\r\n\r\n#### Request:\r\n\r\n- **Method**: `POST`\r\n- **Content-Type**: `multipart/form-data`\r\n- **Body**:\r\n  - `file`: The document to summarize (PDF or text file).\r\n  - `summ_approach`: The summarization approach (`abstractive` or `extractive`).\r\n  - `max_length`: The maximum length of the summary (required for `abstractive`).\r\n  - `sentences_num` : The maximum sentence count of the summary (required for `extractive`).\r\n\r\n#### Example Request:\r\n\r\n```bash\r\ncurl -X POST \"http://localhost:8000/data/summary/file\" \\\r\n  -H \"Content-Type: multipart/form-data\" \\\r\n  -F \"file=@document.pdf\" \\\r\n  -F \"summ_approach=abstractive\" \\\r\n  -F \"max_length=500\"\r\n```\r\n\r\n#### Response:\r\n\r\n```json\r\n{\r\n  \"summary\": \"generated summary of the document...\"\r\n}\r\n```\r\n\r\n---\r\n\r\n## How to Use\r\n\r\n### 1. **Install Dependencies**\r\n\r\nMake sure you have Python 3.8\u003c 3.13\u003e installed. Then, install the required dependencies:\r\n\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n\r\n### 2. **Run the Application**\r\n\r\nStart the FastAPI server:\r\n\r\n```bash\r\ncd src\r\npython main.py\r\n```\r\n\r\nThe API will be available at `http://localhost:8000`.\r\n\r\n### 3. **Test the API**\r\n\r\nYou can use tools like **Postman** to test the API. Refer to the [API Routes](#api-routes) section for examples.\r\n\r\n---\r\n\r\n## Installation\r\n\r\n### Prerequisites\r\n\r\n- Python 3.8 - 3.12.8\r\n- Pip (Python package manager)\r\n\r\n### Steps\r\n\r\n1. Clone the repository:\r\n\r\n   ```bash\r\n   git clone https://github.com/tawfikhammad/Summify.git\r\n   cd Summify\r\n   ```\r\n\r\n2. Set up a virtual environment:\r\n\r\n   ```bash\r\n   conda create --name summify python=3.12.8\r\n   conda activate summify\r\n   ```\r\n\r\n3. Install dependencies:\r\n\r\n   ```bash\r\n   pip install -r requirements.txt\r\n   ```\r\n\r\n4. Run the application:\r\n   ```bash\r\n   cd src\r\n   python main.py\r\n   ```\r\n\r\n---\r\n\r\n## Connect with Me\r\n\r\nIf you have any questions, suggestions, or just want to connect, feel free to reach out to me on LinkedIn:\r\n\r\n👉 [Tawfik Hammad](https://www.linkedin.com/in/tawfikhammad)\r\n\r\nLet’s connect and collaborate!\r\n\r\n---\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftawfikhammad%2Fsummify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftawfikhammad%2Fsummify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftawfikhammad%2Fsummify/lists"}