Back to archive
I. Personal Ventures & Frameworkshowcasesolo

Astervis — Cloud Telephony Platform

The user's flagship startup: a SaaS platform for cloud telephony / contact center (Asterisk-based, astervis.io) — a multi-project monorepo: product + marketing site + Go installer + AI layer + marketing automation.

Status
active
Period
2025-10-24 → 2026-05-26
AI sessions
21
Stack
Languages
TypeScriptGoSQLJavaScript
Frameworks · Infra
Next.js 16React 19Elysia.jsBunTurborepoDrizzle ORMBetter AuthCobra (Go)RemotionCloudflare WorkersVercel AI SDK
§01

Overview

  • What it is: Astervis — a startup (build-in-public, with pitch decks) in the telephony / contact-center domain. The self-hosted product deploys to client servers (PBX/Asterisk) via a custom Go installer; there's a SaaS dashboard, licensing, AI features (AI Gateway, embeddings), and a full marketing engine (landing, blog, video, B2B outreach, analytics). This is "all of our own": product, delivery infra, GTM tooling.
  • Type / status / role: web-app (SaaS + self-hosted) · active (latest commit 2026-05-26) · solo (248 of 286 commits are the user; 42 are Ilhombek2110).
  • Activity window: 2025-10-24 → 2026-05-26, ~7 months of dense development, alive. NOTE: the main product code (astervis/) and the site (astervis_sale_new/) live in git submodules (separate repos), so 286 meta-repo commits SIGNIFICANTLY understate the real volume — what's visible here is mostly the Go installer, design docs, submodule bumps, and pitch.
§02

