Snapshot of uncommitted work: landing, bots, prod infra, partner cabinet, backoffice stage 1

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zabudko-ruandClaude Opus 5.5 committed 2026-10-21 01:23:32 +04:00
1 parent 45d7512d2b
commit d452824c62
314 files changed
+44394 -121

No files matched your search

@@ -0,0 +1,76 @@
import '../../variants.css';
import '../../home.css';
import '../../service.css';
import '../../flats.css';
import type { Metadata, Viewport } from 'next';
import { notFound } from 'next/navigation';
import { Flats } from '../../../components/flats';
import { HomeFooter } from '../../../components/home';
import { VariantHeader } from '../../../components/variant';
import { getCatalog } from '../../../lib/data';
import { getFlats } from '../../../lib/flats';
// Квартиры из CRM меняются в течение дня — страница собирается на каждый запрос, список кешируется на минуту.
export const dynamic = 'force-dynamic';
export const dynamicParams = false;
/** Только русская версия (решение владельца, 20.10.2026) */
export function generateStaticParams() {
return [{ locale: 'ru' }];
}
export const metadata: Metadata = {
title: 'Квартиры в аренду в Ереване — запись на просмотр | Barev Club',
description: 'Проверенные квартиры от агентства-партнёра: фото, описание, цена. Выберите квартиру и удобный день — агент позвонит и покажет её.',
alternates: { canonical: '/ru/apartments' },
openGraph: {
title: 'Квартиры в аренду в Ереване',
locale: 'ru',
type: 'website',
siteName: 'Barev Club',
},
};
export const viewport: Viewport = { themeColor: '#4A1028' };
/** /ru/apartments — «Найдём квартиру»: объекты AREV из CRM и запись на просмотр */
export default async function Page({ params }: { params: Promise<{ locale: string }> }) {
const { locale } = await params;
if (locale !== 'ru') notFound();
const [flats, catalog] = await Promise.all([getFlats(), getCatalog()]);
const telegramUrl = `https://t.me/${catalog.botUsername}`;
return (
<div className="v2">
<div className="v-wrap">
<VariantHeader locale="ru" path="" className="vh--dark" logoColor="#F6C3D3" />
<nav className="s-crumbs" aria-label="Навигация">
<a href="/ru">Главная</a>
<span aria-hidden="true">/</span>
<span aria-current="page">Квартиры</span>
</nav>
<section className="fl-hero">
<h1 className="s-title">Найдём квартиру</h1>
<p className="s-lead">
Квартиры, которые агент уже проверил и согласовал с собственником. Листайте фото, читайте описание и выберите день — агент позвонит, подтвердит
время и покажет квартиру.
</p>
</section>
{flats?.length ? (
<Flats flats={flats} telegramUrl={telegramUrl} />
) : (
<section className="fl-empty">
<h2>{flats ? 'Сейчас свободных квартир нет' : 'Список квартир временно недоступен'}</h2>
<p>Напишите нам в Telegram — подберём варианты под ваш бюджет и район.</p>
<a className="bc-btn fl-book" href={telegramUrl}>
Написать в Telegram
</a>
</section>
)}
<HomeFooter locale="ru" />
</div>
</div>
);
}