Corporate Website Development
A corporate website differs from a business card site in scale of structure, integrations, and content management requirements. Typical project: 20-100 pages with several sections (products/services, company, news, cases, contacts), role-based system in CMS, multilingual support, and connections to external systems — CRM, ERP, analytics.
Architectural Solutions
Stack selection is determined by content volume, performance requirements, and support team resources.
Headless CMS + Frontend Framework — preferred option for projects where site performance and development flexibility are more important than time-to-market:
- CMS: Strapi, Directus, Contentful, Sanity
- Frontend: Next.js (ISR + SSG), Astro, Nuxt 3
- API: REST or GraphQL
├── cms/ # Strapi instance
│ ├── api/
│ │ ├── article/
│ │ ├── service/
│ │ └── case-study/
│ └── config/
└── frontend/ # Next.js
├── app/
│ ├── [locale]/
│ │ ├── news/
│ │ │ └── [slug]/page.tsx
│ │ └── services/
└── lib/
└── cms.ts # API client
WordPress (Classic or Headless) — when content managers are already familiar with WordPress, team is small, budget is limited. Custom theme + ACF Pro for flexible fields + Polylang/WPML for multilingual support. Headless WordPress (WP as backend + Next.js frontend) — a compromise: familiar interface for editors + modern frontend.
Laravel + Filament — suitable if site is tightly integrated with business logic: CRM, personal account, complex forms, custom calculations. Filament provides quick start for admin panel.
Structure and Navigation
Information architecture is the first design phase. Before mockups:
- Create a list of all content types and pages
- Determine hierarchy (nesting depth — no more than 3 levels)
- Work out navigation: main menu, footer navigation, breadcrumbs, cross-links between sections
- Define page templates (usually 5-12 unique templates)
Typical corporate website template set:
| Template | Description |
|---|---|
| Homepage | hero, advantage blocks, featured content |
| Services List | cards with description and links |
| Service Page | detailed description, CTA |
| About Company | history, team, mission |
| News List | pagination or infinite scroll |
| Article / News | content, author, date, related |
| Case Study | results, technologies, gallery |
| Contacts | form, map, contact details |
Multilingual Support
If site is in multiple languages — architectural decision is made at start, not added later.
In Next.js via next-intl or next-i18next:
app/
[locale]/
layout.tsx
page.tsx
services/
[slug]/
page.tsx
// next.config.ts
const nextConfig = {
i18n: {
locales: ['ru', 'en', 'de'],
defaultLocale: 'ru',
}
};
URL strategy: /ru/services, /en/services, /de/services — preferable to subdomains for SEO. Hreflang tags are mandatory:
<link rel="alternate" hreflang="ru" href="https://example.com/ru/services">
<link rel="alternate" hreflang="en" href="https://example.com/en/services">
CMS: Content Management
Content managers shouldn't edit code. CMS requirements:
- create/edit pages without developer
- role model: editor, moderator, administrator
- content versioning (ability to rollback)
- SEO fields on each page (title, description, og:image)
- draft preview before publication
In Strapi this is configured via Content-Type Builder + Roles & Permissions. In WordPress — via custom roles and PublishPress plugin for workflow.
Forms and CRM Integrations
Corporate website usually has several forms with different purposes: service request, partner form, feedback. Each form — not just email notification, but a lead going into CRM.
Integration with Bitrix24, AmoCRM, HubSpot — via REST API or webhook:
// lib/crm.ts
export async function createLead(data: LeadData) {
const response = await fetch(process.env.CRM_WEBHOOK_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
fields: {
TITLE: `Request from site: ${data.name}`,
NAME: data.name,
EMAIL: [{ VALUE: data.email, VALUE_TYPE: 'WORK' }],
PHONE: [{ VALUE: data.phone, VALUE_TYPE: 'WORK' }],
SOURCE_ID: 'WEB',
COMMENTS: data.message,
}
})
});
return response.json();
}
Mandatory: logging all submissions (database), idempotency (retry doesn't create duplicate), manager notification + auto-reply to client.
SEO and Performance
Corporate website is a long-term asset, technical SEO problems accumulate.
Mandatory technical requirements:
- sitemap.xml (dynamic generation for pages from CMS)
- robots.txt with correct directives
- canonical URL for all pages
- structured data (Organization, BreadcrumbList, Service)
- Core Web Vitals: LCP < 2.5s, CLS < 0.1, INP < 200ms
// app/sitemap.ts (Next.js)
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const services = await getServices();
const articles = await getArticles();
return [
{ url: 'https://example.com', lastModified: new Date() },
...services.map(s => ({
url: `https://example.com/services/${s.slug}`,
lastModified: new Date(s.updatedAt),
changeFrequency: 'monthly' as const,
priority: 0.8,
})),
...articles.map(a => ({
url: `https://example.com/news/${a.slug}`,
lastModified: new Date(a.publishedAt),
})),
];
}
Typical Timeline
Corporate website 20-40 pages with custom design, headless CMS, multilingual support, basic CRM integrations — 6-10 weeks from specification to delivery. Without multilingual and complex integrations — 4-6 weeks. WordPress with ready theme and minimal customization — 2-3 weeks.







