ZyVOP is a high-performance blogging platform built from the ground up for the technical community. No paywalls, no pop-ups—just a clean, markdown-first environment for sharing your engineering journey, architectural decisions, and code.
We chose a modern, edge-ready stack to ensure fast page loads, excellent SEO, and a seamless developer experience. Here's exactly what powers the ZyVOP engine:
Built on the App Router with React Server Components. We leverage the new React Compiler for automatic memoization and optimal rendering performance without manual useMemos.
A robust GraphQL API layer consumed via Apollo Client. We use declarative data fetching with advanced normalized caching strategies for lightning-fast client transitions.
A headless, extendable rich-text editor built on ProseMirror. Native markdown support, custom syntax highlighting with Lowlight, and seamless code block rendering.
Styled using the latest Tailwind CSS v4, utilizing CSS variables for dynamic theming, fluid dark mode, and ultra-lightweight utility generation.
Dynamic OpenGraph image generation at the edge using @vercel/og, ensuring your technical articles have beautiful, auto-generated preview cards when shared.
Protected by Cloudflare Turnstile for silent bot mitigation and secure authentication flows, keeping the platform spam-free without compromising UX.
We believe reading technical content shouldn't drain your battery or block the main thread. By maximizing Server Components and pushing heavy lifting to the backend, we ship minimal JavaScript to the client. Every millisecond counts.
Writing code in an article should feel like writing code in your IDE. Our editor supports rich formatting alongside raw markdown input, automatic language detection, and reliable syntax highlighting. It just works.
We iterate fast and listen to community feedback. ZyVOP is constantly evolving with new features tailored to what developers actually need when sharing their knowledge, from API integrations to CLI tools.
export default function Article() {
const { data, loading } = useQuery(GET_ARTICLE);
if (loading) return <Skeleton />;
return (
<article className="prose prose-invert">
<MDXRemote source={data.content} />
</article>
);
}Whether you want to discuss architecture, report a bug, or just chat about web development, our inboxes are open. We love connecting with fellow builders.