10 Jan 2025
Сайт Novacom — это не просто портфолио, а живое демонстрационное пособие современных практик веб-разработки. Созданный с использованием передовых технологий и оптимизированный для производительности, SEO и пользовательского опыта.
Мы используем последнюю версию Next.js 15 с App Router, которая включает:
Наш блог использует Contentlayer2 для управления контентом с типобезопасностью:
export const Blog = defineDocumentType(() => ({
name: 'Blog',
filePathPattern: `**/*.mdx`,
fields: {
title: { type: 'string', required: true },
description: { type: 'string', required: true },
slug: { type: 'string', required: true },
date: { type: 'date', required: true },
lang: { type: 'string', required: true },
tags: { type: 'list', of: { type: 'string' }, required: true },
cover: { type: 'string', required: true },
author: { type: 'string', required: true },
readingTime: { type: 'number', required: true },
noindex: { type: 'boolean', required: false, default: false },
},
computedFields: {
url: { type: 'string', resolve: (doc) => `/blog/${doc.slug}` },
localeUrl: { type: 'string', resolve: (doc) => `/${doc.lang}/blog/${doc.slug}` },
},
}))
Мы реализовали комплексную интернационализацию с помощью next-intl:
/en/, /de/)Наше пользовательское middleware обрабатывает:
// Умное определение локали и редирект
const detectedLocale = preferredLanguages
.map(lang => lang.split('-')[0])
.find(lang => VALID_LOCALES.includes(lang)) || DEFAULT_LOCALE
// SEO-оптимизированные редиректы
if (pathname === '/') {
statusCode = 301 // Постоянный редирект для SEO
}
// Конфигурация Next.js
const nextConfig = {
compiler: {
removeConsole: process.env.NODE_ENV === "production",
},
images: {
formats: ['image/webp', 'image/avif'],
dangerouslyAllowSVG: true,
contentDispositionType: 'attachment',
contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;",
},
experimental: {
mdxRs: true, // Обработка MDX на основе Rust
},
}
Мы генерируем динамические изображения Open Graph с использованием @vercel/og:
const ogImageUrl = `${siteUrl}/api/og?title=${encodeURIComponent(title)}&description=${encodeURIComponent(description)}&author=${encodeURIComponent(author || 'Novacom Team')}`
Комплексная реализация JSON-LD:
Автоматическая карта сайта с помощью next-sitemap:
Пользовательская система дизайна с:
darkMode: "class")Плавные анимации и переходы:
Мы реализовали Lenis для плавной прокрутки:
requestAnimationFrameОбработка форм в реальном времени с нашим пользовательским API:
Аналитика с акцентом на конфиденциальность:
Комплексная типобезопасность:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
"contentlayer/generated": ["./.contentlayer/generated"]
}
}
}
{
"scripts": {
"build": "prisma generate && next build && next-sitemap",
"postbuild": "next-sitemap"
}
}
Сайт Novacom демонстрирует, что возможно с современными веб-технологиями:
Этот сайт демонстрирует нашу приверженность к совершенству в веб-разработке. Каждая строка кода, каждое дизайнерское решение и каждая оптимизация отражают нашу экспертизу и внимание к деталям.
Введите свой e-mail, чтобы получать наши последние новости и обновления.
Не волнуйтесь, мы не рассылаем спам
H-Studio Bot
Novacom Bot
Anna Hartung
[RU] Looking for a frontend-only boilerplate for Next.js? Discover options for integrating authentication and Stripe.
[RU] Explore the challenges of using Incremental Static Regeneration with Redis Cache in a multi-replica Next.js setup.
Узнайте, как мы создали этот высокопроизводительный блог, используя Next.js, Contentlayer и современные SEO-техники. Познакомьтесь с нашим технологическим стеком и узнайте, почему это важно.