Add Django backend, Next.js frontend, and deploy templates

This commit is contained in:
ogrechko committed 2026-08-27 15:38:31 +00:00
1 parent fc0c991335
commit e9cd22d36f
93 files changed
+7840 -1

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
import { fallbackHome, fallbackPages, fallbackServices } from "@/lib/fallback-data";
import { HomePayload, Page, Service } from "@/lib/types";
const API_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api";
async function request<T>(path: string, fallback: T): Promise<T> {
try {
const response = await fetch(`${API_URL}${path}`, {
next: { revalidate: 60 },
});
if (!response.ok) {
return fallback;
}
return (await response.json()) as T;
} catch {
return fallback;
}
}
export function getHomeData(): Promise<HomePayload> {
return request("/home/", fallbackHome);
}
export function getPages(): Promise<Page[]> {
return request("/pages/", fallbackPages);
}
export function getPage(slug: string): Promise<Page | null> {
return request(`/pages/${slug}/`, fallbackPages.find((item) => item.slug === slug) || null);
}
export function getServices(): Promise<Service[]> {
return request("/services/", fallbackServices);
}
export function getService(slug: string): Promise<Service | null> {
return request(`/services/${slug}/`, fallbackServices.find((item) => item.slug === slug) || null);
}
+192
View File
@@ -0,0 +1,192 @@
import { HomePayload, Page, Service } from "@/lib/types";
export const fallbackHome: HomePayload = {
site: {
site_name: "Консультационное клиническое патологоанатомическое бюро",
tagline: "Морфологическая диагностика и клиническая точность",
phone: "+7 (8652) 22-66-77",
email: "kkpab@bk.ru",
address: "улица Балакирева, 5к7",
city: "Ставрополь",
working_hours: "Пн-Пт 08:00-17:00, Сб 09:00-14:00",
hero_title: "Современный медицинский сайт для патоморфологической службы",
hero_subtitle:
"Новый интерфейс сохраняет официальную информацию, специалистов и перечень исследований, но подает их спокойнее, чище и понятнее для пациентов и партнеров.",
hero_image:
"https://images.unsplash.com/photo-1579154204601-01588f351e67?auto=format&fit=crop&w=1600&q=80",
about_excerpt:
"Бюро объединяет специалистов по патологической анатомии и гистологии, обеспечивая диагностику, консультирование и доступ к обязательным документам в современном цифровом формате.",
},
pages: [
{
id: 1,
title: "О бюро",
slug: "about",
intro: "Специалисты, диагностический процесс и современное оборудование.",
body: "В патологоанатомическом бюро работают врачи с большим стажем, учеными степенями и опытом сопровождения сложных клинических случаев. Диагностический процесс поддерживается современным оборудованием и подготовленным медицинским персоналом.",
meta_title: "О бюро",
meta_description: "Информация о консультационном клиническом патологоанатомическом бюро.",
},
{
id: 2,
title: "Сведения о медицинской организации",
slug: "svedeniya-mo",
intro: "Юридическая и организационная информация.",
body: "ООО \"Консультационное Клиническое Патологоанатомическое Бюро\", ОГРН 1182651002093. Режим работы: пн-пт с 8:00 до 17:00, суббота с 9:00 до 14:00. Телефон: +7 (8652) 22-66-77.",
meta_title: "Сведения МО",
meta_description: "Официальные сведения о медицинской организации.",
},
],
services: [
{
id: 1,
title: "Гистологические исследования",
slug: "histology",
short_description: "Базовый и наиболее распространенный метод исследования тканей.",
description:
"Материал проходит фиксацию, процессинг, заливку в парафин, микротомию, окрашивание и оценку врачом-патоморфологом.",
icon: "microscope",
},
{
id: 2,
title: "Консультация препаратов",
slug: "consultations",
short_description: "Экспертная оценка сложных морфологических случаев.",
description:
"Подходит для верификации диагноза, второго мнения и клинически значимых уточнений.",
icon: "stethoscope",
},
{
id: 3,
title: "Документационное сопровождение",
slug: "documents-support",
short_description: "Быстрый доступ к обязательным сведениям и лицензиям.",
description:
"Позволяет пациентам и организациям быстро находить юридическую и справочную информацию.",
icon: "file-text",
},
{
id: 4,
title: "Исследование биопсийно-операционного материала",
slug: "biopsy-operative-material",
short_description:
"Исследование биопсийно-операционного материала органов и тканей при воспалительных процессах, дистрофиях, патологии артерий/вен, пороках развития.",
description:
"Исследование биопсийно-операционного материала органов и тканей при воспалительных процессах, дистрофиях, патологии артерий/вен, пороках развития.",
icon: "microscope",
},
{
id: 5,
title: "Исследование операционного материала",
slug: "operative-material",
short_description:
"Исследование операционного материала органов и тканей при инфекционных заболеваниях, опухолях ясного гистогенеза без дисплазии, гранулематозном воспалении.",
description:
"Исследование операционного материала органов и тканей при инфекционных заболеваниях, опухолях ясного гистогенеза без дисплазии, гранулематозном воспалении.",
icon: "file-text",
},
{
id: 6,
title: "Исследование диагностических биопсий",
slug: "diagnostic-biopsies",
short_description:
"Исследование диагностических биопсий (кроме пункционных) органов и тканей при воспалении, дисфункции, дисплазии, опухолях, требующих уточнения гистогенеза, степени инвазии, стадии прогрессирования.",
description:
"Исследование диагностических биопсий (кроме пункционных) органов и тканей при воспалении, дисфункции, дисплазии, опухолях, требующих уточнения гистогенеза, степени инвазии, стадии прогрессирования.",
icon: "stethoscope",
},
{
id: 7,
title: "Исследование диагностических пункционных биопсий",
slug: "diagnostic-puncture-biopsies",
short_description:
"Исследование диагностических пункционных биопсий различных органов и тканей, биопсий и операционный материал при иммунопатологических процессах, опухолях и опухолеподобных поражениях.",
description:
"Исследование диагностических пункционных биопсий различных органов и тканей, биопсий и операционный материал при иммунопатологических процессах, опухолях и опухолеподобных поражениях.",
icon: "microscope",
},
{
id: 8,
title: "Экспресс-исследование диагностических биопсий",
slug: "express-diagnostic-biopsies",
short_description:
"Экспресс-исследование диагностических биопсий (кроме пункционных) органов и тканей при воспалении, дисфункции, дисплазии, опухолях, требующих уточнения гистогенеза, степени инвазии, стадии прогрессирования.",
description:
"Экспресс-исследование диагностических биопсий (кроме пункционных) органов и тканей при воспалении, дисфункции, дисплазии, опухолях, требующих уточнения гистогенеза, степени инвазии, стадии прогрессирования.",
icon: "stethoscope",
},
{
id: 9,
title: "Исследование костно-хрящевых тканей",
slug: "bone-cartilage-tissues",
short_description:
"Исследование костно-хрящевых тканей, включая декальцинацию операционного материала.",
description:
"Исследование костно-хрящевых тканей, включая декальцинацию операционного материала.",
icon: "file-text",
},
{
id: 10,
title: "Гистологическое исследование последов",
slug: "placenta-histology",
short_description:
"Гистологическое исследование последов с целью диагностики внутриутробного инфицирования.",
description:
"Гистологическое исследование последов с целью диагностики внутриутробного инфицирования.",
icon: "microscope",
},
],
doctors: [
{
id: 1,
full_name: "Чуков Сергей Залимович",
position: "Заведующий отделением, врач-патологоанатом",
credentials: "Сертификат специалиста 2514 от 24.12.2018",
bio: "Участвует в диагностике сложных случаев и координирует работу отделения.",
photo: "",
},
{
id: 2,
full_name: "Балабеков Андрей Вагифович",
position: "Врач-патологоанатом, генеральный директор",
credentials: "Сертификат специалиста 307 от 07.03.2019",
bio: "Координирует работу бюро и развитие диагностической службы.",
photo: "",
},
{
id: 3,
full_name: "Громова Юлия Владимировна",
position: "Врач-патологоанатом",
credentials: "Сертификат ВСБ № 0947855 от 30.09.2006",
bio: "Работает с морфологической диагностикой и сопровождением исследований.",
photo: "",
},
{
id: 4,
full_name: "Чеккуева Зульфия Алиевна",
position: "Врач-патологоанатом",
credentials: "Аккредитация специалиста 2022.2937579 от 30.04.2026 г. Диплом об окончании ординатуры 1163 от 31.08.2020 г.",
bio: "Врач-патологоанатом.",
photo: "",
},
],
documents: [
{
id: 1,
title: "Лицензия на медицинскую деятельность",
category: "Лицензии",
description: "Лицензия № ЛО-26-01-005362 от 20 марта 2020 года.",
file_url: "",
},
{
id: 2,
title: "Территориальная программа ОМС СК",
category: "Документы",
description: "Обязательная информация для пациентов и партнеров.",
file_url: "",
},
],
};
export const fallbackPages: Page[] = fallbackHome.pages;
export const fallbackServices: Service[] = fallbackHome.services;
+58
View File
@@ -0,0 +1,58 @@
export type SiteSettings = {
site_name: string;
tagline: string;
phone: string;
email: string;
address: string;
city: string;
working_hours: string;
hero_title: string;
hero_subtitle: string;
hero_image: string;
about_excerpt: string;
};
export type Page = {
id: number;
title: string;
slug: string;
intro: string;
body: string;
meta_title: string;
meta_description: string;
};
export type Service = {
id: number;
title: string;
slug: string;
short_description: string;
description: string;
icon: string;
};
export type Doctor = {
id: number;
full_name: string;
position: string;
credentials: string;
bio: string;
photo: string;
};
export type Document = {
id: number;
title: string;
category: string;
description: string;
file_url: string;
};
export type HomePayload = {
site: SiteSettings;
pages: Page[];
services: Service[];
doctors: Doctor[];
documents: Document[];
};