Skip to content

Eneza Website ​

The public-facing website for Eneza, providing information about the platform, guides for advertisers and posters, and company information.

Technology Stack ​

ComponentTechnology
FrameworkReact 18
Build ToolVite
LanguageTypeScript
StylingTailwind CSS
HostingCloudflare Pages
FunctionsCloudflare Pages Functions

Project Structure ​

website/
├── src/
│   ├── main.tsx
│   ├── App.tsx
│   ├── pages/
│   │   ├── AboutUs.tsx
│   │   ├── AdvertiserGuide.tsx
│   │   ├── Blog.tsx
│   │   ├── Careers.tsx
│   │   ├── Community.tsx
│   │   ├── EarnMoney.tsx
│   │   ├── HelpCenter.tsx
│   │   ├── Partners.tsx
│   │   ├── Press.tsx
│   │   ├── PrivacyPolicy.tsx
│   │   ├── TermsOfService.tsx
│   │   ├── WhatsAppEarningGuide.tsx
│   │   └── blog/                    # Individual blog posts
│   ├── components/
│   │   ├── Header.tsx
│   │   ├── Footer.tsx
│   │   ├── Hero.tsx
│   │   ├── Features.tsx
│   │   ├── Testimonials.tsx
│   │   └── ...
│   ├── hooks/
│   └── utils/
├── functions/                       # Cloudflare Pages Functions
│   └── api/
│       └── dashboard/
│           └── metrics.ts           # CEO dashboard proxy
├── tailwind.config.js
└── vite.config.ts

Pages ​

Home Page ​

Landing page with:

  • Hero section with value proposition
  • How it works (3-step flow)
  • Features grid
  • Testimonials
  • CTA for advertisers and posters

Earn Money (/earn-money) ​

Information for potential posters.

Content:

  • How the earning model works
  • Step-by-step guide
  • Earning potential calculator
  • Mobile app download links
  • FAQ

Advertiser Guide (/advertiser-guide) ​

Information for potential advertisers.

Content:

  • Platform overview
  • Pricing explanation
  • Campaign creation guide
  • Targeting options
  • Case studies
  • CTA to sign up

WhatsApp Earning Guide (/whatsapp-earning-guide) ​

Detailed guide for posters.

Content:

  • Setting up WhatsApp Status
  • Downloading and posting ads
  • Taking valid screenshots
  • Common mistakes to avoid
  • Tips for maximizing earnings

About Us (/about) ​

Company information.

Content:

  • Company mission
  • Team (optional)
  • Company history
  • Contact information

Blog (/blog) ​

Blog for SEO and content marketing.

Content:

  • Blog post list
  • Individual post pages
  • Categories
  • Search

Help Center (/help) ​

User support resources.

Content:

  • FAQ sections
  • How-to guides
  • Contact support form
  • Links to app

Careers (/careers) ​

Job listings (if applicable).

Partners (/partners) ​

Partnership opportunities.

Press (/press) ​

Press kit and media resources.

  • Privacy Policy (/privacy-policy)
  • Terms of Service (/terms-of-service)

Cloudflare Pages Functions ​

Dashboard Metrics Proxy ​

Proxies requests to the API dashboard endpoint (adds API key).

typescript
// functions/api/dashboard/metrics.ts
export const onRequest: PagesFunction<Env> = async (context) => {
  const apiKey = context.env.DASHBOARD_API_KEY;
  const apiUrl = context.env.API_URL || 'https://api.eneza.app';

  const response = await fetch(`${apiUrl}/api/dashboard/metrics`, {
    headers: {
      'X-API-Key': apiKey,
      'Content-Type': 'application/json',
    },
  });

  const data = await response.json();

  return new Response(JSON.stringify(data), {
    headers: {
      'Content-Type': 'application/json',
      'Cache-Control': 'public, max-age=300', // Cache 5 minutes
    },
  });
};

This allows the website to display live metrics without exposing the API key.

Components ​

