diff --git a/apps/docs-site/content/v5/services/meta.json b/apps/docs-site/content/v5/services/meta.json index 1112ddb2..11bb94cc 100644 --- a/apps/docs-site/content/v5/services/meta.json +++ b/apps/docs-site/content/v5/services/meta.json @@ -7,26 +7,7 @@ "catalog", "--- AI & ML ---", "service", - "--- Automation ---", - "service", - "--- Communication ---", - "service", - "--- CMS & Blogging ---", - "service", - "--- Data & Analytics ---", - "service", - "--- Design & Creative ---", - "service", - "--- Development ---", - "service", - "--- File Management ---", - "service", - "--- Infrastructure & Security ---", - "service", - "--- Media ---", - "service", - "--- Productivity ---", - "service", + "--- Links ---", "[UsersRound][Discord Community](https://discord.gg/coolify)", "[Sparkles][Become a Sponsor](https://coolify.io/sponsorships/)", diff --git a/apps/docs-site/content/v5/services/service.mdx b/apps/docs-site/content/v5/services/service.mdx index 6fd48cbc..0d79af83 100644 --- a/apps/docs-site/content/v5/services/service.mdx +++ b/apps/docs-site/content/v5/services/service.mdx @@ -10,14 +10,17 @@ import { ImageCard } from "@/components/image-card"; import { ImageCardGroup } from "@/components/image-card-group"; import { MediaCard } from "@/components/media-card"; import { MediaCardGroup } from "@/components/media-card-group"; +import { OneClickDeploy } from '@/components/one-click-deploy'; ![](/images/umami.png) + ## What is Umami? Umami is a simple, fast, privacy-focused alternative to Google Analytics. Umami is added to Coolify as a one click service on the version **v4.0.0-beta.412** + --- diff --git a/apps/docs-site/public/images/cool-deploy.png b/apps/docs-site/public/images/cool-deploy.png new file mode 100644 index 00000000..515c7d93 Binary files /dev/null and b/apps/docs-site/public/images/cool-deploy.png differ diff --git a/apps/docs-site/src/components/one-click-deploy.tsx b/apps/docs-site/src/components/one-click-deploy.tsx new file mode 100644 index 00000000..b67ceb7a --- /dev/null +++ b/apps/docs-site/src/components/one-click-deploy.tsx @@ -0,0 +1,126 @@ +'use client'; + +import { useState, useEffect } from 'react'; + +export function OneClickDeploy() { + const [isOpen, setIsOpen] = useState(false); + const [serverType, setServerType] = useState<'cloud' | 'self-hosted'>('cloud'); + const [serverUrl, setServerUrl] = useState(''); + const [projectName, setProjectName] = useState(''); + const [environmentName, setEnvironmentName] = useState(''); + const [isMounted, setIsMounted] = useState(false); + + useEffect(() => { + setIsMounted(true); + }, []); + + const handleDeploy = () => { + const baseUrl = serverType === 'cloud' ? 'https://app.coolify.io' : serverUrl; + const payload = { + projectName, + environmentName + } + const redirectUrl = `${baseUrl}/deploy?payload=${btoa(JSON.stringify(payload))}`; + window.location.href = redirectUrl; + }; + + if (!isMounted) { + return null; + } + + return ( + <> +
setIsOpen(true)} className="cursor-pointer"> + Deploy to Coolify +
+ + {isOpen && ( +
setIsOpen(false)}> +
e.stopPropagation()}> +
+

Deploy to Coolify

+
+
+
+ + +
+ + {serverType === 'self-hosted' && ( +
+ + setServerUrl(e.target.value)} + placeholder="https://coolify.example.com" + className="mt-1 block w-full rounded-lg border-input bg-black/10 dark:bg-white/5 px-3 py-2 text-sm shadow-sm" + /> +
+ )} + +
+ + setProjectName(e.target.value)} + placeholder="my-awesome-project" + className="mt-1 block w-full rounded-lg border-input bg-black/10 dark:bg-white/5 px-3 py-2 text-sm shadow-sm" + /> +
+ +
+ + setEnvironmentName(e.target.value)} + placeholder="production" + className="mt-1 block w-full rounded-lg border-input bg-black/10 dark:bg-white/5 px-3 py-2 text-sm shadow-sm" + /> +
+
+
+ + +
+
+
+ )} + + ); +} \ No newline at end of file