برنامه نویسی

چگونه یک صفحه فرود هوش مصنوعی سینمایی با GSAP، Canvas API و Next.js ساختم

غواصی عمیق در ساخت Digital Rain: پیج لندینگ سینمایی هوش مصنوعی

این مقاله فرآیند ساخت «باران دیجیتال» را توضیح می‌دهد؛ یک قالب پیج لندینگ هوش مصنوعی متمایز با انیمیشن باران نمادهای ریاضی، UI شیشه مایع (Glassmorphism) و تعاملات اسکرول GSAP. هدف، فرار از الگوی تکراری «قهرمان-ویژگی‌ها-قیمت» و خلق تجربه‌ای بصری است که حس استارتاپ با بودجه بالا را القا کند.

تکنولوژی‌ها: Next.js 15، Tailwind CSS، GSAP (ScrollTrigger) و Canvas API برای موتور انیمیشن سفارشی.

موتور باران دیجیتال: برخلاف ماتریکس کلاسیک، از نمادهای ریاضی (∑، π، ∫، ∞…) استفاده می‌شود. حلقه انیمیشن در Canvas با fillRect شبه‌شفاف رد پاها ایجاد می‌کند. نوآوری کلیدی، واکنش سطح مایع است: نمادهای نزدیک موس با محاسبه فاصله اقلیدسی، درخشش و شفافیت بالا می‌یابند که حس تعامل فیزیکی می‌دهد.

شیشه مایع پیشرفته: با backdrop-filter: blur(20px)، پس‌زمینه بسیار تیره (rgba(255,255,255,0.05))، حاشیه درونی درخشان و سایه عمیق، جلوه‌ای واقعی و پرمیوم خلق شده، نه شیشه‌مورفیسم معمولی ارزان.

انیمیشن‌های GSAP: استفاده از stagger: 0.15 برای ظهور ترتیبی کارت‌ها، به همراه ScrollTrigger، تجربه اسکرول روان و سینمایی فراهم می‌کند.

معماری قابل توسعه: تمام متون، رنگ‌ها و داده‌های قیمت‌گذاری در یک فایل config.ts متمرکز شده‌اند تا سفارشی‌سازی در دقیقه‌ها امکان‌پذیر باشد.

نتیجه: یک قالب کامل (قهرمان، ویژگی‌ها، قیمت، FAQ، CTA) با TypeScript و مستندات، در گامرود موجود است..demo: og-ai-next.vercel.app

غواصی عمیق در ساخت Digital Rain – یک الگوی صفحه فرود هوش مصنوعی سینمایی با نمادهای ریاضی در حال سقوط، رابط کاربری شیشه مایع، و انیمیشن‌های اسکرول GSAP با استفاده از Next.js 15 و Tailwind CSS.

بیشتر صفحات فرود هوش مصنوعی یکسان به نظر می رسند.

بخش قهرمان. ویژگی های شبکه جدول قیمت. پاورقی.

من می‌خواستم چیزی متفاوت بسازم – چیزی که بازدیدکنندگان را وادار می‌کند از پیمایش دست بردارند و بگویند “وای، این چیست؟”

نتیجه این است باران دیجیتال – صفحه فرود هوش مصنوعی سینمایی با نمادهای ریاضی در حال سقوط، رابط کاربری شیشه مایع، و انیمیشن های اسکرول مجهز به GSAP.

این دقیقاً نحوه ساخت آن است.


🎬 چشم انداز

این مفهوم از ماتریکس – آن افکت نمادین کد سبز در حال سقوط – ناشی شد. اما به جای کاراکترهای تصادفی، می‌خواستم نمادهای ریاضی سقوط کنند و به یک سطح مایع شبیه‌سازی شده واکنش نشان دهند.

هدف ساده بود: کاری کنید که محصول هوش مصنوعی شما از همان روز اول احساس یک استارتاپ با بودجه داشته باشد.

دمو زنده: https://og-ai-next.vercel.app/


🛠 Tech Stack

  • Next.js 15 – روتر برنامه، TypeScript
  • Tailwind CSS – یک ظاهر طراحی شده و شکل شیشه ای
  • GSAP – اسکرول انیمیشن ها و ریز تعاملات
  • Canvas API – موتور انیمیشن باران دیجیتال سفارشی
  • فیلترهای SVG – شبیه سازی سطح مایع

