ExistLive
Back-end developer
ExistLiveUkraine1 day ago
Full-timeRemote FriendlyEngineering, Information Technology
🧩 Backend Developer — Middle / Middle-


Format: remote, full‑time 

Timezone: EEST (Kyiv) with at least 4-hour overlap

Start: after a short interview

ExistLive — a platform for organizing events and selling tickets (including fundraising). We focus on delivery, not slides.
Current Tech Stack
  • Language: Go 1.25+
  • HTTP: Chi router (+ custom middleware layer)
  • Architecture: Clean Architecture, domain + infra modules, principles SOLID / KISS / DRY / YAGNI
  • Database: PostgreSQL + PostGIS (geo data), SQL migrations, transactions / row‑level locks
  • ORM: GORM (raw SQL where performance is critical)
  • Search: publishing to Elasticsearch through an external proxy service
  • API: Swagger / OpenAPI (description, versioning, backward compatibility)
  • Payments: Stripe (Checkout / Connect / SetupIntents, webhooks, idempotency)
  • Authentication: Firebase Auth (+ custom tokens)
  • gRPC: partially (selected services, gradual consolidation planned)
  • Containerization: Docker
  • CI/CD: GitHub Actions (lint / tests / build / deploy)
  • Infrastructure: GCP (Cloud Run, partially App Engine, Cloud Storage)
  • Observability: Datadog (metrics / logs / traces)
  • DI / generation: Wire (compile‑time DI), go generate
  • Quality: golangci‑lint, unit + integration tests (testify)
  • Other: idempotent webhooks, backoff strategies, graceful shutdown
What you will be doing
  • Build clean and fast Go services on Cloud Run (stateless, timeouts, concurrency, graceful shutdown).
  • Develop and refine Stripe payment flows: Checkout/Connect, webhooks, idempotency, retries, duplicate protection.
  • Implement ticketing logic without overselling: reservations, transactions, row‑level locks, deadlines, compensations on failure.
  • Design and evolve REST APIs (OpenAPI‑first), validations, pagination, filters; ensure backward compatibility and error contracts.
  • Work with PostgreSQL: schemas, migrations, indexes, EXPLAIN/ANALYZE; write queries that “fly”.
  • Integrate publishing to Elastic proxy: events/tickets, index rebuilds, backoff, deduplication.
  • Add observability: metrics/logs/traces (Datadog), alerts on key SLA/SLO, event correlation.
  • Write unit/integration tests for critical logic (no “100% for the sake of 100%” — test what matters).
  • Participate in meaningful code reviews, propose improvements without “religious wars”.
Who we’re looking for
  • 2+ years of production Go experience (context, goroutines, sync, http, pgx/driver; profiling is a plus).
  • Strong SQL/PostgreSQL: transactions, indexes, EXPLAIN, deadlocks, row‑level locking.
  • Understanding of Stripe / webhooks / idempotency â€” or willingness to learn fast.
  • Basic GCP/Docker experience: build an image, deploy to Cloud Run, configure environment variables/secrets.
  • API design skills and commitment to simplicity (KISSClean Architecture).
  • Self‑driven, stress‑resistant and ready to take chunks of work, not micro‑tasks.
Nice to have
  • Firebase Auth, external login providers.
  • Datadog APM (tracing, log correlation).
  • ElasticSearch: client integration, indexing pipelines.
  • OpenAPI‑first, client/server generation; compile‑time DI (Wire/alternatives).
  • English: Intermediate+ for documentation and collaboration.
How we work (practices)
  • GitHub Flow, small PRs, meaningful commits.
  • Linters via golangci‑lint, formatting with gofmt/goimports.
  • Mandatory idempotent handlers for external events/webhooks, retries with backoff.
  • Non‑functional priorities: reliability > performance, but with perf budgets for hot paths (measured).
  • No “Algo‑Olympiads” or endless meetings — we value delivery and accuracy.
What we offer
  • A product where your code’s impact is visible (not just meeting reports).
  • Minimal bureaucracy, maximum common sense.
  • Influence on architecture and technical debt: we fix what slows us down.
  • Fair code reviews and respect for your time (no endless calls).
  • Paid 2‑week trial, then a clear “yes/no” decision from both sides.
  • 10 paid vacation days per year, available after 1 year of work. Days can be taken individually or in blocks.
Hiring process (fast)

Bi‑intro 30–45 min â€” who we are / who you are, mutual expectations.

Preference

We give preference to Ukrainian citizens for this role.

How to apply

Send your CV/LinkedIn and a few words about availability. If you have repositories or code samples â€” share them.

Key Skills

Ranked by relevance