Beehive Logic

Veteran Help — Digital Support Portal

| Civic Tech · Go · PostgreSQL · Telegram Bot

Overview

On 17 April 2026, the Veteran Help platform was officially presented in Zaporizhzhia. The event was organized by the NGO “Zaporizhzhia. Platform of Joint Actions” together with the “Rubicon of Will” charitable foundation, with participation from local government, civil organizations, businesses, and the veteran community.

The platform was developed by Beehive Logic on behalf of the NGO “Platform of Joint Actions”.

“Only together, only in conglomeration can we do more” — Olena Shvets, Director of the Department for Veterans Policy


The Problem

Veterans, military personnel, and their families face fragmented access to available support: some services are offered by government bodies, others by NGOs, others by businesses. Finding and aggregating these resources requires significant time and effort — exactly the kind of friction that a system serving war-affected people cannot afford.


The Solution

Veteran Help is a single entry point where anyone can quickly find up-to-date support information, structured by recipient category — without unnecessary searching or technical expertise.

The platform covers:

  • Support providers — organizations and institutions supporting veterans and their families
  • Service categories — a systematized directory organized by need type
  • Vacancies — employment opportunities for veterans
  • Business benefits — companies offering discounts and privileges to combat participants
  • Events — events, training sessions, and community meetups

Technical Stack

LayerTechnology
LanguageGo 1.24
HTTPEcho v4
TemplatesTempl (server-side rendering)
DatabasePostgreSQL 15
Migrationsgolang-migrate/v4
SessionsSCS v2
Telegram BotTelego v1.3.1
QR Codesskip2/go-qrcode
FrontendBootstrap, FontAwesome, jQuery, Chart.js

Architecture

Clean layered separation of concerns:

Echo Router → Handler → Service → Postgres → PostgreSQL
cmd/web/main.go          # Entry point, initialization, HTTP + Telegram launch
internal/pkg/app/        # App struct, route registration, middleware
internal/handler/        # HTTP handlers (one file per domain)
internal/service/        # Business logic, interfaces between handler and DB
internal/postgres/       # SQL queries to PostgreSQL
internal/telegram/       # Telegram bot: handlers and message builders
models/                  # Shared data structures
view/                    # Templ templates (pages, layout, components)
schema/                  # SQL migrations (numbered up/down pairs)

Key Features

Public Website

  • Catalogue with three-level navigation: recipient category → service type → providers
  • Detailed provider card with contacts, address, and context-sensitive description adapted per recipient category
  • Browsing vacancies, events, and business benefits with category filtering
  • Automatically generated sitemap.xml for SEO

Admin Panel

  • Full CRUD for all content types: providers, events, vacancies, businesses, categories, QR codes
  • Flexible role model: super-user + granular per-section editing rights
  • Action tracking: every record stores who created, modified, or deleted it (soft delete + audit trail)
  • Statistics dashboard: page view analytics by path, QR code analytics
  • Configurable admin URL prefix (ADMIN_PREFIX) for address obfuscation

Telegram Bot

  • Multi-level navigation via inline buttons
  • Stateful callback system (parsing callback data like help_category:10:cat:5)
  • Automatic deletion of user messages to keep chats clean
  • Parallel launch in a goroutine, independent of the HTTP server
  • Long polling — reliable operation without webhooks

QR Codes

  • On-the-fly PNG generation (256×256, medium error correction)
  • Unique slug-based short links
  • Timestamped click tracking for analytics

Security

  • Password hashing with format metadata
  • CSRF tokens for all forms
  • Failed login attempt counter
  • Secure sessions (SCS v2 + Echo)

Notable Technical Details

Contextual provider descriptions. One provider can present different service descriptions depending on the recipient category. For example, a medical centre describes psychological support differently for “military personnel” vs “families of the fallen.” Implemented via a service_provider_help_details table with a unique constraint on the triplet (provider_id, beneficiary_category_id, help_category_id) among active records.

Soft delete with full audit trail. All entities have deleted_at + deleted_by_user_id. Data is never physically removed — a complete change history is preserved.

Middleware analytics. Page view tracking is implemented at the Echo middleware level: it intercepts all GET requests, filters out static assets and admin routes, and records the path and timestamp without burdening the handlers.


Results

The platform launched in Zaporizhzhia and gives veterans, military personnel, and their families a single structured access point to support resources — with minimal effort on their part, and an easy-to-use admin interface for self-service content updates requiring no technical knowledge.

  • ~13 handler files, ~200 lines each → 58 admin endpoints + 15+ public routes
  • 14 PostgreSQL migrations with sequential numbering and up/down pairs
  • Full Templ template coverage for all pages
Beehive Logic

High-performance software engineering for market leaders. Working across Ukraine, serving clients worldwide.

Services

Company

© 2026 Beehive Logic