Line 13: |
Line 13: |
| ** Data should be easy to reuse by developers. | | ** Data should be easy to reuse by developers. |
| *** A dynamic API documentation should be really helpful. | | *** A dynamic API documentation should be really helpful. |
| + | ** All the data need to be versioned, for transparency and history concerns. |
| | | |
| == Technical choices == | | == Technical choices == |
Line 22: |
Line 23: |
| ** Python is widely adopted (one of the main languages taught at school). | | ** Python is widely adopted (one of the main languages taught at school). |
| ** It scales well. | | ** It scales well. |
− | ** Part of team knows Python. | + | ** Part of the team knows Python. |
− | * Building an API from scratch would have been too long so choose the FastAPI framework which integrates interesting benefits: | + | * Building an API from scratch would have been too long, so choose the FastAPI framework which integrates interesting benefits: |
− | ** Building an API with FastAPI is very easy: it's possible to build a simple API with its generated dynamic documentation in a few hours. | + | ** [https://www.tutlinks.com/fastapi-with-postgresql-crud-async/ Building an API with FastAPI is very easy]: it's possible to build a simple API with its generated dynamic documentation in a few hours. |
− | ** Said to be fast: https://www.techempower.com/ benchmarks are showing it is ~3 times faster than very porpular Python framework such as Django or Flask. | + | ** Said to be fast: https://www.techempower.com/ benchmarks are showing it is ~3 times faster than very popular Python framework such as Django or Flask. |
| ** FastAPI can be run with or without a web server. | | ** FastAPI can be run with or without a web server. |
| | | |
| ==== Database ==== | | ==== Database ==== |
− | Folksonomy Engine has a very different goals and requirements than Open Food Facts backend (Perl + MongoDB): | + | Folksonomy Engine has very different goals and requirements than Open Food Facts backend (Perl + MongoDB): |
| | | |
| * The data model should be very simple. | | * The data model should be very simple. |