-
-
- 🚀 {t("hero.cloud")}
-
-
+
+
+
+
+ 🎉
{" "}
+
+ Introducing Dokploy Cloud
+
+
+
-
-
+
-
- {t("hero.deploy")}{" "}
-
-
- {t("hero.anywhere")}
- {" "}
- {t("hero.with")}
-
-
- {t("hero.des")}
-
-
-
-
- curl -sSL https://dokploy.com/install.sh | sh
-
-
- {/*
+
-
-
-
-
- {/*
-
- {t("hero.featuredIn")}
-
-
- {[
- [
- { name: "Product Hunt", logo: },
- // { name: "Hacker News", logo: },
- ],
- ].map((group, groupIndex) => (
- -
-
- {group.map((company) => (
- -
- {company.logo}
-
- ))}
-
-
- ))}
-
-
*/}
+
+
+
+
+
);
diff --git a/apps/website/components/PrimaryFeatures.tsx b/apps/website/components/PrimaryFeatures.tsx
index ef4ecfd..4a0b4b3 100644
--- a/apps/website/components/PrimaryFeatures.tsx
+++ b/apps/website/components/PrimaryFeatures.tsx
@@ -7,17 +7,13 @@ import { useEffect, useState } from "react";
import { cn } from "@/lib/utils";
import { useTranslations } from "next-intl";
import { Container } from "./Container";
+import Safari from "./ui/safari";
const features = [
- {
- title: "primaryFeatures.projects",
- description: "primaryFeatures.projectsDes",
- image: "/primary/projects.png",
- },
{
title: "primaryFeatures.applications",
description: "primaryFeatures.applicationsDes",
- image: "/primary/applications.png",
+ image: "/primary/primary.png",
},
{
title: "primaryFeatures.compose",
@@ -25,9 +21,9 @@ const features = [
image: "/primary/compose.png",
},
{
- title: "primaryFeatures.multinode",
- description: "primaryFeatures.multinodeDes",
- image: "/primary/multinode.png",
+ title: "primaryFeatures.multiserver",
+ description: "primaryFeatures.multiserverDes",
+ image: "/primary/servers.png",
},
{
title: "primaryFeatures.monitoring",
@@ -39,6 +35,11 @@ const features = [
description: "primaryFeatures.backupsDes",
image: "/primary/backups.png",
},
+ {
+ title: "primaryFeatures.traefik",
+ description: "primaryFeatures.traefikDes",
+ image: "/primary/traefik.png",
+ },
];
export function PrimaryFeatures() {
@@ -85,7 +86,7 @@ export function PrimaryFeatures() {
height={1636}
unoptimized
/> */}
-
+
{t("primaryFeatures.title")}
@@ -96,16 +97,16 @@ export function PrimaryFeatures() {
{({ selectedIndex }) => (
<>
-
+
{features.map((feature, featureIndex) => (
{selectedIndex === featureIndex && (
-
+
{t(feature.title)}
{t(feature.description)}
@@ -153,34 +154,35 @@ export function PrimaryFeatures() {
))}
-
+
{features.map((feature, index) => (
-
+
-
+
{t(feature.description)}
-
+
+
+
))}
@@ -188,7 +190,7 @@ export function PrimaryFeatures() {
>
)}
-
+
);
}
diff --git a/apps/website/components/Testimonials.tsx b/apps/website/components/Testimonials.tsx
index ad06cfc..7e6df4b 100644
--- a/apps/website/components/Testimonials.tsx
+++ b/apps/website/components/Testimonials.tsx
@@ -1,4 +1,7 @@
+"use client";
+import { cn } from "@/lib/utils";
import { Container } from "./Container";
+import { Marquee } from "./ui/marquee";
const testimonials = [
[
@@ -71,64 +74,144 @@ function QuoteIcon(props: React.ComponentPropsWithoutRef<"svg">) {
);
}
+const reviews = [
+ {
+ name: "Duras",
+ username: "@duras",
+ body: "This app convinced me to try something beyond pure Docker Compose. It’s a pleasure to contribute to such an awesome project!",
+ img: "https://avatar.vercel.sh/duras",
+ },
+ {
+ name: "apis",
+ username: "@apis",
+ body: "I replaced my previous setup with Dokploy today. It’s stable, easy to use, and offers excellent support!",
+ img: "https://avatar.vercel.sh/apis",
+ },
+ {
+ name: "yayza_",
+ username: "@yayza_",
+ body: "Migrated all my services to Dokploy—it worked seamlessly! The level of configuration is perfect for all kinds of projects.",
+ img: "https://avatar.vercel.sh/yayza",
+ },
+ {
+ name: "Vaurion",
+ username: "@vaurion",
+ body: "Dokploy makes my deployments incredibly easy. I just test locally, push a preview to GitHub, and Dokploy takes care of the rest.",
+ img: "https://avatar.vercel.sh/vaurion",
+ },
+ {
+ name: "vinum?",
+ username: "@vinum",
+ body: "Dokploy is everything I wanted in a PaaS. The functionality is impressive, and it's completely free!",
+ img: "https://avatar.vercel.sh/vinum",
+ },
+ {
+ name: "vadzim",
+ username: "@vadzim",
+ body: "Dokploy is fantastic! I rarely encounter any deployment issues, and the community support is top-notch.",
+ img: "https://avatar.vercel.sh/vadzim",
+ },
+ {
+ name: "Slurpy Beckerman",
+ username: "@slurpy",
+ body: "This is exactly what I want in a deployment system. I’ve restructured my dev process around Dokploy!",
+ img: "https://avatar.vercel.sh/slurpy",
+ },
+ {
+ name: "lua",
+ username: "@lua",
+ body: "Dokploy is genuinely so nice to use. The hard work behind it really shows.",
+ img: "https://avatar.vercel.sh/lua",
+ },
+ {
+ name: "johnnygri",
+ username: "@johnnygri",
+ body: "Dokploy is a complete joy to use. I’m running a mix of critical and low-priority services seamlessly across servers.",
+ img: "https://avatar.vercel.sh/johnnygri",
+ },
+ {
+ name: "HiJoe",
+ username: "@hijoe",
+ body: "Setting up Dokploy was great—simple, intuitive, and reliable. Perfect for small to medium-sized businesses.",
+ img: "https://avatar.vercel.sh/hijoe",
+ },
+ {
+ name: "johannes0910",
+ username: "@johannes0910",
+ body: "Dokploy has been a game-changer for my side projects. Solid UI, straightforward Docker abstraction, and great design.",
+ img: "https://avatar.vercel.sh/johannes0910",
+ },
+];
+
+const firstRow = reviews.slice(0, reviews.length / 2);
+const secondRow = reviews.slice(reviews.length / 2);
+
+const ReviewCard = ({
+ img,
+ name,
+ username,
+ body,
+}: {
+ img: string;
+ name: string;
+ username: string;
+ body: string;
+}) => {
+ return (
+
+
+

+
+
+ {name}
+
+
{username}
+
+
+ {body}
+
+ );
+};
+
export function Testimonials() {
return (
-
-
-
- What Our Users Say
-
-
- Don’t just take our word for it—see what our users across the globe
- are saying about how our platform has transformed their development
- workflows and boosted their productivity.
-
-
-
);
}
diff --git a/apps/website/components/features-second.tsx b/apps/website/components/features-second.tsx
new file mode 100644
index 0000000..4528e7c
--- /dev/null
+++ b/apps/website/components/features-second.tsx
@@ -0,0 +1,233 @@
+import { cn } from "@/lib/utils";
+import { IconBrandYoutubeFilled } from "@tabler/icons-react";
+import { motion } from "framer-motion";
+import Image from "next/image";
+import Link from "next/link";
+import type React from "react";
+import { useEffect, useRef } from "react";
+
+export function FeaturesSectionDemo() {
+ const features = [
+ {
+ title: "Track issues effectively",
+ description:
+ "Track and manage your project issues with ease using our intuitive interface.",
+ skeleton: ,
+ className:
+ "col-span-1 lg:col-span-4 border-b lg:border-r dark:border-neutral-800",
+ },
+ {
+ title: "Capture pictures with AI",
+ description:
+ "Capture stunning photos effortlessly using our advanced AI technology.",
+ skeleton: ,
+ className: "border-b col-span-1 lg:col-span-2 dark:border-neutral-800",
+ },
+ {
+ title: "Watch our AI on YouTube",
+ description:
+ "Whether its you or Tyler Durden, you can get to know about our product on YouTube",
+ skeleton: ,
+ className:
+ "col-span-1 lg:col-span-3 lg:border-r dark:border-neutral-800",
+ },
+ {
+ title: "Deploy in seconds",
+ description:
+ "With our blazing fast, state of the art, cutting edge, we are so back cloud servies (read AWS) - you can deploy your model in seconds.",
+ skeleton: ,
+ className: "col-span-1 lg:col-span-3 border-b lg:border-none",
+ },
+ ];
+ return (
+
+
+
+ Packed with thousands of features
+
+
+
+ From Image generation to video generation, Everything AI has APIs for
+ literally everything. It can even create this website copy for you.
+
+
+
+
+
+ {features.map((feature) => (
+
+ {feature.title}
+ {feature.description}
+ {feature.skeleton}
+
+ ))}
+
+
+
+ );
+}
+
+const FeatureCard = ({
+ children,
+ className,
+}: {
+ children?: React.ReactNode;
+ className?: string;
+}) => {
+ return (
+
+ {children}
+
+ );
+};
+
+const FeatureTitle = ({ children }: { children?: React.ReactNode }) => {
+ return (
+
+ {children}
+
+ );
+};
+
+const FeatureDescription = ({ children }: { children?: React.ReactNode }) => {
+ return (
+
+ {children}
+
+ );
+};
+
+export const SkeletonOne = () => {
+ return (
+
+ );
+};
+
+export const SkeletonThree = () => {
+ return (
+
+
+
+ );
+};
+
+export const SkeletonTwo = () => {
+ const images = [
+ "https://images.unsplash.com/photo-1517322048670-4fba75cbbb62?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=3425&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "https://images.unsplash.com/photo-1555400038-63f5ba517a47?q=80&w=3540&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "https://images.unsplash.com/photo-1554931670-4ebfabf6e7a9?q=80&w=3387&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "https://images.unsplash.com/photo-1546484475-7f7bd55792da?q=80&w=2581&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ ];
+
+ const imageVariants = {
+ whileHover: {
+ scale: 1.1,
+ rotate: 0,
+ zIndex: 100,
+ },
+ whileTap: {
+ scale: 1.1,
+ rotate: 0,
+ zIndex: 100,
+ },
+ };
+ return (
+
+ {/* TODO */}
+
+ {images.map((image, idx) => (
+
+
+
+ ))}
+
+
+ {images.map((image, idx) => (
+
+
+
+ ))}
+
+
+
+
+
+ );
+};
+
+export const SkeletonFour = () => {
+ return (
+
+ {/* */}
+
+ );
+};
diff --git a/apps/website/components/features.tsx b/apps/website/components/features.tsx
new file mode 100644
index 0000000..68be0cf
--- /dev/null
+++ b/apps/website/components/features.tsx
@@ -0,0 +1,148 @@
+"use client";
+import { cn } from "@/lib/utils";
+import {
+ IconActivity,
+ IconCloud,
+ IconDatabase,
+ IconEaseInOut,
+ IconRocket,
+ IconTemplate,
+ IconTerminal,
+ IconTerminal2,
+ IconUsers,
+} from "@tabler/icons-react";
+import { Layers, Lock, UnlockIcon } from "lucide-react";
+
+export function FeaturesSectionDemo() {
+ const features = [
+ {
+ title: "Flexible Application Deployment",
+ description:
+ "Deploy any application using Nixpacks, Heroku Buildpacks, or your custom Dockerfile, tailored to your stack.",
+ icon: ,
+ },
+ {
+ title: "Native Docker Compose Support",
+ description:
+ "Deploy complex applications natively with full Docker Compose integration for seamless orchestration.",
+ icon: ,
+ },
+ {
+ title: "Multi-server Support",
+ description:
+ "Effortlessly deploy your applications on remote servers, with zero configuration hassle.",
+ icon: ,
+ },
+ {
+ title: "Advanced User Management",
+ description:
+ "Control user access with detailed roles and permissions, keeping your deployments secure and organized.",
+ icon: ,
+ },
+ {
+ title: "Database Management with Backups",
+ description:
+ "Manage and back up MySQL, PostgreSQL, MongoDB, MariaDB, Redis directly from Dokploy.",
+ icon: ,
+ },
+ {
+ title: "API & CLI Access",
+ description:
+ "Need custom functionality? Dokploy offers complete API and CLI access to fit your needs.",
+ icon: ,
+ },
+ {
+ title: "Docker Swarm Clusters",
+ description:
+ "Scale your deployments seamlessly with built-in Docker Swarm support for robust, multi-node applications.",
+ icon: ,
+ },
+ {
+ title: "Open Source Templates",
+ description:
+ "Get started quickly with pre-configured templates for popular tools like Supabase, Cal.com, and Pocketbase.",
+ icon: ,
+ },
+ {
+ title: "No Vendor Lock-In",
+ description:
+ "Experience complete freedom to modify, scale, and customize Dokploy to suit your specific needs.",
+ icon: ,
+ },
+ {
+ title: "Real-time Monitoring & Alerts",
+ description:
+ "Monitor CPU, memory, and network usage in real-time across your deployments for full visibility.",
+ icon: ,
+ },
+ {
+ title: "Built for developers",
+ description:
+ "Designed specifically for engineers and developers seeking control and flexibility.",
+ icon: ,
+ },
+ {
+ title: "Self-hosted & Open Source",
+ description:
+ "Dokploy provides complete control with self-hosting capabilities and open-source transparency.",
+ icon: ,
+ },
+ ];
+ return (
+
+
+ Powerful Deployment, Tailored for You
+
+
+ Unlock seamless multi-server deployments, advanced user control, and
+ flexible database management—all with Dokploy’s developer-focused
+ features.
+
+
+ {features.map((feature, index) => (
+
+ ))}
+
+
+ );
+}
+
+const Feature = ({
+ title,
+ description,
+ icon,
+ index,
+}: {
+ title: string;
+ description: string;
+ icon: React.ReactNode;
+ index: number;
+}) => {
+ return (
+
+ {index < 4 && (
+
+ )}
+ {index >= 4 && (
+
+ )}
+
{icon}
+
+
+ {description}
+
+
+ );
+};
diff --git a/apps/website/components/hero/Hi.tsx b/apps/website/components/hero/Hi.tsx
new file mode 100644
index 0000000..cd70b0c
--- /dev/null
+++ b/apps/website/components/hero/Hi.tsx
@@ -0,0 +1,197 @@
+import { ExternalLink } from "lucide-react";
+
+import { Badge } from "@/components/ui/badge";
+import { cn } from "@/lib/utils";
+import { Button, buttonVariants } from "../ui/button";
+
+const Hero12 = () => {
+ return (
+
+
+
+
+
+
+
+
+ Welcome to Our Website
+
+
+ Elig doloremque mollitia fugiat omnis! Porro facilis quo animi
+ consequatur.
+
+
+
+ {/*
+
+ Try our product for free
+
+
+ No credit card required
+
+
+
+ Book a demo
+ */}
+
+
+
+
+
+
+
+
+
+
+
4.8 starts
+
+
207 Reviews
+
+
+
+
+
+

+
+
+
+ );
+};
+
+export default Hero12;
diff --git a/apps/website/components/ui/accordion.tsx b/apps/website/components/ui/accordion.tsx
new file mode 100644
index 0000000..eb09d85
--- /dev/null
+++ b/apps/website/components/ui/accordion.tsx
@@ -0,0 +1,61 @@
+"use client";
+
+import * as AccordionPrimitive from "@radix-ui/react-accordion";
+import { ChevronDown, Minus, PlusIcon } from "lucide-react";
+import * as React from "react";
+
+import { cn } from "@/lib/utils";
+
+const Accordion = AccordionPrimitive.Root;
+
+const AccordionItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+AccordionItem.displayName = "AccordionItem";
+
+const AccordionTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ svg]:rotate-180 group",
+ className,
+ )}
+ {...props}
+ >
+ {children}
+
+
+
+
+));
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
+
+const AccordionContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+ {children}
+
+
+));
+
+AccordionContent.displayName = AccordionPrimitive.Content.displayName;
+
+export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
diff --git a/apps/website/components/ui/animated-gradient-text.tsx b/apps/website/components/ui/animated-gradient-text.tsx
new file mode 100644
index 0000000..e53cd79
--- /dev/null
+++ b/apps/website/components/ui/animated-gradient-text.tsx
@@ -0,0 +1,28 @@
+import type { ReactNode } from "react";
+
+import { cn } from "@/lib/utils";
+
+export default function AnimatedGradientText({
+ children,
+ className,
+}: {
+ children: ReactNode;
+ className?: string;
+}) {
+ return (
+
+ );
+}
diff --git a/apps/website/components/ui/hero-video-dialog.tsx b/apps/website/components/ui/hero-video-dialog.tsx
new file mode 100644
index 0000000..f24a203
--- /dev/null
+++ b/apps/website/components/ui/hero-video-dialog.tsx
@@ -0,0 +1,143 @@
+"use client";
+
+import { AnimatePresence, motion } from "framer-motion";
+import { Play, XIcon } from "lucide-react";
+import { useState } from "react";
+
+import { cn } from "@/lib/utils";
+
+type AnimationStyle =
+ | "from-bottom"
+ | "from-center"
+ | "from-top"
+ | "from-left"
+ | "from-right"
+ | "fade"
+ | "top-in-bottom-out"
+ | "left-in-right-out";
+
+interface HeroVideoProps {
+ animationStyle?: AnimationStyle;
+ videoSrc: string;
+ thumbnailSrc: string;
+ thumbnailAlt?: string;
+ className?: string;
+}
+
+const animationVariants = {
+ "from-bottom": {
+ initial: { y: "100%", opacity: 0 },
+ animate: { y: 0, opacity: 1 },
+ exit: { y: "100%", opacity: 0 },
+ },
+ "from-center": {
+ initial: { scale: 0.5, opacity: 0 },
+ animate: { scale: 1, opacity: 1 },
+ exit: { scale: 0.5, opacity: 0 },
+ },
+ "from-top": {
+ initial: { y: "-100%", opacity: 0 },
+ animate: { y: 0, opacity: 1 },
+ exit: { y: "-100%", opacity: 0 },
+ },
+ "from-left": {
+ initial: { x: "-100%", opacity: 0 },
+ animate: { x: 0, opacity: 1 },
+ exit: { x: "-100%", opacity: 0 },
+ },
+ "from-right": {
+ initial: { x: "100%", opacity: 0 },
+ animate: { x: 0, opacity: 1 },
+ exit: { x: "100%", opacity: 0 },
+ },
+ fade: {
+ initial: { opacity: 0 },
+ animate: { opacity: 1 },
+ exit: { opacity: 0 },
+ },
+ "top-in-bottom-out": {
+ initial: { y: "-100%", opacity: 0 },
+ animate: { y: 0, opacity: 1 },
+ exit: { y: "100%", opacity: 0 },
+ },
+ "left-in-right-out": {
+ initial: { x: "-100%", opacity: 0 },
+ animate: { x: 0, opacity: 1 },
+ exit: { x: "100%", opacity: 0 },
+ },
+};
+
+export default function HeroVideoDialog({
+ animationStyle = "from-center",
+ videoSrc,
+ thumbnailSrc,
+ thumbnailAlt = "Video thumbnail",
+ className,
+}: HeroVideoProps) {
+ const [isVideoOpen, setIsVideoOpen] = useState(false);
+ const selectedAnimation = animationVariants[animationStyle];
+
+ return (
+
+
setIsVideoOpen(true)}
+ >
+

+
+
+
+ {isVideoOpen && (
+ setIsVideoOpen(false)}
+ exit={{ opacity: 0 }}
+ className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-md"
+ >
+
+
+
+
+
+ {/* biome-ignore lint/a11y/useIframeTitle: */}
+
+
+
+
+ )}
+
+
+ );
+}
diff --git a/apps/website/components/ui/marquee.tsx b/apps/website/components/ui/marquee.tsx
new file mode 100644
index 0000000..a7fddcc
--- /dev/null
+++ b/apps/website/components/ui/marquee.tsx
@@ -0,0 +1,51 @@
+import { cn } from "@/lib/utils";
+
+interface MarqueeProps {
+ className?: string;
+ reverse?: boolean;
+ pauseOnHover?: boolean;
+ children?: React.ReactNode;
+ vertical?: boolean;
+ repeat?: number;
+ [key: string]: any;
+}
+
+export function Marquee({
+ className,
+ reverse,
+ pauseOnHover = false,
+ children,
+ vertical = false,
+ repeat = 4,
+ ...props
+}: MarqueeProps) {
+ return (
+
+ {Array(repeat)
+ .fill(0)
+ .map((_, i) => (
+
+ {children}
+
+ ))}
+
+ );
+}
diff --git a/apps/website/components/ui/safari.tsx b/apps/website/components/ui/safari.tsx
new file mode 100644
index 0000000..56a37b4
--- /dev/null
+++ b/apps/website/components/ui/safari.tsx
@@ -0,0 +1,138 @@
+import type { SVGProps } from "react";
+
+export interface SafariProps extends SVGProps {
+ url?: string;
+ src?: string;
+ width?: number;
+ height?: number;
+}
+
+export default function Safari({
+ src,
+ url,
+ width = 1203,
+ height = 753,
+ ...props
+}: SafariProps) {
+ return (
+
+ );
+}
diff --git a/apps/website/locales/en.json b/apps/website/locales/en.json
index bd69927..6751edb 100644
--- a/apps/website/locales/en.json
+++ b/apps/website/locales/en.json
@@ -39,14 +39,16 @@
"projectsDes": "Manage and organize all your projects in one place, keeping detailed track of progress and resource allocation.",
"applications": "Applications & Databases",
"applicationsDes": "Centralize control over your applications and databases for enhanced security and efficiency, simplifying access and management across your infrastructure.",
- "compose": "Compose",
+ "compose": "Docker Compose",
"composeDes": "Native Docker Compose support for manage complex applications and services with ease.",
- "multinode": "Multinode",
- "multinodeDes": "Scale applications to multiples nodes using docker swarm to manage the cluster.",
+ "multiserver": "Multiserver",
+ "multiserverDes": "Deploy applications to multiple servers without effort.",
"monitoring": "Monitoring",
"monitoringDes": "Monitor your systems' performance and health in real time, ensuring continuous and uninterrupted operation.",
"backups": "Backups",
- "backupsDes": "Implement automatic and secure backup solutions to protect your critical data and restore it quickly when necessary."
+ "backupsDes": "Implement automatic and secure backup solutions to protect your critical data and restore it quickly when necessary.",
+ "traefik": "Traefik",
+ "traefikDes": "Manage traefik via File Editor to configure your own domain names, certificates, and more."
},
"secondaryFeatures": {
"title": "Advanced Management Tools",
@@ -65,8 +67,8 @@
"terminalDes": "Provides an interface to access the command line of any active container, allowing developers to execute commands, manage services, and troubleshoot directly from the dashboard"
},
"callToAction": {
- "title": "Unlock Your Deployment Potential",
- "des": "Streamline your deployments with our PaaS. Effortlessly manage Docker containers and traffic with Traefik. Boost your infrastructure's efficiency and security today",
+ "title": "Unlock Your Deployment Potential with Dokploy Cloud",
+ "des": "Say goodbye to infrastructure hassles—Dokploy Cloud handles it all. Effortlessly deploy, manage Docker containers, and secure your traffic with Traefik. Focus on building, we’ll handle the rest.",
"button": "Get Started Now"
},
"faq": {
@@ -76,22 +78,20 @@
"a1": "Dokploy is a stable, easy-to-use deployment solution designed to simplify the application management process. Think of Dokploy as a free alternative self-hostable solution to platforms like Heroku, Vercel, and Netlify.",
"q2": "Why Choose Dokploy?",
"a2": "Dokploy offers simplicity, flexibility, and speed in application deployment and management.",
- "q3": "Is Dokploy free?",
- "a3": "Yes, Dokploy is totally free. You can use it for personal projects, small teams, or even for large-scale applications.",
"q4": "Is it open source?",
"a4": "Yes, Dokploy is open source and free to use.",
"q5": "What types of languages can I deploy with Dokploy?",
"a5": "Dokploy does not restrict programming languages. You are free to choose your preferred language and framework.",
"q6": "How do I request a feature or report a bug?",
- "a6": "To request a feature or report a bug, please create an issue on our GitHub repository or ask in our Discord channel. We are currently focused on addressing existing bugs and plan to release new features soon.",
+ "a6": "To request a feature or report a bug, please create an issue on our GitHub repository or ask in our Discord channel.",
"q7": "Do you track the usage of Dokploy?",
"a7": "No, we don't track any usage data.",
"q8": "Are there any user forums or communities where I can interact with other users?",
- "a8": "Yes, we have active GitHub discussions where you can share ideas, ask for help, and connect with other users.",
+ "a8": "Yes, we have active GitHub discussions and Discord where you can share ideas, ask for help, and connect with other users.",
"q9": "What types of applications can I deploy with Dokploy?",
- "a9": "Dokploy supports a variety of applications, including those built with Docker, as well as applications from any Git repository, offering custom builds with Nixpacks, Dockerfiles, or Buildpacks like Heroku and Paketo.",
+ "a9": "You can deploy any application that can be Dockerized, with no limits. Dokploy supports builds from Git repositories, Dockerfiles, Nixpacks, and Buildpacks like Heroku and Paketo.",
"q10": "How does Dokploy handle database management?",
- "a10": "Dokploy supports multiple database systems including Postgres, MySQL, MariaDB, MongoDB, and Redis, providing tools for easy deployment and management directly from the dashboard."
+ "a10": "Dokploy supports multiple database systems including Postgres, MySQL, MariaDB, MongoDB, and Redis, providing tools for easy deployment and management and backups directly from the dashboard."
},
"footer": {
"copyright": "Copyright © {year} Dokploy. All rights reserved."
diff --git a/apps/website/package.json b/apps/website/package.json
index 44cfe62..deebed1 100644
--- a/apps/website/package.json
+++ b/apps/website/package.json
@@ -14,14 +14,17 @@
"dependencies": {
"@headlessui/react": "^1.7.17",
"@headlessui/tailwindcss": "^0.2.0",
+ "@radix-ui/react-accordion": "^1.2.1",
"@radix-ui/react-select": "^2.0.0",
"@radix-ui/react-slot": "^1.0.2",
"@radix-ui/react-switch": "^1.0.3",
+ "@radix-ui/react-tabs": "1.1.1",
+ "@tabler/icons-react": "3.21.0",
"@types/node": "20.4.6",
"autoprefixer": "^10.4.12",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
- "framer-motion": "^11.0.24",
+ "framer-motion": "^11.3.19",
"lucide-react": "0.364.0",
"next": "14.2.2",
"next-intl": "^3.19.0",
@@ -31,8 +34,7 @@
"tailwind-merge": "^2.2.2",
"tailwindcss": "^3.4.1",
"tailwindcss-animate": "^1.0.7",
- "typescript": "5.1.6",
- "@radix-ui/react-tabs": "1.1.1"
+ "typescript": "5.1.6"
},
"devDependencies": {
"@biomejs/biome": "1.7.0",
diff --git a/apps/website/public/primary/applications.png b/apps/website/public/primary/applications.png
deleted file mode 100644
index 4ea3233271ce295b3d763646f2870a29fb3cc386..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 81184
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