This repository encompasses all the backend Rust modules for the Bustl application suite, including:
The architecture integrates various components that handle different aspects of the backend system:
- Frontend: The user interface that interacts with the backend to submit and retrieve data.
- Backend: The server-side logic that processes requests, manages data, and communicates with the database.
- Scrapers: External processes that collect data from various sources and feed it into the system.
- Data Category Tagging: A process where incoming data is classified into categories before being stored.
- Database Client: A Rust module that provides an interface for interacting with the PostgreSQL database using Diesel ORM.
- Diesel ORM: The Object-Relational Mapper that facilitates database transactions in a Rust-friendly manner.
- Qdrant Client: The Rust client that communicates with the Qdrant Vector Similarity Database.
- Qdrant Vector Similarity DB: Stores one-hot encoded vectors representing users' event categories as well as an aggregated preferences vector which is a sum of their liked and disliked activities categories.
The system is designed to ensure efficient data processing and retrieval, leveraging vector similarity for recommendations and categorization to enhance user experience.
For a more detailed overview, please refer to the individual module READMEs linked above.
Refer to the respective repository README for instructions on running each module, such as the HTTP server, which requires Rust, a PostgreSQL database instance, and the appropriate .env
configuration.
You can build and run this application using Docker.
- Docker: Use the link to install Docker on your machine.
- Build a Docker image of the application:
docker build -t bustl-backend .
The command uses your SSH private key to clone private repositories or to access private resources during the Docker image build.
Important: The architecture diagram is for reference and may not be the latest version. Please refer to the linked repositories for the most up-to-date information.