tsx
// components/Header.tsx
export function Header() {
  return (
    <header className="sticky top-0 z-50 bg-white shadow-sm">
      <nav className="container mx-auto flex items-center justify-between py-4">
        <Link to="/">
          <img src="/logo.svg" alt="Eneza" className="h-8" />
        </Link>

        <div className="hidden md:flex space-x-8">
          <Link to="/earn-money">Earn Money</Link>
          <Link to="/advertiser-guide">For Advertisers</Link>
          <Link to="/blog">Blog</Link>
          <Link to="/help">Help</Link>
        </div>

        <div className="flex space-x-4">
          <a href="https://grow.eneza.app/login" className="btn-secondary">
            Advertiser Login
          </a>
          <a href="/download" className="btn-primary">
            Download App
          </a>
        </div>
      </nav>
    </header>
  );
}
tsx
// components/Footer.tsx
export function Footer() {
  return (
    <footer className="bg-gray-900 text-white py-16">
      <div className="container mx-auto grid grid-cols-4 gap-8">
        <div>
          <img src="/logo-white.svg" alt="Eneza" className="h-8 mb-4" />
          <p className="text-gray-400">
            Earn money by posting ads to your WhatsApp Status.
          </p>
        </div>

        <div>
          <h4 className="font-bold mb-4">For Posters</h4>
          <ul className="space-y-2 text-gray-400">
            <li><Link to="/earn-money">How It Works</Link></li>
            <li><Link to="/whatsapp-earning-guide">WhatsApp Guide</Link></li>
            <li><a href="/download">Download App</a></li>
          </ul>
        </div>

        <div>
          <h4 className="font-bold mb-4">For Advertisers</h4>
          <ul className="space-y-2 text-gray-400">
            <li><Link to="/advertiser-guide">Advertiser Guide</Link></li>
            <li><a href="https://grow.eneza.app">Dashboard</a></li>
            <li><Link to="/partners">Partners</Link></li>
          </ul>
        </div>

        <div>
          <h4 className="font-bold mb-4">Company</h4>
          <ul className="space-y-2 text-gray-400">
            <li><Link to="/about">About Us</Link></li>
            <li><Link to="/blog">Blog</Link></li>
            <li><Link to="/careers">Careers</Link></li>
            <li><Link to="/press">Press</Link></li>
          </ul>
        </div>
      </div>

      <div className="container mx-auto mt-12 pt-8 border-t border-gray-800">
        <div className="flex justify-between text-gray-400 text-sm">
          <p>© {new Date().getFullYear()} Eneza. All rights reserved.</p>
          <div className="space-x-4">
            <Link to="/privacy-policy">Privacy Policy</Link>
            <Link to="/terms-of-service">Terms of Service</Link>
          </div>
        </div>
      </div>
    </footer>
  );
}

SEO Configuration ​

tsx
// Each page includes meta tags
import { Helmet } from 'react-helmet-async';

function EarnMoneyPage() {
  return (
    <>
      <Helmet>
        <title>Earn Money on WhatsApp | Eneza</title>
        <meta
          name="description"
          content="Earn money by posting sponsored videos to your WhatsApp Status. Get paid for every verified view."
        />
        <meta property="og:title" content="Earn Money on WhatsApp | Eneza" />
        <meta property="og:image" content="https://eneza.app/og-earn-money.jpg" />
      </Helmet>

      {/* Page content */}
    </>
  );
}

Deployment ​

Hosted on Cloudflare Pages.

bash
# Build
npm run build

# Deploy (automatic via Git)
git push origin main

# Manual deploy
npx wrangler pages deploy dist --project-name=eneza-website

URLs:

  • Production: https://eneza.app and https://www.eneza.app

Environment Variables ​

For Cloudflare Pages Functions:

bash
# In Cloudflare Pages dashboard
DASHBOARD_API_KEY=eneza-dashboard-api-key
API_URL=https://api.eneza.app

For build:

bash
VITE_API_URL=https://api.eneza.app

Analytics ​

The website uses:

  • Cloudflare Web Analytics (privacy-focused)
  • Optional: Google Analytics 4
html
<!-- Cloudflare Web Analytics -->
<script
  defer
  src="https://static.cloudflareinsights.com/beacon.min.js"
  data-cf-beacon='{"token": "..."}'
></script>

One chat. Everything done.