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
| Layer | Technology |
|---|---|
| Language | Go 1.24 |
| HTTP | Echo v4 |
| Templates | Templ (server-side rendering) |
| Database | PostgreSQL 15 |
| Migrations | golang-migrate/v4 |
| Sessions | SCS v2 |
| Telegram Bot | Telego v1.3.1 |
| QR Codes | skip2/go-qrcode |
| Frontend | Bootstrap, 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.xmlfor 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