diff --git a/apps/website/src/pages/index.tsx b/apps/website/src/pages/index.tsx
new file mode 100644
index 00000000..73f8ed4c
--- /dev/null
+++ b/apps/website/src/pages/index.tsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import Head from 'next/head';
+import Link from 'next/link';
+
+export default function Home() {
+ return (
+ <>
+
+ Nester — DeFi Yield Optimizer
+
+
+
+
Nester
+
+ Decentralized yield optimization on Stellar
+
+
+
+ Launch App
+
+
+ Security
+
+
+
+ >
+ );
+}
diff --git a/apps/website/src/pages/security.module.css b/apps/website/src/pages/security.module.css
new file mode 100644
index 00000000..e2ed2157
--- /dev/null
+++ b/apps/website/src/pages/security.module.css
@@ -0,0 +1 @@
+/* Security page specific styles if needed */
diff --git a/apps/website/src/pages/security.test.tsx b/apps/website/src/pages/security.test.tsx
new file mode 100644
index 00000000..acb7d8f8
--- /dev/null
+++ b/apps/website/src/pages/security.test.tsx
@@ -0,0 +1,49 @@
+import React from 'react';
+import { render, screen } from '@testing-library/react';
+import SecurityPage from './security';
+
+describe('SecurityPage', () => {
+ it('renders without errors', () => {
+ render();
+ expect(screen.getByText('Security & Audit')).toBeInTheDocument();
+ });
+
+ it('displays audit status as Pending', () => {
+ render();
+ expect(screen.getByText('Pending')).toBeInTheDocument();
+ });
+
+ it('lists all contracts in scope', () => {
+ render();
+ const contracts = [
+ 'vault',
+ 'vault_token',
+ 'allocation_strategy',
+ 'yield_registry',
+ 'nester',
+ 'treasury',
+ 'timelock',
+ ];
+ contracts.forEach((contract) => {
+ expect(screen.getByText(contract)).toBeInTheDocument();
+ });
+ });
+
+ it('links to the threat model document', () => {
+ render();
+ const link = screen.getByText('threat model document');
+ expect(link).toBeInTheDocument();
+ expect(link.closest('a')).toHaveAttribute('href', '/AUDIT_THREAT_MODEL.md');
+ });
+
+ it('has a bug bounty section with contact email', () => {
+ render();
+ expect(screen.getByText('Bug Bounty')).toBeInTheDocument();
+ const emailLink = screen.getByText('security@nester.finance');
+ expect(emailLink).toBeInTheDocument();
+ expect(emailLink.closest('a')).toHaveAttribute(
+ 'href',
+ 'mailto:security@nester.finance'
+ );
+ });
+});
diff --git a/apps/website/src/pages/security.tsx b/apps/website/src/pages/security.tsx
new file mode 100644
index 00000000..4bc7e457
--- /dev/null
+++ b/apps/website/src/pages/security.tsx
@@ -0,0 +1,119 @@
+import React from 'react';
+import Head from 'next/head';
+import Link from 'next/link';
+
+const contractsInScope = [
+ 'vault',
+ 'vault_token',
+ 'allocation_strategy',
+ 'yield_registry',
+ 'nester',
+ 'treasury',
+ 'timelock',
+];
+
+export default function SecurityPage() {
+ return (
+ <>
+
+ Security & Audit | Nester
+
+
+
+
+
+ Security & Audit
+
+
+ {/* Smart Contract Audit Section */}
+
+
+ Smart Contract Audit
+
+
+
+ Pending
+
+
+ Audit scheduled — details will be announced once confirmed with
+ the auditor.
+
+
+
+
+ Threat Model
+
+
+ Review our{' '}
+
+ threat model document
+ {' '}
+ for a detailed analysis of potential risks and mitigations.
+
+
+
+
+ Contracts in Scope
+
+
+ {contractsInScope.map((contract) => (
+
{contract}
+ ))}
+
+
+
+
+ {/* Bug Bounty Section */}
+
+
+ Bug Bounty
+
+
+ We encourage responsible disclosure of security vulnerabilities.
+ If you discover a bug or security issue in any of our smart
+ contracts or infrastructure, please report it privately.
+