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=100Security
Technical safeguards
Performance
Lighthouse measurements for our website
Testing
Quality assurance
Playwright E2E
End-to-end tests for important user journeys
Vitest unit tests
Checks for logic, components and consistency of our offers
Interested in working together?
We discuss the right technical approach for your project and put the scope in your quote.
Start a project