🌧 ساخت انیمیشن باران دیجیتال

قلب قالب موتور سفارشی انیمیشن باران است. در اینجا نحوه کار آن آمده است:

مرحله 1 – بوم را تنظیم کنید

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2 – مجموعه نمادها را تعریف کنید

به جای کاراکترهای تصادفی، از نمادهای ریاضی برای احساس برتر استفاده کردم:

const symbols = [
  '', 'π', '', '', '', 'Ω', 'λ', 'φ',
  '', 'θ', 'α', 'β', 'γ', 'δ', 'ε', 'ζ',
  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
];
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 3 – ستون های باران را ایجاد کنید

const fontSize = 14;
const columns = Math.floor(canvas.width / fontSize);
const drops: number[] = new Array(columns).fill(1);

function drawRain() {
  // Fade effect — creates trail
  ctx.fillStyle = 'rgba(0, 0, 0, 0.05)';
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  // Draw symbols
  ctx.fillStyle = '#14b575'; // brand green
  ctx.font = `${fontSize}px monospace`;

  drops.forEach((drop, i) => {
    const symbol = symbols[Math.floor(Math.random() * symbols.length)];
    const x = i * fontSize;
    const y = drop * fontSize;

    ctx.fillStyle = `rgba(20, 181, 117, ${Math.random() * 0.8 + 0.2})`;
    ctx.fillText(symbol, x, y);

    // Reset drop randomly
    if (y > canvas.height && Math.random() > 0.975) {
      drops[i] = 0;
    }
    drops[i]++;
  });
}

// Animate at 30fps
setInterval(drawRain, 33);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 4 – واکنش سطح مایع را اضافه کنید

این بخشی است که به آن احساس تعامل می دهد. هنگامی که ماوس حرکت می کند، نمادهای نزدیک واکنش نشان می دهند:

let mouseX = 0;
let mouseY = 0;

window.addEventListener('mousemove', (e) => {
  mouseX = e.clientX;
  mouseY = e.clientY;
});

