Welcome & Setup
Welcome to the Helix Studio customization handbook. Learn how the project is organized and how to run, edit, and build the website.
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.
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.
- 📁 projects/ —
- 📁 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.
- 📁 api/ — Serverless backend functions (Vercel/Netlify compatible).
Local Development
To run the website locally on your computer, follow these simple steps:
-
Open a Terminal
Navigate to the project root directory (where
package.jsonis located). -
Install Dependencies
Run the package manager installation to download all required frontend libraries:
BASHnpm install -
Launch Development Server
Run the hot-reloading development server locally:
BASHnpm run devOpen 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:
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.
Central Config
Everything on the Helix Studio website is controlled by a single configuration file. Learn how to edit texts, logos, socials, and contact information.
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.
Website Name & Logo
The website name and navigation text logos are fully customizable:
- Navbar Brand Text: Edit the
navbarLogoTextproperty.TYPESCRIPTnavbarLogoText: "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.
-
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.
-
Paste the Webhook URL
In
src/data/config.ts, locate thecontactblock and paste your webhook URL:TYPESCRIPTcontact: { title: "CONTACT", subtitle: "contact for collaboration", discordWebhookUrl: "YOUR_DISCORD_WEBHOOK_URL_HERE", // Paste URL here ... } -
Customize Embed Styles
You can also edit the bot's display name, the embed header title, and the footer text inside the
contactFormblock:TYPESCRIPTcontactForm: { 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:
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" }
]
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:
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:
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",
}
Visuals & Styling
Helix Studio uses a premium black & white (monochrome) design system. Learn how to customize the typography, layout details, and visual elements.
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.
Typography & Fonts
The typography is defined globally in the Tailwind configuration and imported in the main CSS stylesheet.
-
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.jsunder thefontFamilyextend block. -
Local Premium Fonts
Helix Studio includes premium, local font assets (like
Deltha,Posterman, andAudiowide) inside `src/assets/`. They are loaded insrc/index.cssusing 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:
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.htmland find the<link rel="icon" ...>tag on line 5. You can replace the inline SVG code with a link to a local PNG:Place yourHTML<link rel="icon" type="image/png" href="/favicon.png" />favicon.pngdirectly inside thepublic/folder.
Managing Projects
Show off your best work. Learn how to add new projects to the sliding showcase, remove existing ones, and choose the easiest asset-loading workflow.
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.
-
Drop Your Image
Save your project screenshot, rendering, or GIF (preferably compressed as
.webpor.jpg, 16:10 aspect ratio) inside the public projects folder:public/projects/my-new-project.webp -
Reference as a String Path
In
src/data/config.ts, simply append an object to theprojectsarray and reference the image path directly as a string:TYPESCRIPTimport { 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.
-
Place the Asset
Place your image asset inside the local assets directory:
src/assets/projects/my-project.webp(or.dat) -
Import the Image
At the top of
src/data/config.ts, import the asset:TYPESCRIPTimport myCustomProjectImage from "../assets/projects/my-project.webp"; -
Reference the Variable
Add the project object to the array, assigning the imported variable to the
imageproperty:TYPESCRIPTprojects: [ { 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:
- Open
src/data/config.ts. - Locate the project object you want to delete inside the
projectsarray. - Delete the object (or comment it out by wrapping it with
/* ... */). - Save the file. The carousel will automatically resize and update.
Advanced Customization
Learn how to extend Helix Studio's features, integrate custom tracking, add new contact form inputs, and configure email fallbacks.
Adding Analytics (Google Analytics & Pixels)
To monitor visitor traffic and conversion rates, you can easily insert tracking scripts into the main document head:
- Open
index.htmlinside the project root folder. - Locate the ending
</head>tag. - Paste your Google Analytics Global Site Tag (gtag.js) or Facebook Pixel code right before it:
<!-- 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:
-
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 ..." /> -
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.
-
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].fieldsarray: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 insrc/components/Contact.tsxwith the EmailJS SDK hook:TYPESCRIPTemailjs.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', e.target, 'YOUR_PUBLIC_KEY') .then(() => { // Show success banner }, (error) => { // Show error alert });
Cloudflare Turnstile
Protect your infrastructure. Configure, enable, or disable Cloudflare's invisible, user-friendly CAPTCHA alternative.
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
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:
-
Log into Cloudflare
Go to the Cloudflare Dashboard and log in. If you don't have an account, sign up for free.
-
Add a Turnstile Widget
On the left-hand sidebar of your dashboard, click on Turnstile -> Add Site.
-
Configure Settings
- Site Name: Enter a friendly identifier (e.g.
Helix Studio). - Domain: Add your production domain name (e.g.
helixstudio.xyz).
Important: Also addlocalhostand127.0.0.1so 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**.
- Site Name: Enter a friendly identifier (e.g.
-
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.
-
Import SecurityGate
Ensure `SecurityGate` is imported at the top of
src/App.tsx:TYPESCRIPTimport SecurityGate from './components/SecurityGate'; -
Create Gate State
Add a boolean state at the beginning of the `App` component to track if the gate has been passed:
TYPESCRIPTconst [gatePassed, setGatePassed] = useState(false); -
Render Before App
Right before the main return statement, insert the gate intercept:
TYPESCRIPTif (!gatePassed) { return <SecurityGate onPass={() => setGatePassed(true)} />; }
Deactivate the Turnstile gate to allow the website to load immediately without any challenge.
-
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
- Site Key (Always Passes):
- 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>
Security & Protection
Helix Studio features robust anti-scraping, anti-mirroring, and anti-inspection shields. Learn how to configure allowed hostnames and protect your assets.
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:
securityShield: {
title: "SECURE-CORE ENGAGED",
subtitle: "Sandboxed Copy Detected",
// ...
allowedHostnames: ["helixstudio.xyz", "localhost", "127.0.0.1"], // <-- Add your domains here!
// ...
}
*.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
-
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. -
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). -
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.
Deployment Guide
Deploy your agency template live. Learn how to configure 1-click deployment on Vercel, Netlify, and Cloudflare, and map custom domain names.
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.
-
Push Code to Git
Upload your customized
SourceCodefolder to a private repository on GitHub, GitLab, or Bitbucket. -
Import Project in Vercel
Log into the Vercel Dashboard, click Add New -> Project, and import your repository.
-
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
- Build Command:
-
Click Deploy
Click the Deploy button. Vercel will compile the project, apply obfuscation shields, and launch your site live on a free
.vercel.apppreview subdomain.
Cloudflare Pages Deployment
Cloudflare Pages is an exceptionally fast static hosting platform that integrates natively with Cloudflare Turnstile CAPTCHA routing.
- Go to your Cloudflare Dashboard, navigate to Workers & Pages -> Create application -> Pages -> Connect to Git.
- Import your project repository.
- Under Framework preset, select **Vite**.
- 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:
-
Register in Hosting Provider
In your Vercel or Cloudflare Pages project settings, go to Domains, enter your custom domain name, and click Add.
-
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 tocname.vercel-dns.com.
- For Apex Domain (e.g.
-
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).
Support & Help
Need assistance with your setup? We are here to help. Reach out directly or submit a ticket through the form below.
Discord Support
Add and message our official developer directly on Discord for quick feedback and troubleshooting help:
Email Support
Send an email detailing your issue, including any logs or screenshots, and we will respond within 24 hours:
Submit a Support Ticket
Have an issue, bug, or configuration error? Complete this form to send a ticket directly to our private developer channel.
Leave a 5-Star Review
Did Helix Studio help you launch your website or deliver an elite project to a client? We would love to hear your feedback!
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.