2025-12-07 15:28:19 +03:00
2025-12-07 16:01:20 +03:00
2025-12-16 22:36:11 +03:00
2025-04-07 00:35:38 +03:00
2025-06-09 00:10:49 +03:00
2025-10-12 18:10:56 +03:00
2025-04-07 00:35:38 +03:00
2025-04-07 00:35:38 +03:00
2025-09-08 08:41:24 +03:00
2025-10-12 18:10:18 +03:00
2025-12-07 15:28:19 +03:00

Memevizor 📺

A Telegram bot for meme management with cloud storage integration and a web interface for display.

Core Functionality (User Stories)

Suggesting a Meme (User)

  • User scans QR code.
  • User sends media (video/picture) to the bot.
  • Bot forwards the media to the Approver Group.

Approving a Meme (Approver)

  • Approver replies to media in the Approver Group with an approval command (e.g., !SOXOK, this).
  • Processing: If video, bot re-encodes to WebM (AV1 + Opus).
  • Bot uploads the final media to S3.
  • Client Update: Frontend detects S3 resource change and downloads the latest media.

Direct Meme Submission (Approver)

  • Approver sends media directly to the Approver Group or the bot.

Architecture

The system consists of:

  • Telegram Bot: Processes commands and media
  • Storage Layer: S3-compatible storage for memes
  • Web Interface: Simple HTML page for viewing memes
  • Spring Boot: Kotlin-based backend with dependency injection

structurizr-1-ContainerDiagram.svg

Setup

The application is configured via Spring Boot properties.

Deployment

Docker

  1. Run the container with environment variables:
    docker run -d \
      -e BOT_TOKEN='your_bot_token' \
      -e BOT_FORWARD_CHAT_ID='your_forward_chat_id' \
      -e BOT_APPROVER_USER_IDS='id1,id2,id3' \
      -e S3_ENDPOINT='https.s3.example.com' \
      -e S3_REGION='us-east-1' \
      -e S3_BUCKET='your_bucket_name' \
      -e S3_ACCESS_KEY_ID='your_key' \
      -e S3_SECRET_ACCESS_KEY='your_secret' \
      ghcr.io/pischule/memevizor:latest
    

License

GNU GPLv3

Description
No description provided
Readme GPL-3.0 207 KiB
Languages
Kotlin 74.9%
HTML 23.2%
Dockerfile 1.9%