Skip to main content
Developer documentation

StudioMeyer for developers.

A look at the technology behind our website, with code examples and testing methods. Each client project's architecture depends on the agreed scope.

Technology stack

Modern, proven technologies

Next.js 15

App Router, Server Components and static generation

React 19

Components, Suspense and concurrent rendering

TypeScript

Strict typing and checked interfaces

Tailwind CSS

Utility classes and a custom design system

Framer Motion

Animations, gestures and layout transitions

Prisma + PostgreSQL

Typed ORM and relational database

Redis

Caching and session storage

Docker

Multi-stage builds and Docker Compose

Architecture

A modular structure

/studiomeyer/
β”œβ”€β”€ app/                    # Next.js App Router
β”‚   β”œβ”€β”€ [locale]/           # DE/EN/ES language versions
β”‚   β”‚   β”œβ”€β”€ page.tsx        # Homepage
β”‚   β”‚   β”œβ”€β”€ services/       # Service pages
β”‚   β”‚   β”œβ”€β”€ referenzen/     # References and demos
β”‚   β”‚   β”œβ”€β”€ portal/         # Customer account
β”‚   β”‚   └── docs/           # Documentation
β”‚   └── api/                # API routes
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ sections/           # Page sections
β”‚   β”œβ”€β”€ effects/            # Visual effects
β”‚   β”œβ”€β”€ motion/             # Animation components
β”‚   └── ui/                 # UI building blocks
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ hooks/              # Custom hooks
β”‚   β”œβ”€β”€ bot-core/           # Chatbot logic
β”‚   └── schema.ts           # JSON-LD for SEO
β”œβ”€β”€ messages/               # Translations
β”œβ”€β”€ prisma/                 # Database schema
└── mcp/                    # MCP servers

Separation of concerns

Pages in app/, reusable components in components/, and logic and types in lib/.

Performance in mind

Lazy loading and suitable animations for mobile devices and reduced motion preferences.

Container deployment

Docker Compose for services, local port bindings and HTTPS through the fronting server.

Code patterns

Recommended practices

Animations for mobile devices

Respect the device and the preference for reduced motion

import { useMobileDevice, useReducedMotion } from "@/lib/hooks";

const isMobile = useMobileDevice();
const prefersReduced = useReducedMotion();
const reduceAnimations = isMobile || prefersReduced;

<motion.div
  animate={reduceAnimations ? { opacity: 1 } : { opacity: 1, rotateX: -15 }}
/>

Load video on desktop only

Avoid additional video downloads on mobile devices

import { useEffect, useState } from "react";
import { useMobileDevice } from "@/lib/hooks";

const isMobile = useMobileDevice();
const [showVideo, setShowVideo] = useState(false);

useEffect(() => {
  if (!isMobile) {
    const timer = setTimeout(() => setShowVideo(true), 1000);
    return () => clearTimeout(timer);
  }
}, [isMobile]);

Deployment with Git and Docker

Pull code from Git, build the app container and check its logs

# Pull the approved code from Git
git -C /path/to/project pull

# Rebuild the app container
docker compose -f /path/to/project/docker-compose.yml up -d --build app

# Show the app logs
docker compose -f /path/to/project/docker-compose.yml logs -f app --tail=100

Security

Technical safeguards

HTTPS and HSTS
Content Security Policy (CSP)
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera, microphone and location access disabled
Rate limits for protected API endpoints
Server-side input validation
Cookie settings for optional functions
Server secrets stay outside the client bundle

Performance

Lighthouse measurements for our website

95/100 (Desktop)
Lighthouse Performance
PageSpeed Insights, measured on September 8, 2026
100/100
Lighthouse SEO
PageSpeed Insights, measured on September 8, 2026
100/100
Lighthouse Accessibility
PageSpeed Insights, measured on September 8, 2026
100/100
Lighthouse Best Practices
PageSpeed Insights, measured on September 8, 2026
1.0s (Desktop)
Largest Contentful Paint
PageSpeed Insights, measured on September 8, 2026
0.000 (Desktop)
Cumulative Layout Shift
PageSpeed Insights, measured on September 8, 2026

Testing

Quality assurance

Playwright E2E

End-to-end tests for important user journeys

npm test

Vitest unit tests

Checks for logic, components and consistency of our offers

npm run test:unit

Interested in working together?

We discuss the right technical approach for your project and put the scope in your quote.

Start a project