Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sbathgate/article-summarizer

Asynchronous RESTful API built with Python and FastAPI. Utilizes Newspaper3k to provide real-time text summarization from a given URL.
https://github.com/sbathgate/article-summarizer

black docker fastapi flake8 github-actions heroku isort makefile pytest python restful-api test-driven-development

Last synced: about 1 month ago
JSON representation

Asynchronous RESTful API built with Python and FastAPI. Utilizes Newspaper3k to provide real-time text summarization from a given URL.

Awesome Lists containing this project

README

        

# Article Summarizer
> Article Summarizer is an asynchronous RESTful API built with Python and FastAPI. It utilizes Newspaper3k to provide real-time text summarization from a given URL.

![CI/CD](https://github.com/sbathgate/fastapi-tdd-docker/workflows/CI%20CD/badge.svg?branch=master)

## Development setup

First, install the system dependencies:
* [docker](https://docs.docker.com/)
* [docker-compose](https://docs.docker.com/compose/)
* [git](https://git-scm.com/)
* [make](https://www.gnu.org/software/make/)

Second, download the source code
```sh
git clone https://github.com/sbathgate/fastapi-tdd-docker.git
cd fastapi-tdd-docker/
```

Third, build the project image.
```sh
make build
```

## Technologies
* Python 3.8
* FastAPI
* PostgreSQL
* Heroku
* Gunicorn
* Tortoise-ORM
* Newspaper3k
* Pytest
* Black
* Flake8
* iSort

## File Structure
### Within the download you'll find the following directories and files:
```
├── .github
│ └── workflows
│ └── main.yml
├── .gitignore
├── README.md
├── docker-compose.yml
├── makefile
├── project
│ ├── .coverage
│ ├── .coveragerc
│ ├── .dockerignore
│ ├── Dockerfile
│ ├── Dockerfile.prod
│ ├── app
│ │ ├── __init__.py
│ │ ├── api
│ │ │ ├── __init__.py
│ │ │ ├── crud.py
│ │ │ ├── ping.py
│ │ │ └── summaries.py
│ │ ├── config.py
│ │ ├── db.py
│ │ ├── main.py
│ │ ├── models
│ │ │ ├── __init__.py
│ │ │ ├── pydantic.py
│ │ │ └── tortoise.py
│ │ └── summarizer.py
│ ├── db
│ │ ├── Dockerfile
│ │ └── create.sql
│ ├── entrypoint.sh
│ ├── htmlcov
│ ├── requirements-dev.txt
│ ├── requirements.txt
│ ├── setup.cfg
│ └── tests
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_ping.py
│ ├── test_summaries.py
│ └── test_summaries_unit.py
└── release.sh
```

## Release History

* 0.1.0
* Initial release

## Acknowledgements
This project wouldn't have been possible without the excellent [Test-Driven Development with FastAPI and Docker course](https://testdriven.io/courses/tdd-fastapi/) developed by [Michael Herman](https://mherman.org/) on [testdriven.io](https://testdriven.io). You can also find a free tutorial on their blog [Developing and Testing an Asynchronous API with FastAPI and Pytest](https://testdriven.io/blog/fastapi-crud/).

## Contributing

1. Fork it ()
2. Create your feature branch (`git checkout -b feature/fooBar`)
3. Commit your changes (`git commit -am 'Add some fooBar'`)
4. Push to the branch (`git push origin feature/fooBar`)
5. Create a new Pull Request