← All Projects

A2 LSTK Steel Framing

The sales site of a steel-frame manufacturer in Dagestan. Every kind of building gets its own page with a live price estimate, and the client publishes projects without a developer.

A2 LSTK-Stroy home page in English: We make and install steel frames in Dagestan, next to a 3D steel frame with an orange ridge
Projects page on a phone: filters by building type above a guest house in the mountains
  • 7

    building types, each with a page and estimator

  • 60 s

    from a CMS edit to the live page

  • 2

    languages, Russian and English

  • 0

    manual deploy steps

Client
A2 LSTK-Stroy, steel-frame maker in Dagestan
Industry
Construction and manufacturing
Platform
Website and CMS
Our part
Site, CMS, hosting and CI
Timeline
July to September 2026, English in October

The brief.

Context

A2 LSTK-Stroy rolls light-gauge steel frames on its own line in Kizilyurt, then delivers and installs them. The site is how the company sells: it buys regional ad traffic for hangars, houses, guest houses and public contracts, and every click has to land on a page about that building with a price on it.

Challenge

Each ad group needs a matching page, and a client-rendered app would show search engines an empty shell. Visitors want a number before they call. The company also wanted to publish finished projects and read incoming requests itself, without waiting for a developer or putting the ad campaigns at risk.

Approach

We built a Nuxt 4 site that renders every page on the server, with one landing template and seven building-type configs. Each landing carries its own estimator, questions and request form. Projects live in Firestore behind a FireCMS admin and reach the site within a minute. Pushing to master deploys both apps.

A steel frame on the first screen.

The home page opens on a 3D frame drawn with Three.js, its ridge in the brand orange, beside one plain headline. Two buttons lead to the estimator and the request form. The text is in the server-rendered HTML, so a crawler or a slow phone gets the whole page before any script runs.

Home

A price before the phone call.

Pick a package, a building type, the floor area and the floors, and a price range updates on the spot, with the rate per square metre under it. Hangars add height, span, insulation and doors. The result says it is a guide and links to the form for an exact quote.

Home estimator
Hangar estimator

One page for each kind of building.

Hangars, commercial buildings, hotels, guest houses, houses, small buildings and public contracts each have a landing page. They share one template and differ only in config: headline, estimator inputs, what the price includes, questions and form fields. Contractors who need kits for their own projects get a page of their own.

Hangars
Contractors

Every finished building gets a page.

The company adds a project in FireCMS: photos, area, floors, days in production and on site, profiles used and a stage-by-stage timeline. The site reads it from Firestore on the server and caches it for a minute. Each project gets its own URL and links back to the landing page for its building type.

Projects
Project page

The same pages on a phone.

Every page is laid out for a phone first. Filters wrap into chips, the numbers stack, and the timeline keeps its days on the left. WhatsApp, Telegram and call buttons stay in reach on every screen.

Hangars landing page on a phone with its headline and estimate button
Landing
Estimator result on a phone: about 1,170,000 to 1,710,000 roubles for a frame kit
Estimate
Warehouse hangar project page on a phone
Project
Project timeline on a phone: 2 days design, 9 days production, 2 days delivery, 15 days installation
Timeline

Requests that reach the right person.

Every form posts to the site's own server, which checks it and stores it where the team already works.

  • Fields per building type

    Hangar requests ask for the building type, area and delivery region; contractor requests for company, tax ID and volume. The server accepts only the fields each form defines.

  • Drawings attached

    A visitor can attach a design or floor plan up to 5 MB. It goes to Cloud Storage next to the request.

  • Spam limits

    A hidden honeypot field and a limit of six requests per IP every 15 minutes.

  • Read in the CMS

    Requests land in Firestore and appear in the same FireCMS admin as the projects, with the page and site language they came from.

  • Clicks counted

    Taps on the phone number, WhatsApp and Telegram are sent to Yandex Metrica as goals.

One push, two apps, tested rules.

The site and the CMS live in one pnpm workspace and deploy from master. Firebase App Hosting builds and runs the Nuxt server. A GitHub Actions workflow builds the site as a gate, tests the Firestore and Storage rules in the emulator, then deploys the rules and the CMS.

  1. Push to master

    The only long-lived branch. Pull requests run the same checks without deploying.

  2. Rules tested

    Firestore and Storage rules run against the emulator before they can ship.

  3. CMS deployed

    FireCMS is built and deployed to its own Firebase Hosting site.

  4. Site rolled out

    App Hosting builds the Nuxt 4 server and rolls it out with no manual step.

  5. Pages rendered

    Each request gets full HTML in Russian or English, with sitemap, hreflang and FAQ markup.

What we built.

Our part

  • Page structure for paid and organic search
  • Server-rendered Nuxt site with a 3D hero
  • Price estimators for every building type
  • FireCMS admin for projects and incoming requests
  • Request form with file upload and spam limits
  • English version alongside the Russian site
  • Hosting, CI and security rules tested against the emulator

Stack

Site
  • Nuxt 4
  • Vue 3
  • TypeScript
  • Three.js
  • GSAP
  • Lenis
SEO and languages
  • Nuxt SEO
  • @nuxtjs/i18n
  • Schema.org
  • Sitemap and robots
Content
  • FireCMS
  • Firestore
  • Cloud Storage
Hosting
  • Firebase App Hosting
  • Firebase Hosting
Delivery
  • GitHub Actions
  • Firebase emulator rule tests
  • pnpm workspaces
Analytics
  • Yandex Metrica

Paying for every click?
Give it a page that answers.

We build fast, server-rendered sites where each ad group lands on its own page, and the content stays in your hands.