ConvoMark is a web application and Telegram bot that makes it easy to bookmark a specific message and retrieve it later.
Messages can be grouped together in named collections to keep them nice and organized. It features a web interface to manage your bookmarks and collections, secure login via Telegram OAuth, a GraphQL API and a Telegram bot, @convomarkbot!
The backend is a NodeJS application, using LoopBack 4 as the primary framework for everything, from database access to configuration.
The frontend application is built with VueJS and leverages some packages from the Vue ecosystem, such as:
- Vuex for application-wide state management
- Vue Router for local page navigation (using HTML5 History API)
- Vue Apollo for sending GraphQL requests to the backend
- Vue i18n for text localization
- Buefy for Bulma-styled Vue components
Styles are provided by Bulma, a powerful and easy to use CSS component framework.
The Telegram bot is implemented using the wonderful Telegraf library, and packaged into a nice, self-contained LoopBack component. The component handles configuring and registering all the various parts of the bot (the main bot instance, fetching the token, installing the various commands etc) and wiring them with the rest of the application.
The bot is configured to run using the long polling strategy in development, and webhooks in production. By default the endpoint for webhooks is
Setup with Docker
If you have Docker installed you can use Docker Compose to run Postgres and Redis without the need to have them installed. Simply run
docker-compose up -d to have them started and listening in the background on their native ports (5432 for Postgres, 6379 for Redis).