Typer CLI for Generating Dockerized FastAPI Microservices from JSON Schemas

Job ID: 38725314

Budget: €10 – €20 EUR

## Project Description

We are looking for an experienced Python developer with strong proficiency in **Typer**, **FastAPI**, and **microservices architectures** to create a command-line tool. This tool will generate Dockerized **FastAPI** services based on **API definitions in JSON schemas**, using **Mako templates** to translate these schemas into **Pydantic models** that adhere to REST principles.

**Important:** To fully understand the project requirements, please watch [this video on microservices architecture](https://www.youtube.com/watch?v=j6ow-UemzBc), particularly the section discussing **flow architecture**, **API definitions**, and **resource-oriented design**. The generated FastAPI microservices must follow the REST architectural style as outlined in the video.

### Project Requirements:
- **Develop a Typer CLI app**: You will build a Typer-based command-line tool that takes API definitions from JSON schema files and generates a FastAPI service adhering to REST principles.
- **API as a single source of truth**: Ensure the JSON schema serves as the single source of truth for the generated service, maintaining consistency across APIs.
- **Automated FastAPI generation**: Use **Mako templates** to dynamically generate FastAPI services, creating Pydantic models from the provided JSON schema definitions.
- **Microservices compatibility**: The generated FastAPI service must be designed to fit into a microservices architecture, following the resource-oriented approach discussed in the video.
- **Dockerization**: Ensure the generated FastAPI service is containerized using Docker for easy deployment and scalability.

### Key Skills:
- **Strong proficiency in Typer and FastAPI**: Experience in building command-line tools and optimizing APIs for performance.
- **Experience with microservices architectures**: Familiarity with the design patterns required for service-oriented architectures.
- **JSON schema and Pydantic models**: Ability to interpret JSON schemas and generate Pydantic models dynamically.
- **Templating with Mako**: Knowledge of using Mako templates to generate code.
- **Docker**: Ensure the generated FastAPI service is containerized to integrate seamlessly into a microservices environment.

### Deadline:
- **3 days** from the start of the project. This is a focused task, offering you the chance to demonstrate your ability to apply microservices principles to FastAPI development.

### Additional Notes:
- Watching the **microservices architecture video** is critical to understanding the project requirements, particularly the flow architecture and resource-oriented API definitions.
- The resulting FastAPI services must follow RESTful design, as discussed in the video.
- Feel free to use **ChatGPT** as much as possible throughout the project for assistance with technical questions, code generation, or guidance on architecture and design principles.

This task is the first step toward potentially joining our team. Once completed, there will be opportunities to collaborate on larger projects involving our frontend and backend teams in a dynamic microservices-based web application environment.

## Project Type: One-time project with potential for long-term collaboration.