network-user
back to all projects
Bot 6 May 2026 in production

.work

DotWorkBot

A shift with zero web pages: the whole marketplace fits in a chat, while a background process carries the production load.

the essence

A one-off shift marketplace that lives entirely in Telegram: an employer posts a shift, a worker takes it, and a dedicated taskiq worker keeps the marketplace's 'physics' running on its own, nudging arrivals, releasing no-shows, and closing expired orders as the single leader via a Redis lock.

Under the hood

A live kanban board for a gig-shift marketplace, not a list of fields. Try it below and see how it works inside.

This is the live board of a gig-shift marketplace, and you play the employer. Workers claim shifts on their own: some never show up, some leave mid-shift, and most work through and submit the job for your review: accept it or reject it. Wind the clock to watch the whole day, or post a shift of your own.

City clock 9:00
Open 0
    no open shifts
    In progress 0
      nobody working
      In review 0
        nothing to review
        Done 0
          nothing closed yet
          City workers
          • @ramil 1.2 км · ★4.9 free
          • @dilara 2.0 км · ★4.7 free
          • @artur 3.4 км · ★4.8 free
          • @lena 0.8 км · ★5.0 free
          • @timur 5.1 км · ★4.6 free
          • @sofia 2.7 км · ★4.9 free
          Worker log
          _operational_control_loop sleeps · awaiting a tick

          3 roles: worker · employer · admin PostgreSQL · Redis (FSM/throttle/lock) · MinIO/S3 photos · AES backups · VPS deploy with rollback

          scale

          size and timeframe: what stands behind the product.

          11k lines of code
          3 roles: worker · employer · admin
          12 database migrations
          VPS auto-deploy with health rollback

          architecture

          storage Bot API lock notify Telegram aiogram bot taskiq worker operational ctrl Redis · FSM PostgreSQL 16 MinIO · S3

          Bot API: user updates in, outgoing messages out

          • aiogram bot Bot API

          Separate process: periodic shift and backup loops

          • operational ctrl
          • Redis · FSM lock

          Polling dispatcher: role routers, session and ban middleware

          • PostgreSQL 16
          • Redis · FSM
          • MinIO · S3

          Shift physics: reminders, release no-shows, auto-close

          • PostgreSQL 16
          • Telegram notify

          FSM storage, worker leader lock, backup markers

          Orders, assignments, users, ratings, broadcasts

          Order photos in S3-compatible storage, public URLs

          Tap a module to see its role in the system.

          stack

          stack by layer · 15
          • Language 1
          • Framework 4
          • Data 3
          • Infrastructure 4
          • Client 3

          Language

          • Python 3.12

          Framework

          • aiogram 3.27
          • SQLAlchemy 2
          • pydantic-settings
          • structlog

          Data

          • PostgreSQL 16
          • Redis
          • MinIO / S3

          Infrastructure

          • Docker Compose
          • Alembic
          • taskiq
          • pyzipper AES backups

          Client

          • Telegram Bot API
          • reply keyboards
          • inline keyboards

          what it does

          the product's key capabilities right now.

          Roles and flows

          Worker, employer, and admin get separate menus and access filters; worker sign-up is a step-by-step FSM with phone, city, and geolocation.

          Orders and shifts

          Order creation, multi-slot assignments, an open → in_progress → completed/cancelled lifecycle, and notifications to all participants.

          Operational control

          The taskiq worker sends arrival reminders, releases unconfirmed workers, and closes expired orders by itself.

          Broadcasts and safety

          New-order broadcasts targeted by city with dedup, admin broadcasts, plus rate-limiting and ban checks in middleware.

          Backups and deploy

          AES-encrypted backups (pg_dump + a mirror of the MinIO bucket), restore scripts, and VPS auto-deploy with health-check rollback.

          Ratings and storage

          Worker ratings in a dedicated model and order photos in S3-compatible storage: large binaries kept out of the relational DB.

          timeline

          how the product grew from its first version.

          1. 6 May 2026

            Start and MVP

            Worker/employer/admin roles, multi-slot orders, taskiq worker, MinIO, ratings, and broadcasts: the full core on day one.

          2. 7-8 May 2026

            Production, backups, and monitoring

            A VPS deploy pipeline with health rollback, AES-encrypted backups of pg_dump and the MinIO mirror, then Portainer for container monitoring and an order-creation validation fix.

          3. 1 Jul 2026

            Hardening and audit before release

            DotCore-standard docs, then pre-release hardening: role-based access filters, a non-root container, pinned dependency versions, log secret redaction, card numbers cut to the last four digits, and presigned MinIO links instead of public photo access. Git history was scrubbed, and the audit passes clean with a green badge.