Introduction

Helix Studio is an ultra-premium, high-performance agency website template designed for creative professionals, developers, and studios. Featuring a sleek, high-contrast monochrome (black & white) aesthetic, the entire codebase has been meticulously structured to ensure it is clean, highly optimized, fully responsive, and completely white-labelable.

DESIGN STANDARD All hardcoded content, labels, text, and keys are centralized into lightweight configuration files, allowing you or your buyers to customize the entire website without digging through React component files.

Folder Anatomy

The distribution directory is highly organized. Below is a map of the essential files and directories you will interact with:

  • 📁 SourceCode/ — The clean, production-ready codebase.
    • 📁 api/ — Serverless backend functions (Vercel/Netlify compatible).
      • 📄 verify-turnstile.ts — Backend Cloudflare Turnstile validation endpoint.
    • 📁 public/ — Static public assets.
      • 📁 projects/[NEW] Drop custom project showcase assets here.
      • 📄 og-main.png — Default social media link preview image.
    • 📁 src/ — React frontend source.
      • 📁 assets/ — Compressed images, local fonts, and icons.
      • 📁 components/ — Modular UI sections (Hero, About, Services, Showcase, etc.).
      • 📁 data/ — Centralized configurations.
        • 📄 config.ts — CENTRAL CONFIG file (Texts, labels, socials, webhooks).
        • 📄 keys.ts — Turnstile frontend site key and backend secret key.
      • 📄 App.tsx — Main application shell, preloader, and security wrapper.
      • 📄 index.css — Core CSS containing smooth scrolls and custom typography.
    • 📄 tailwind.config.js — Tailwind configuration detailing custom color palettes.
    • 📄 vite.config.ts — Advanced bundler configuration featuring automated script obfuscation.

Local Development