Stack

  • Languages: TypeScript (primary for apps), Go (installer), SQL (Drizzle/Postgres), JS.
  • Frameworks/libraries:
  • Frontend: Next.js 16 (App Router), React 19, Tailwind CSS 4, shadcn/ui, next-intl (ru/en/uz).
  • Backend: Elysia.js on Bun, PostgreSQL + Drizzle ORM, Redis; the API compiles to a single binary via bun build --compile.
  • Auth: Better Auth + RBAC (Google/GitHub OAuth).
  • AI: Vercel AI SDK (@ai-sdk/google|anthropic|openai), a separate ai-gateway app (Elysia, port 4000), ai-worker, packages ai-core (Zod schemas/prompts/providers) and ai-evals.
  • Go installer: Cobra CLI, charmbracelet/huh (TUI forms), pterm, lego/v4 (ACME/Let's Encrypt), go-redis, lib/pq, go-toml.
  • Video: Remotion (programmatic generation of promos/IG carousels).
  • Edge: Cloudflare Workers (CDN distribution of installer binaries via R2, wrangler).
  • Infra/deploy: Turborepo + Bun v1.3.2 monorepo; Docker Compose (core product); GitHub Actions (installer-release.yml on installer-v* tags → cross-platform binary build → R2 + GitHub Release); one-liner install via curl … | bash; DNSimple for subdomain provisioning. Pitch deck as a generated PDF (port 3005).
  • Data: PostgreSQL, Redis, TimescaleDB (the installer has timescaledb_data), CDC connector (change data capture).
  • Notable tooling: heavy AI tooling in the repo — .claude/, .codex/, .agents/, .mcp.json, skills-lock.json, AGENTS.md; marketing CLI for GA4, GSC, Polar (payments), LinkedIn, Twitter/X, Instagram, Blog, B2B outreach.
§03

What was shipped

Conclusions from code/diffs (not commit text). In the meta-repo, the user's authored code is mainly the Go installer + design docs + release plumbing:

  • Go installer (the core authored code here): ~25 releases (v0.0.57 → v0.0.74) over April–May 2026. internal/ modules: docker (compose, health, diskspace, iptables-recovery, compose migration), ssl (Let's Encrypt + remote), license (token, fingerprint, verify, state), cdc/connector, sangoma/firewall_watchdog, wizard (TUI), agent + api (REST agent on port 9876, certificate_renewal, update_manager, license_checker).
  • Design docs/plans: WhatsApp channel for Open Lines — design spec (8731f32, +753) + implementation plan (536618f, +4049); AI pricing redesign plan (75bf32a, +209); HA migration runbook.
  • Release infra: CI workflow_dispatch escape hatch (e023868), Cloudflare Worker for binary distribution.
  • Big tooling drop: ae140f4 (177 files, +31084) — submodule + docs + tooling.
  • Product submodule bumps: dozens of Update astervis submodule to v1.0.19x…208 — the product is actively evolving in a separate repo (WhatsApp channel, ai-gateway embedding tracking, etc.).
  • Volume: 286 meta-repo commits (248 by the user) over 7 months + invisible volume in the submodules (the product reached v1.0.208 — ~200+ releases).
§04

Technical challenges

  • Idempotent self-hosted deploy with auto-recovery of Docker iptables (447d789, installer v0.0.74, internal/docker/): on iptables: No chain/target/match by that name (firewalld/nftables reload wiped the Docker daemon's DOCKER NAT chain), the installer detects it (IsDockerIptablesError), restarts the daemon (RestartDockerDaemon — systemctl → service fallback, with context.WithTimeout(90s)), waits 8s and retries up once; before start it always runs docker compose down (without -v) to clear stuck Created containers holding ports 5432/6380/9092. On failure — a human-readable instruction instead of a raw stack trace. → Demonstrates: deep understanding of Docker networking/iptables, host-level resilience, idempotency, careful error UX. A strong DevOps/Go signal.
  • Networking/infra edge cases in the installer (from CHANGELOG/diffs): host.docker.internal loopback MySQL resolution (04c3333); MySQL bind 0.0.0.0 + remote-grant for the backend container (c8ba8d4); Let's Encrypt for IP-only mode (b9b5ed9); disk precheck against the docker partition (d08b4b5); recursive chown of timescaledb_data (d8b5a81); mount /etc/machine-id instead of a pinned-MAC hack for license fingerprint (82765d8); Sangoma firewall watchdog — host-level NAT recovery (a1211ea, +206). → Real-world operations across mixed Linux (Ubuntu/Debian/CentOS/RHEL/Sangoma/FreeBSD).
  • Self-hosted product licensing (internal/license/): token + fingerprint + verify + state — anti-piracy hardware binding via /etc/machine-id. → Product thinking (on-prem monetization).
  • Three-layer binary distribution: CI (GitHub Actions on tags) → Cloudflare Worker (CDN from R2) → API (/api/releases metadata + install.sh bootstrap). → A full supply chain for self-hosted software.
  • Compiled Elysia.js API (bun build --compile to a single binary) + RBAC via Better Auth + subdomain provisioning via DNSimple on /api/plans. → Modern edge / Bun stack, non-standard production choices.
  • AI layer as separate apps/packages (apps/ai-gateway Elysia, packages/ai-core Zod + providers, ai-evals, ai-worker): a structured AI roadmap by phases (docs/ai-research/roadmap/phase-{0-5}), embedding tracking. → A mature architecture for AI features, not "I bolted on ChatGPT".
§05

AI-assisted development

  • Sessions found: 21 .jsonl for the project root (plus 6 more nested encoded directories for submodule paths of the monorepo: …-astervis, …-astervis-sale-new, …-apps-api, …-packages-db, …-installer, …-scripts-polar — but transcripts are concentrated in the root). ~43k transcript lines total — very high intensity.
  • What was done with AI: development along the AI roadmap, installer (infra fixes), design docs (WhatsApp channel spec/plan), marketing automation, pitch.
  • AI workflow patterns: mature, systematic AI-driven dev — the repo pins AGENTS.md, skills-lock.json (lock of the skills set), .mcp.json (MCP servers), multi-tooling (.claude/ + .codex/ + .agents/ = Claude Code + Codex + others). CLAUDE.md sets the vocabulary, port map, required skills (/ai-sdk, /ai-elements, /vercel-react-best-practices), and mandates reading the roadmap before any task. A reference example of an "AI-native" development process.
§06

Achievements & metrics

  • Monorepo scale: 7 apps in astervis_sale_new/apps (admin, ai-gateway, ai-worker, api, docs, pitch-deck, web) + 14 shared packages (ai-core, ai-evals, analytics, auth, cache, cli, db, email, entities, ui, intercom…); the core product astervis/ (backend, new_admin, queue, replication, nginx) reached v1.0.208.
  • Installer OS support: Ubuntu, Debian, CentOS, RHEL, Sangoma Linux, FreeBSD; cross-compilation + checksums.
  • Installer releases: ~18+ versions in ~2 months (v0.0.57→0.0.74).
  • GTM infra: integrations with GA4, GSC, Polar, LinkedIn, Twitter, Instagram, Intercom, PostHog.
§07

Contributors

git shortlog · all branches

  1. Dave93248
  2. i767175742
2 contributors290 commits total
Currently

Open to Senior / Staff engineering roles and selective freelance — production AI, platform, and full-stack work.

Get in touch