diff --git a/README.md b/README.md index 7ecbe7f277..1784c25d8d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Sim Studio Logo + Sim Studio Logo

@@ -15,7 +15,7 @@

- Sim Studio Demo + Sim Studio Demo

## Getting Started diff --git a/apps/docs/lib/utils.ts b/apps/docs/lib/utils.ts index 172f3fd29c..bc3e8ab5ad 100644 --- a/apps/docs/lib/utils.ts +++ b/apps/docs/lib/utils.ts @@ -9,13 +9,23 @@ export function cn(...inputs: ClassValue[]) { } /** - * Get the full URL for a video asset stored in Vercel Blob + * Get the full URL for an asset stored in Vercel Blob or local fallback + * - If CDN is configured (NEXT_PUBLIC_BLOB_BASE_URL), uses CDN URL + * - Otherwise falls back to local static assets served from root path + */ +export function getAssetUrl(filename: string) { + const cdnBaseUrl = process.env.NEXT_PUBLIC_BLOB_BASE_URL + if (cdnBaseUrl) { + return `${cdnBaseUrl}/${filename}` + } + return `/${filename}` +} + +/** + * Get the full URL for a video asset stored in Vercel Blob or local fallback + * - If CDN is configured (NEXT_PUBLIC_BLOB_BASE_URL), uses CDN URL + * - Otherwise falls back to local static assets served from root path */ export function getVideoUrl(filename: string) { - const baseUrl = process.env.NEXT_PUBLIC_BLOB_BASE_URL - if (!baseUrl) { - console.warn('NEXT_PUBLIC_BLOB_BASE_URL not configured, falling back to local path') - return `/${filename}` - } - return `${baseUrl}/${filename}` + return getAssetUrl(filename) } diff --git a/apps/docs/public/api-deployment.mp4 b/apps/docs/public/api-deployment.mp4 deleted file mode 100644 index a04ec8028e..0000000000 Binary files a/apps/docs/public/api-deployment.mp4 and /dev/null differ diff --git a/apps/docs/public/api-redeployment.mp4 b/apps/docs/public/api-redeployment.mp4 deleted file mode 100644 index 161e1f5990..0000000000 Binary files a/apps/docs/public/api-redeployment.mp4 and /dev/null differ diff --git a/apps/docs/public/chat-input.mp4 b/apps/docs/public/chat-input.mp4 deleted file mode 100644 index a89965ea01..0000000000 Binary files a/apps/docs/public/chat-input.mp4 and /dev/null differ diff --git a/apps/docs/public/configure-schedule.mp4 b/apps/docs/public/configure-schedule.mp4 deleted file mode 100644 index f9b8f4fcae..0000000000 Binary files a/apps/docs/public/configure-schedule.mp4 and /dev/null differ diff --git a/apps/docs/public/connections-resp-format.mp4 b/apps/docs/public/connections-resp-format.mp4 deleted file mode 100644 index 30fca8c7e3..0000000000 Binary files a/apps/docs/public/connections-resp-format.mp4 and /dev/null differ diff --git a/apps/docs/public/connections.mp4 b/apps/docs/public/connections.mp4 deleted file mode 100644 index f792a91889..0000000000 Binary files a/apps/docs/public/connections.mp4 and /dev/null differ diff --git a/apps/docs/public/granular-tool-control.mp4 b/apps/docs/public/granular-tool-control.mp4 deleted file mode 100644 index 881deea3b3..0000000000 Binary files a/apps/docs/public/granular-tool-control.mp4 and /dev/null differ diff --git a/apps/docs/public/input-format.mp4 b/apps/docs/public/input-format.mp4 deleted file mode 100644 index de9e879adf..0000000000 Binary files a/apps/docs/public/input-format.mp4 and /dev/null differ diff --git a/apps/docs/public/models.mp4 b/apps/docs/public/models.mp4 deleted file mode 100644 index 060bdb19d1..0000000000 Binary files a/apps/docs/public/models.mp4 and /dev/null differ diff --git a/apps/docs/public/router-model-dropdown.mp4 b/apps/docs/public/router-model-dropdown.mp4 deleted file mode 100644 index 3b0cc7a924..0000000000 Binary files a/apps/docs/public/router-model-dropdown.mp4 and /dev/null differ diff --git a/apps/docs/public/static/examples/started/started-2.mp4 b/apps/docs/public/static/examples/started/started-2.mp4 deleted file mode 100644 index 0947b4973f..0000000000 Binary files a/apps/docs/public/static/examples/started/started-2.mp4 and /dev/null differ diff --git a/apps/docs/public/static/examples/started/started-3.mp4 b/apps/docs/public/static/examples/started/started-3.mp4 deleted file mode 100644 index 8e2456b197..0000000000 Binary files a/apps/docs/public/static/examples/started/started-3.mp4 and /dev/null differ diff --git a/apps/docs/public/static/examples/started/started-4.mp4 b/apps/docs/public/static/examples/started/started-4.mp4 deleted file mode 100644 index 234824f6a5..0000000000 Binary files a/apps/docs/public/static/examples/started/started-4.mp4 and /dev/null differ diff --git a/apps/docs/public/static/examples/started/started-5.mp4 b/apps/docs/public/static/examples/started/started-5.mp4 deleted file mode 100644 index b86829731e..0000000000 Binary files a/apps/docs/public/static/examples/started/started-5.mp4 and /dev/null differ diff --git a/apps/docs/public/static/examples/started/started-6.mp4 b/apps/docs/public/static/examples/started/started-6.mp4 deleted file mode 100644 index 26d726aa63..0000000000 Binary files a/apps/docs/public/static/examples/started/started-6.mp4 and /dev/null differ diff --git a/apps/docs/public/tool-reordering.mp4 b/apps/docs/public/tool-reordering.mp4 deleted file mode 100644 index eda5be717d..0000000000 Binary files a/apps/docs/public/tool-reordering.mp4 and /dev/null differ diff --git a/apps/docs/public/tools.mp4 b/apps/docs/public/tools.mp4 deleted file mode 100644 index b7a0c62bfe..0000000000 Binary files a/apps/docs/public/tools.mp4 and /dev/null differ diff --git a/apps/docs/public/variables-dropdown.mp4 b/apps/docs/public/variables-dropdown.mp4 deleted file mode 100644 index 7c2f104834..0000000000 Binary files a/apps/docs/public/variables-dropdown.mp4 and /dev/null differ diff --git a/apps/docs/public/variables.mp4 b/apps/docs/public/variables.mp4 deleted file mode 100644 index 437be1d551..0000000000 Binary files a/apps/docs/public/variables.mp4 and /dev/null differ diff --git a/apps/docs/public/webhooks.mp4 b/apps/docs/public/webhooks.mp4 deleted file mode 100644 index bba15d188f..0000000000 Binary files a/apps/docs/public/webhooks.mp4 and /dev/null differ diff --git a/apps/sim/app/(landing)/components/sections/blogs.tsx b/apps/sim/app/(landing)/components/sections/blogs.tsx index 48ffb32d17..214b5c1017 100644 --- a/apps/sim/app/(landing)/components/sections/blogs.tsx +++ b/apps/sim/app/(landing)/components/sections/blogs.tsx @@ -1,6 +1,7 @@ 'use client' import { motion } from 'framer-motion' +import { getAssetUrl } from '@/lib/utils' import { BlogCard } from '@/app/(landing)/components/blog-card' function Blogs() { @@ -50,7 +51,7 @@ function Blogs() { date={new Date('25 April 2025')} author='Emir Ayaz' authorRole='Designer' - avatar='/static/sim.png' + avatar={getAssetUrl('static/sim.png')} type='Agents' readTime='6' /> @@ -61,7 +62,7 @@ function Blogs() { date={new Date('25 April 2025')} author='Emir Ayaz' authorRole='Designer' - avatar='/static/sim.png' + avatar={getAssetUrl('static/sim.png')} type='Agents' readTime='6' /> @@ -80,10 +81,10 @@ function Blogs() { date={new Date('25 April 2025')} author='Emir Ayaz' authorRole='Designer' - avatar='/static/sim.png' + avatar={getAssetUrl('static/sim.png')} type='Agents' readTime='6' - image='/static/hero.png' + image={getAssetUrl('static/hero.png')} /> @@ -110,7 +111,7 @@ function Blogs() { date={new Date('25 April 2025')} author='Emir Ayaz' authorRole='Designer' - avatar='/static/sim.png' + avatar={getAssetUrl('static/sim.png')} type='Agents' readTime='6' /> @@ -121,7 +122,7 @@ function Blogs() { date={new Date('25 April 2025')} author='Emir Ayaz' authorRole='Designer' - avatar='/static/sim.png' + avatar={getAssetUrl('static/sim.png')} type='Functions' readTime='6' /> diff --git a/apps/sim/app/(landing)/components/sections/testimonials.tsx b/apps/sim/app/(landing)/components/sections/testimonials.tsx index 465ce9f7aa..fd4fd325e5 100644 --- a/apps/sim/app/(landing)/components/sections/testimonials.tsx +++ b/apps/sim/app/(landing)/components/sections/testimonials.tsx @@ -1,6 +1,7 @@ 'use client' import { motion } from 'framer-motion' +import { getAssetUrl } from '@/lib/utils' import useIsMobile from '@/app/(landing)/components/hooks/use-is-mobile' import { Marquee } from '@/app/(landing)/components/magicui/marquee' @@ -10,63 +11,63 @@ const X_TESTIMONIALS = [ username: '@GithubProjects', viewCount: '90.4k', tweetUrl: 'https://x.com/GithubProjects/status/1906383555707490499', - profileImage: '/twitter/github-projects.jpg', + profileImage: getAssetUrl('twitter/github-projects.jpg'), }, { text: 'A very good looking agent workflow builder ๐Ÿ”ฅ and open source!', username: '@xyflowdev', viewCount: '3,246', tweetUrl: 'https://x.com/xyflowdev/status/1909501499719438670', - profileImage: '/twitter/xyflow.jpg', + profileImage: getAssetUrl('twitter/xyflow.jpg'), }, { text: "๐Ÿšจ BREAKING: This startup just dropped the fastest way to build AI agents.\n\nThis Figma-like canvas to build agents will blow your mind.\n\nHere's why this is the best tool for building AI agents:", username: '@hasantoxr', viewCount: '515k', tweetUrl: 'https://x.com/hasantoxr/status/1912909502036525271', - profileImage: '/twitter/hasan.jpg', + profileImage: getAssetUrl('twitter/hasan.jpg'), }, { text: 'omfggggg this is the zapier of agent building\n\ni always believed that building agents and using ai should not be limited to technical people. i think this solves just that\n\nthe fact that this is also open source makes me so optimistic about the future of building with ai :)))\n\ncongrats @karabegemir & @typingwala !!!', username: '@nizzyabi', viewCount: '6,269', tweetUrl: 'https://x.com/nizzyabi/status/1907864421227180368', - profileImage: '/twitter/nizzy.jpg', + profileImage: getAssetUrl('twitter/nizzy.jpg'), }, { text: "One of the best products I've seen in the space, and the hustle and grind I've seen from @karabegemir and @typingwala is insane. Sim Studio is positioned to build something game-changing, and there's no better team for the job.\n\nCongrats on the launch ๐Ÿš€ ๐ŸŽŠ great things ahead!", username: '@firestorm776', viewCount: '956', tweetUrl: 'https://x.com/firestorm776/status/1907896097735061598', - profileImage: '/twitter/samarth.jpg', + profileImage: getAssetUrl('twitter/samarth.jpg'), }, { text: 'lfgg got access to @simstudioai via @zerodotemail ๐Ÿ˜Ž', username: '@nizzyabi', viewCount: '1,585', tweetUrl: 'https://x.com/nizzyabi/status/1910482357821595944', - profileImage: '/twitter/nizzy.jpg', + profileImage: getAssetUrl('twitter/nizzy.jpg'), }, { text: 'Feels like we\'re finally getting a "Photoshop moment" for AI devsโ€”visual, intuitive, and fast enough to keep up with ideas mid-flow.', username: '@syamrajk', viewCount: '2,643', tweetUrl: 'https://x.com/syamrajk/status/1912911980110946491', - profileImage: '/twitter/syamrajk.jpg', + profileImage: getAssetUrl('twitter/syamrajk.jpg'), }, { text: "๐Ÿšจ BREAKING: This startup just dropped the fastest way to build AI agents.\n\nThis Figma-like canvas to build agents will blow your mind.\n\nHere's why this is the best tool for building AI agents:", username: '@lazukars', viewCount: '47.4k', tweetUrl: 'https://x.com/lazukars/status/1913136390503600575', - profileImage: '/twitter/lazukars.png', + profileImage: getAssetUrl('twitter/lazukars.png'), }, { text: 'The use cases are endless. Great work @simstudioai', username: '@daniel_zkim', viewCount: '103', tweetUrl: 'https://x.com/daniel_zkim/status/1907891273664782708', - profileImage: '/twitter/daniel.jpg', + profileImage: getAssetUrl('twitter/daniel.jpg'), }, ] diff --git a/apps/sim/app/layout.tsx b/apps/sim/app/layout.tsx index b7a4d0b8bf..1f44ae5341 100644 --- a/apps/sim/app/layout.tsx +++ b/apps/sim/app/layout.tsx @@ -4,6 +4,7 @@ import type { Metadata, Viewport } from 'next' import { PublicEnvScript } from 'next-runtime-env' import { env, isTruthy } from '@/lib/env' import { createLogger } from '@/lib/logs/console/logger' +import { getAssetUrl } from '@/lib/utils' import { TelemetryConsentDialog } from '@/app/telemetry-consent-dialog' import '@/app/globals.css' @@ -118,7 +119,7 @@ export const metadata: Metadata = { siteName: 'Sim Studio', images: [ { - url: 'https://simstudio.ai/social/facebook.png', + url: getAssetUrl('social/facebook.png'), width: 1200, height: 630, alt: 'Sim Studio', @@ -130,7 +131,7 @@ export const metadata: Metadata = { title: 'Sim Studio', description: 'Build and deploy AI agents using our Figma-like canvas. Build, write evals, and deploy AI agent workflows that automate workflows and streamline your business processes.', - images: ['https://simstudio.ai/social/twitter.png'], + images: [getAssetUrl('social/twitter.png')], creator: '@simstudioai', site: '@simstudioai', }, @@ -231,7 +232,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) {/* Additional image sources */} - + diff --git a/apps/sim/components/emails/footer.tsx b/apps/sim/components/emails/footer.tsx index b6295913f0..527d14320c 100644 --- a/apps/sim/components/emails/footer.tsx +++ b/apps/sim/components/emails/footer.tsx @@ -1,5 +1,6 @@ import { Container, Img, Link, Section, Text } from '@react-email/components' import { env } from '@/lib/env' +import { getAssetUrl } from '@/lib/utils' interface UnsubscribeOptions { unsubscribeToken?: string @@ -25,13 +26,13 @@ export const EmailFooter = ({ - X + X Discord GitHub Sim Studio Sim Studio Sim Studio