To run the website locally on your computer, follow these simple steps:

  1. Open a Terminal

    Navigate to the project root directory (where package.json is located).

  2. Install Dependencies

    Run the package manager installation to download all required frontend libraries:

    BASH
    npm install
  3. Launch Development Server

    Run the hot-reloading development server locally:

    BASH
    npm run dev

    Open your browser and navigate to the local address provided (typically http://localhost:5173).

Production Build

When you are ready to deploy the website live, run the compilation command:

BASH
npm run build

This command compiles and bundles the assets, runs the automated HTML asset-shield configurations, and executes the JavaScript Obfuscator to output a highly secure, optimized, single-bundle folder inside the dist/ directory.

EASY DEPLOYMENT The project is 100% pre-configured for Vercel, Netlify, and Cloudflare Pages. Simply link your repository, and it will auto-detect the Vite build settings and host your serverless API routes effortlessly.

Configuration File

The centralized configuration file is located at:

src/data/config.ts

Open this file in your code editor to customize all texts, lists, and settings. It is exported as a single object named siteConfig.

The website name and navigation text logos are fully customizable:

  • Navbar Brand Text: Edit the navbarLogoText property.
    TYPESCRIPT
    navbarLogoText: "Helix Studio", // Appears in the top-left header
  • Admin Dashboard Logo: Edit the logo text in the navigation section of `src/pages/Admin.tsx` if desired.
  • Image Logo Option: If you prefer an image logo instead of text, open src/components/Navbar.tsx, find {siteConfig.navbarLogoText}, and replace it with an <img> tag referencing your asset (e.g. <img src="/logo.png" class="h-6 w-auto" />).

Discord Webhook

When a client submits the contact collaboration form, their message and requested services are sent instantly to your Discord server via a webhook.

  1. Retrieve Your Discord Webhook

    In Discord, go to Server Settings -> Integrations -> Webhooks -> Create Webhook. Select the channel where you want to receive inquiries and copy the Webhook URL.

  2. Paste the Webhook URL

    In src/data/config.ts, locate the contact block and paste your webhook URL:

    TYPESCRIPT
    contact: {
      title: "CONTACT",
      subtitle: "contact for collaboration",
      discordWebhookUrl: "YOUR_DISCORD_WEBHOOK_URL_HERE", // Paste URL here
      ...
    }
  3. Customize Embed Styles

    You can also edit the bot's display name, the embed header title, and the footer text inside the contactForm block:

    TYPESCRIPT
    contactForm: {
      discordBotName: "Helix Studio Lead Capture",
      discordEmbedTitle: "📩 New Collaboration Request",
      discordEmbedFooter: "Helix Studio Leads",
      ...
    }

Social Links

The social media links displayed in the hero section and contact footer are read from the socials array. Helix Studio automatically resolves and renders the correct icon for supported platforms:

TYPESCRIPT
socials: [
  { platform: "GitHub", url: "https://github.com/helixstudio" },
  { platform: "Instagram", url: "https://instagram.com/helixstudio" },
  { platform: "YouTube", url: "https://youtube.com/helixstudio" },
  { platform: "BuildByBit", url: "https://buildbybit.com/helixstudio" },
  { platform: "Twitter", url: "https://twitter.com/helixstudio" },
  { platform: "LinkedIn", url: "https://linkedin.com/company/helixstudio" }
]
SUPPORTED PLATFORMS The website automatically renders the appropriate vector icon for: GitHub, Instagram, YouTube, BuildByBit, Twitter, and LinkedIn. Add, remove, or reorder items in this array to instantly update the UI.

Contact Details

Update your public contact details in the contact block. These control the email, phone numbers, and support hour notices rendered in the footer cards:

TYPESCRIPT
contact: {
  ...
  email: "hello@helixstudio.xyz",
  phone: "+91 73804 83583",
  phoneRaw: "+917380483583", // Raw numbers (no spaces) for tap-to-call links
  whatsappLabel: "Whatsapp/Sms Us",
  supportHours: "Support available Mon-Sat, 10am-7pm IST.",
  emailFootnote: "We respond to all inquiries within 24 hours.",
  ...
}

SEO & Open Graph

For search engine visibility and dynamic social media link embeds, edit the seo block. These parameters dynamically update browser meta tags at runtime, while the preboot crawler handles static scrapes:

TYPESCRIPT
seo: {
  title: "Helix Studio | Creative Agency & Web Development Studio",
  description: "Helix Studio is a premium creative and development agency specializing in website development...",
  keywords: "Helix Studio, web development, creative agency, SaaS...",
  canonical: "https://helixstudio.xyz/",
  ogTitle: "Helix Studio | Creative Agency & Web Development",
  ogDescription: "Helix Studio is a premium creative and development agency...",
  ogImage: "https://helixstudio.xyz/og-main.png", // Full absolute URL is required for Discord/Twitter embeds
  robots: "index, follow",
}

Design Palette

The website is built using a strict, modern monochrome (black & white) theme, creating a highly professional and high-contrast digital showcase. All primary colors are structured around black background layers, white text layers, and varying shades of gray borders and overlays.

NO EXTRA COLOR CODES Because the theme is strictly black & white, there are no complex neon color settings to balance. Styling is achieved using pure contrast, typography scales, glassmorphic blur filters, and light-beam highlights.

Typography & Fonts

The typography is defined globally in the Tailwind configuration and imported in the main CSS stylesheet.

  1. Google Fonts Imports

    Google Fonts are imported at the top of src/index.css:

    CSS
    @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Outfit:wght@300;400;500;600;700;800;900&family=Syne:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap');

    You can swap these fonts out by updating the import URL and mapping the corresponding names in tailwind.config.js under the fontFamily extend block.

  2. Local Premium Fonts

    Helix Studio includes premium, local font assets (like Deltha, Posterman, and Audiowide) inside `src/assets/`. They are loaded in src/index.css using standard CSS rules:

    CSS
    @font-face {
      font-family: 'Deltha';
      src: url('./assets/Deltha.otf') format('opentype');
      font-display: swap;
    }

Hero Configuration

The hero layout uses a split grid representing agency details. The giant back-faded text and text-marquee triggers can be edited in src/data/config.ts:

TYPESCRIPT
hero: {
  backgroundTitle: "HELIX",   // Large background title
  studioLinkText: "STUDIO",   // Central marquee button link text
  leftColumnDetailLines: [
    "AN ELITE RANGE",
    "OF CREATIVE SERVICES"
  ],
  rightColumnDetailLines: [
    "SYSTEMS ARCHITECTURE",
    "AND INFRASTRUCTURE"
  ]
}

Favicon Setup

To change the browser tab icon (favicon), replace the favicon assets in the public directory:

  • To customize the default icon instantly, open index.html and find the <link rel="icon" ...> tag on line 5. You can replace the inline SVG code with a link to a local PNG:
    HTML
    <link rel="icon" type="image/png" href="/favicon.png" />
    Place your favicon.png directly inside the public/ folder.

How Showcase Works

The project showcase section (Showcase.tsx) displays an interactive, high-inertia sliding 3D card carousel. It pulls project information dynamically from the projects array in src/data/config.ts.

Project Addition Methods

We have simplified project image management to give you two easy options:

This is the recommended method. It allows you to add or modify projects without writing complex import statements at the top of the config file.

  1. Drop Your Image

    Save your project screenshot, rendering, or GIF (preferably compressed as .webp or .jpg, 16:10 aspect ratio) inside the public projects folder:
    public/projects/my-new-project.webp

  2. Reference as a String Path

    In src/data/config.ts, simply append an object to the projects array and reference the image path directly as a string:

    TYPESCRIPT
    import { Compass } from "lucide-react"; // Import any icon you want
    
    export const siteConfig = {
      // ...
      projects: [
        // ... your existing projects
        {
          title: "My Custom Project",
          tagline: "SaaS Application",
          description: "A detailed description of the custom build...",
          tags: ["React", "Node.js", "MongoDB"],
          icon: Compass,
          image: "/projects/my-new-project.webp", // <-- Reference the path directly!
        }
      ]
    }

Use this method if you want Vite to bundle your images directly, run compression steps on them at compile-time, or if you want to use the pre-obfuscated asset structures.

  1. Place the Asset

    Place your image asset inside the local assets directory:
    src/assets/projects/my-project.webp (or .dat)

  2. Import the Image

    At the top of src/data/config.ts, import the asset:

    TYPESCRIPT
    import myCustomProjectImage from "../assets/projects/my-project.webp";
  3. Reference the Variable

    Add the project object to the array, assigning the imported variable to the image property:

    TYPESCRIPT
    projects: [
      {
        title: "My Custom Project",
        tagline: "SaaS Application",
        description: "A detailed description of the custom build...",
        tags: ["React", "TailwindCSS"],
        icon: Compass,
        image: myCustomProjectImage, // <-- Assign the variable here
      }
    ]

Removing Projects

To remove any project from the showcase:

  1. Open src/data/config.ts.
  2. Locate the project object you want to delete inside the projects array.
  3. Delete the object (or comment it out by wrapping it with /* ... */).
  4. Save the file. The carousel will automatically resize and update.

Adding Analytics (Google Analytics & Pixels)

To monitor visitor traffic and conversion rates, you can easily insert tracking scripts into the main document head:

  1. Open index.html inside the project root folder.
  2. Locate the ending </head> tag.
  3. Paste your Google Analytics Global Site Tag (gtag.js) or Facebook Pixel code right before it:
HTML
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

Adding Custom Form Fields

To add new inputs to the contact collaboration form (for example, a Phone Number or a Budget Range field) and map them to your Discord webhook channel:

  1. Add Input Markup in React

    Open src/components/Contact.tsx, locate the form inputs, and add your new HTML input tag:

    TSX
    <input 
      type="text" 
      name="budget" 
      placeholder="Estimated Budget ($)" 
      className="w-full bg-black/40 border border-white/10 p-3 rounded ..."
    />
  2. Update Submission Handler & State

    In the same file, locate the state declarations and ensure your new field is registered. Update the submit handler to capture the value from the form element.

  3. Map to Discord Embed Payload

    Update the request payload sent to the Discord API inside your submission helper. Add a new field object to the embeds[0].fields array:

    TYPESCRIPT
    {
      name: "💰 Estimated Budget",
      value: formData.budget || "Not specified",
      inline: true
    }

Email Notification Fallback

If you prefer receiving client inquiries directly in your email inbox instead of a Discord server channel, you can easily swap the backend service layer:

  • EmailJS Integration: A popular, free service that sends form submissions directly via SMTP without maintaining a backend server. Read the official documentation on EmailJS and replace the fetch(siteConfig.contact.discordWebhookUrl) block in src/components/Contact.tsx with the EmailJS SDK hook:
    TYPESCRIPT
    emailjs.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', e.target, 'YOUR_PUBLIC_KEY')
      .then(() => {
        // Show success banner
      }, (error) => {
        // Show error alert
      });

Turnstile Overview

Cloudflare Turnstile is a smart, non-intrusive CAPTCHA alternative that verifies website visitors are human without presenting annoying visual puzzles. It keeps scraper bots and spam requests out while providing a frictionless experience for legitimate users.

Key Configurations

The Turnstile keys are kept in a dedicated, lightweight configuration file to ensure the backend serverless routes and frontend widgets can load them without bundler conflicts:

src/data/keys.ts

TYPESCRIPT
export const keysConfig = {
  // Cloudflare Turnstile Site Key (Used on the frontend widget)
  turnstileSiteKey: "0x4AAAAAADp5Le-Mp1eOw9-E",

  // Cloudflare Turnstile Secret Key (Used on the backend verification api)
  turnstileSecretKey: "0x4AAAAAADp5LXw0x7G5RDQgxTPQbFoEKAw"
};

Creating Widget Keys

To set up your own free Turnstile widget and get your cryptographic keys, follow these steps:

  1. Log into Cloudflare

    Go to the Cloudflare Dashboard and log in. If you don't have an account, sign up for free.

  2. Add a Turnstile Widget

    On the left-hand sidebar of your dashboard, click on Turnstile -> Add Site.

  3. Configure Settings
    • Site Name: Enter a friendly identifier (e.g. Helix Studio).
    • Domain: Add your production domain name (e.g. helixstudio.xyz).
      Important: Also add localhost and 127.0.0.1 so you can test the site locally!
    • Widget Mode: Select **Managed** (recommended, invisible challenge that only shows a checkmark if threat signature is detected) or **Invisible**.
  4. Copy Keys to keys.ts

    Cloudflare will generate a **Site Key** and a **Secret Key**. Copy and paste them into their respective fields in src/data/keys.ts.

Security Gate Toggles

By default, the Turnstile human verification gate acts as a security splash wall when visitors load the site. You can toggle this gate on or off with a simple modification in the app shell:

src/App.tsx

Activate the security gate to force a Turnstile handshake before rendering any website content.

  1. Import SecurityGate

    Ensure `SecurityGate` is imported at the top of src/App.tsx:

    TYPESCRIPT
    import SecurityGate from './components/SecurityGate';
  2. Create Gate State

    Add a boolean state at the beginning of the `App` component to track if the gate has been passed:

    TYPESCRIPT
    const [gatePassed, setGatePassed] = useState(false);
  3. Render Before App

    Right before the main return statement, insert the gate intercept:

    TYPESCRIPT
    if (!gatePassed) {
      return <SecurityGate onPass={() => setGatePassed(true)} />;
    }

Deactivate the Turnstile gate to allow the website to load immediately without any challenge.

  1. Bypass the Intercept

    In src/App.tsx, locate and comment out or remove the conditional gate block:

    TYPESCRIPT
    // Comment out or remove this block:
    /*
    if (!gatePassed) {
      return <SecurityGate onPass={() => setGatePassed(true)} />;
    }
    */

    The app will now transition directly from the premium preloader to the homepage.

Troubleshooting Guides

  • Error: "Domain not allowed": This occurs if you open the website on a domain name (or local port) that has not been registered in your Cloudflare Turnstile dashboard. Go to Cloudflare, select your widget, and ensure localhost, 127.0.0.1, and your production URL are added to the allowed domains list.
  • Local Development Testing Keys: If you do not have internet access or want to test without setting up a Cloudflare account, you can use Cloudflare's official testing keys, which always pass verification:
    • Site Key (Always Passes): 1x00000000000000000000AA
    • Secret Key (Always Passes): 1x00000000000000000000000000000000
  • Widget Failing to Render: Ensure that you have loaded the Cloudflare script in index.html. It is included in the head tag:
    HTML
    <script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" async defer></script>

Preboot Shield Core

Helix Studio contains an advanced, high-performance security shield embedded directly within the head of index.html. This script executes during the preboot phase (before any React elements load) to protect the site's design assets and code from being scraped or cloned.

Allowed Hostnames

The preboot shield blocks visitors and displays a secure firewall intercept screen if they attempt to run the site offline or from an unauthorized domain. You must configure which domains are allowed to host the site:

Open src/data/config.ts and locate the securityShield object:

TYPESCRIPT
securityShield: {
  title: "SECURE-CORE ENGAGED",
  subtitle: "Sandboxed Copy Detected",
  // ...
  allowedHostnames: ["helixstudio.xyz", "localhost", "127.0.0.1"], // <-- Add your domains here!
  // ...
}
AUTOMATIC BYPASS Common staging and deployment subdomains (such as Vercel previews *.vercel.app, Netlify deployments *.netlify.app, and Cloudflare Pages *.pages.dev) are **automatically allowed** by the shield so your preview links work out of the box without manual configuration!

Threat Interceptions

  1. File Protocol Blocker

    If someone downloads the site assets via tools like HTTrack, Wget, or Curl and double-clicks the local HTML file (running under the file: protocol), the shield immediately overrides the document, locks the thread, and renders a security troll screen.

  2. Headless / Automation Blocker

    The script detects browser automation signatures (such as Puppeteer, Selenium, Playwright, or headless user agents). If identified, it replaces the content with a decoy firewall terminal (FakeLoader.tsx).

  3. Keyboard Shortcut Blocking

    The shield intercepts keyboard shortcuts in the capture phase to block inspections:

    • F12 (Opens developer console)
    • Ctrl + Shift + I / Ctrl + Shift + J (Inspect elements / console)
    • Ctrl + U (View page source code)
    • Ctrl + S (Save page assets locally)

Compile-Time Obfuscation

When you run npm run build, the bundler runs the JavaScript Obfuscator configured in vite.config.ts. This compiler-level security:

  • Minifies and scrambles all variables, functions, and string values into hexadecimal hashes.
  • Injects self-defending code: if a buyer tries to pretty-print or alter the compiled script, it enters an infinite debugger loop and crashes their browser.
  • Encrypts critical strings (like the Discord webhook or keys) with RC4 encryption.
  • Disables source map generation to ensure no original source code is exposed.

Vercel Deployment (Recommended)

Vercel is the optimal hosting platform for Helix Studio, offering instant edge networking and zero-config deployment for Vite and React serverless environments.

  1. Push Code to Git

    Upload your customized SourceCode folder to a private repository on GitHub, GitLab, or Bitbucket.

  2. Import Project in Vercel

    Log into the Vercel Dashboard, click Add New -> Project, and import your repository.

  3. Configure Build Settings

    Vercel will automatically detect the Vite build profile. Keep the default settings:

    • Build Command: npm run build
    • Output Directory: dist
    • Install Command: npm install
  4. Click Deploy

    Click the Deploy button. Vercel will compile the project, apply obfuscation shields, and launch your site live on a free .vercel.app preview subdomain.

Cloudflare Pages Deployment

Cloudflare Pages is an exceptionally fast static hosting platform that integrates natively with Cloudflare Turnstile CAPTCHA routing.

  1. Go to your Cloudflare Dashboard, navigate to Workers & Pages -> Create application -> Pages -> Connect to Git.
  2. Import your project repository.
  3. Under Framework preset, select **Vite**.
  4. Click **Save and Deploy**. Cloudflare will host your site on a secure edge CDN with DDoS protection out of the box.

Custom Domains & SSL Setup

To point a custom domain (like myagency.com) to your deployed static assets:

  1. Register in Hosting Provider

    In your Vercel or Cloudflare Pages project settings, go to Domains, enter your custom domain name, and click Add.

  2. Configure DNS Records

    In your domain registrar dashboard (e.g. Namecheap, GoDaddy, Cloudflare DNS), add the required records:

    • For Apex Domain (e.g. myagency.com): Add an **A Record** pointing to Vercel's IP address: 76.76.21.21.
    • For Subdomain (e.g. www.myagency.com): Add a **CNAME Record** pointing to cname.vercel-dns.com.
  3. Verify SSL

    Your hosting provider will automatically provision a free, auto-renewing Let's Encrypt SSL certificate once DNS propagation completes (usually within 10–30 minutes).

Discord Support

Add and message our official developer directly on Discord for quick feedback and troubleshooting help:

anos.gg

Email Support

Send an email detailing your issue, including any logs or screenshots, and we will respond within 24 hours:

anosistaken@gmail.com

Submit a Support Ticket

Have an issue, bug, or configuration error? Complete this form to send a ticket directly to our private developer channel.

Your Feedback Matters!

Our developer, **anos.gg**, spends hundreds of hours refining, optimizing, and securing this template to ensure it delivers maximum value to agency owners and developers. Your ratings and reviews are incredibly important to us.

They allow us to keep updating the template with new features, maintaining security patches, and providing free direct troubleshooting support on Discord.

QUICK FAVOR Please take 1 minute to leave a **5-star review** on the platform (BuildByBit, CodeCanyon, DevBucks, etc.) where you purchased the website source code. It makes a massive difference for us!