Your Tinder-like AI-powered food bot π€€
Eat or Pass is a Telegram Bot application designed to fulfill your culinary curiosity. It will recommend some dishes from all around the world that may be of your liking, using AI to predict your tastes. Let it know you better!
- /suggestion: The bot will reply with a dish trying to meet your tastes.
- /likes: It will show a list of the latest dishes you liked.
I have developed this bot while learning NestJS so it's very basic. There are some more features that could be implemented in the bot, as the following:
- User settings: Custom diet (vegetarian, vegan, gluten-free...)
- User settings: Language selection to translate the content of the messages to the users language
- Possibility to view a recipe for liked dishes
You are welcome if you want to expand the bot features! I will be very pleased if you want to join the development; PRs are welcome.
To setup the dev environment follow this steps:
$ git clone [email protected]:Javiink/eat-or-pass.git
You will need API keys for the third-party services that the bot will use, so copy the .env.example file and rename it to .env.development.local or .env and fill the secrets
- Telegram Bot API: Talk to @BotFather in Telegram and create a bot. It will return an API key, paste it in the
TG_BOT_APIenvironment variable. - GROQ Cloud: To put it in a nutshell, this is the AI service that will generate the dishes. At this moment, their API is free to use. Go to GROQ Cloud, create an account and generate a key. Paste that key in the
GROQ_API_KEYenvironment variable. - Gooogle Custom Search Engine: The bot will use this API to search for images for the dishes. We need 2 secrets here:
- Custom Search JSON API: Go to Google Custom Search Docs and follow the steps, the paste the API key in the
GOOGLE_CUSTOMSEARCH_API_KEYenvironment variable. - Custom Programmable Search Engine CX: Go to Google Programmable Search engine Control panel and add a new Custom Search. In the "What to search?" section, select "Search the entire web". In the "Search settings" section, make sure to toggle on those two switches. Create the search engine and put the Search engine ID in the
GOOGLE_CUSTOMSEARCH_CXenvironment variable.
- Custom Search JSON API: Go to Google Custom Search Docs and follow the steps, the paste the API key in the
- MongoDB URL: You will need a working MongoDB database to store the users preferences. You can install it in your computer/server, use a docker image or the free plan of MongoDB Atlas. If you use this project's
docker-composefile, please see details in the Docker section below. Put the MongoDB URL in theDB_MONGO_URLenvironment variable, should be in themongodb://USER:PASSWORD@HOST:PORT/DATABASEformat.
$ npm run start:dev
If you want to run the project using Docker, there is a docker-compose.yml file for you to run. But first you need to setup some environment variables.
- You may want to change the MongoDB port that is exposed by Docker. You can change it in the
eat-or-pass-mongodbports section. The number before the colon (:) is the one you may change to your liking. Or you can remove the ports section entirely if you don't want to connect to the database externally. - You must fill the environment variables marked in the
.env.examplefile. This variables must go in a.envfile in the root of the project. TheMONGO_INITDB_ROOT_USERNAMEandMONGO_INITDB_ROOT_PASSWORDare the credentials you want to use in theDB_MONGO_URLvariable. You can use this URL, just replaceUSERandPASSWORDwith the ones you types in theMONGO_INITDB_ROOT_fields:mongodb://USER:PASSWORD@eat-or-pass-mongodb/eat-or-pass
$ docker compose up

