Skip to content

Panini Docs

๐Ÿ‘‹

Hey there!

Welcome to Panini's explanatory documentation! Here you can become familiar with the concept, learn how to setup a working environment, and take your first steps towards building with it.

Panini is a python microframework based on the nats.py library. Its goal is to offer developers an easy way to create NATS microservices with a lower barrier of entry. It provides a specific template for creating microservices, similarly to FastAPI, Aiohttp, or Flask. Like all of the above frameworks, Panini has its design limits and edge cases. In the event that you become restricted by Panini's capabilities, we recommend switching to nats.py.

Panini was inspired by Faust project.

What are microservices?

Microservices are a type of software architecture that breaks up the features of an application into smaller, task-specific functions to make the app more resilient and scalable. More info about it here: https://microservices.io

What can Panini do for me?

Panini allows you to create microservices that use NATS to communicate with each other and extend the microservice by adding an HTTP server (aiohttp) to it if necessary.

Compatibility with libraries

Panini works well with various libraries used with FastAPI, Aiohttp, or Flask.

Can I scale it?

Yes, you can scale out your microservices horizontally. There are 2 strategies for distributing traffic between microservices:

  • Parallel processing: Each microservice processes all messages
  • Balancing: Messages are placed in a common queue and distributed among a group of microservices

Monitoring

Panini has a Grafana dashboard for performance monitoring; the code is here. Also, we are planning to add the ability to use Opentracing soon.

Do you support JetStream?

Not at the moment.

How to start?

We recommend getting familiar with Panini in the following order:

  • Understand what NATS is about
  • Install NATS and Panini
  • Complete Quickstart
  • Understand Panini interface and datatypes
  • Explore validation and middlewares
  • Try to create a Panini microservice with an HTTP server
  • Test and debug
  • Deploy to server
  • Write your own issue and PR to make Panini better ๐Ÿ™‚

Improved text:

Panini Docks

๐Ÿ‘‹

Welcome to Panini's explanatory documentation!

Here, you can become familiar with Panini's concept and learn how to set up a working environment, as well as take your first steps towards building with this Python microframework. Panini is based on the nats.py library and is designed to provide developers an easier way to create NATS microservices, similarly to FastAPI, Aiohttp, or Flask. However, there may be cases where you are limited by Panini's capabilities, so we suggest switching to nats.py in such cases. Panini was inspired by the Faust project.

What are microservices?

Microservices are a type of software architecture, which divides an application into smaller, task-specific functions to make the app more resilient and scalable. You can read more about it here.

What can Panini do for me?

Panini simplifies the process of creating NATS microservices, as well as adding an HTTP server (aiohttp) to it if necessary.

Can I scale it?

Yes, you can scale out your microservices horizontally. There are two strategies for distributing traffic between microservices:

  • Parallel processing: Each microservice processes all messages
  • Balancing: Messages are placed in a common queue and distributed among a group of microservices

Monitoring

Panini provides a Grafana dashboard for performance monitoring. You can find the code here. Additionally, we are planning to add the ability to use Opentracing soon.

Do you support JetStream?

Yes.

How to start?

We suggest getting familiar with Panini in the following order:

  1. Understand what NATS is about
  2. Install NATS and Panini
  3. Complete the Quickstart
  4. Learn about Panini's interface and datatypes
  5. Explore validation and middlewares
  6. Try creating a Panini microservice with an HTTP server
  7. Test and debug
  8. Deploy to a server
  9. Submit an issue or PR to make Panini better ๐Ÿ™‚

If you have any questions, please don't hesitate to ask. Happy coding!