// In drawRain function — add proximity effect
drops.forEach((drop, i) => {
  const x = i * fontSize;
  const y = drop * fontSize;

  const distance = Math.sqrt(
    Math.pow(x - mouseX, 2) + Math.pow(y - mouseY, 2)
  );

  // Symbols near cursor glow brighter
  const opacity = distance < 100 
    ? 1.0 
    : Math.random() * 0.8 + 0.2;

  ctx.fillStyle = `rgba(20, 181, 117, ${opacity})`;
  ctx.fillText(symbol, x, y);
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


✨ ساخت رابط کاربری شیشه مایع

Glassmorphism در همه جا وجود دارد، اما اکثر پیاده سازی ها ارزان به نظر می رسند. در اینجا نحوه ایجاد ظاهری عالی آورده شده است:

.glass-card {
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255, 255, 255, 0.1);
  box-shadow: 
    0 8px 32px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تفاوت‌های کلیدی با شیشه‌مورفیسم ارزان:

  • تیرگی پس زمینه بسیار کم (0.05 نه 0.3)
  • تاری بالاتر (20 پیکسل نه 10 پیکسل)
  • درخشش حاشیه بالایی داخلی (سایه درونی)
  • پس زمینه تیره پایه بنابراین تاری در واقع نشان می دهد

⚡ انیمیشن های اسکرول GSAP

GSAP انیمیشن های اسکرول را روان و عملکردی می کند. در اینجا الگوی مورد استفاده من برای هر بخش آمده است:

import { gsap } from 'gsap';
import { ScrollTrigger } from 'gsap/ScrollTrigger';

gsap.registerPlugin(ScrollTrigger);

// Fade up animation on scroll
gsap.fromTo('.feature-card', 
  { 
    opacity: 0, 
    y: 60 
  },
  {
    opacity: 1,
    y: 0,
    duration: 0.8,
    stagger: 0.15,
    ease: 'power3.out',
    scrollTrigger: {
      trigger: '.features-section',
      start: 'top 80%',
      end: 'bottom 20%',
    }
  }
);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را stagger: 0.15 چیزی است که باعث می شود چندین کارت به جای همه در یک زمان متحرک شوند. این جزئیات کوچک باعث می‌شود که کل چیز بسیار صیقلی‌تر به نظر برسد.


🧊 ساختار بخش قهرمان

export function Hero() {
  return (
    <section className="relative min-h-screen flex items-center">
      {/* Canvas background */}
      <canvas 
        ref={canvasRef}
        className="absolute inset-0 w-full h-full opacity-40"
      />

      {/* Gradient overlay */}
      <div className="absolute inset-0 bg-gradient-to-b 
        from-transparent via-black/20 to-black/80" 
      />

      {/* Content */}
      <div className="relative z-10 max-w-6xl mx-auto px-6">
        <div className="glass-card p-8 rounded-2xl max-w-2xl">
          <h1 className="text-5xl font-bold text-white mb-4">
            Build Smarter Workflows with AI
          h1>
          <p className="text-slate-300 text-lg mb-8">
            OG-AI helps teams automate repetitive tasks
          p>
          <button className="bg-brand-500 text-black 
            px-8 py-4 rounded-xl font-semibold">
            Get Started
          button>
        div>
      div>
    section>
  );
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


⚙️ یک فایل پیکربندی برای کنترل همه آنها

بهترین تصمیمی که گرفتم این بود که تمام سفارشی سازی ها را در یک فایل پیکربندی واحد قرار دهم:

// src/config.ts
export const config = {
  brand: {
    name: "Your AI Product",
    tagline: "Build Smarter Workflows with AI",
    color: "#14b575",
  },
  hero: {
    title: "Build Smarter Workflows with AI",
    subtitle: "Automate tasks, generate content, unlock insights",
    cta: "Get Started Free",
  },
  nav: {
    links: ["Features", "How It Works", "Pricing", "Testimonials", "FAQ"],
  },
  pricing: {
    monthly: [
      { name: "Starter", price: 9, features: ["100 generations", "API access"] },
      { name: "Pro", price: 29, features: ["Unlimited", "Priority support"] },
    ]
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بدون حفاری قطعات فقط این فایل را آپدیت کنید و همه چیز تغییر می کند.


📦 آنچه که قالب نهایی شامل می شود

  • موتور سفارشی انیمیشن باران دیجیتال (Canvas API)
  • انیمیشن های اسکرول GSAP در سراسر
  • اجزای رابط کاربری شیشه ای مایع
  • قهرمان، ویژگی‌ها، نحوه کارکرد، قیمت‌گذاری، توصیفات، پرسش‌های متداول، بخش‌های CTA
  • هر دو نسخه Next.js 15 و React
  • TypeScript در سراسر
  • راه اندازی Tailwind CSS
  • مستندات کامل

🎯 نتیجه

نسخه ی نمایشی برای خود صحبت می کند: https://og-ai-next.vercel.app/

اگر در حال ساختن یک محصول هوش مصنوعی هستید و می‌خواهید صفحه فرود شما از همان روز اول مانند یک استارت‌آپ با بودجه مالی باشد – من این را به قالبی تبدیل کردم که می‌توانید ظرف چند ساعت آن را بگیرید و سفارشی کنید.

دریافت قالب: https://pixelanas.gumroad.com/l/digital-rain


💭 آنچه یاد گرفتم

ساختن این به من آموخت که تفاوت بین یک صفحه فرود خوب و یک صفحه سینمایی این است:

  1. یک تصویر فراموش نشدنی – انیمیشن باران قلاب است
  2. خویشتن داری – همه چیز نیازی به زنده کردن ندارد
  3. ابتدا عملکرد – Canvas + requestAnimationFrame انیمیشن های CSS را برای جلوه های پیچیده شکست می دهد
  4. احساسات بر اطلاعات – مردم احساسات را می خرند، نه ویژگی ها

اگر در مورد هر قسمت از اجرا سوالی دارید، در نظرات مطرح کنید. خوشحالم که در هر بخش عمیق تر می رویم.


🔗 نسخه نمایشی → https://og-ai-next.vercel.app/
🛒 آن را دریافت کنید → https://pixelanas.gumroad.com/l/digitalrain

ساخته شده توسط Anas — توسعه دهنده تمام پشته متخصص در Next.js، انیمیشن ها و رابط کاربری ممتاز. مرا در X پیدا کنید: @pixelanas

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا