Architecture
User Code is where you define application specific code that uses the primitives exposed by Feluda. The role of different modules is as follows
- Endpoint : All exposed features of the search server are to be defined here. This is where you define the API routes and their handlers. Learn more
- app.py : This is where you initialize Feluda and the endpoints and link them. Learn more
- config.yml : This is the configuration file that sets up Feluda with the appropriate parameters. Learn More
Feluda Code is where the framework related code is defined. The role of different modules is as follows:
- Server : A standard flask server that is used to expose a REST API for the search engine.
- Config : Module that loads configuration from a provided .yml file and makes it accessible as a python dataclass for Feluda.
- Operators : These are modules that operate on media items that your search engine works with - text, image, video, audio etc. These act as plugin code that are only loaded if specified in the config.yml file.
- Store : Storage related modules.
- Queue : Since some index operations can take a lot of time, they aren't well suited for the request-response formate of HTTP calls. In which case Feluda allows you to enqueue requests that get processed at a later time.