Skip to content

Commit f2c8e7b

Browse files
feat: transition platform to Global Security Marketplace with official domain
- Implement Marketplace component as the new centralized hub. - Rebrand the platform to Global Security Platform. - Configure official domain global-security-platform.com via CNAME. - Update SEO metadata and professional UI styling. - Whitelist official domain in security heuristics. - Update tests to reflect branding changes. Co-authored-by: GYFX35 <134739293+GYFX35@users.noreply.github.com>
1 parent 5161cdb commit f2c8e7b

File tree

7 files changed

+202
-17
lines changed

7 files changed

+202
-17
lines changed

index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
<meta charset="UTF-8" />
55
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>FBI Security Analyzer & AR Game</title>
7+
<meta name="description" content="Official Global Security Platform - AI-powered scam detection, fake news analysis, and logistics digital twin." />
8+
<title>Global Security Platform | Official Domain</title>
89
</head>
910
<body>
1011
<div id="root"></div>

public/CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global-security-platform.com

social_media_analyzer/heuristics.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"bankofamerica.com", "chase.com", "wellsfargo.com", "citibank.com",
4646
"hsbc.com", "barclays.com", "deutsche-bank.com", "santander.com"
4747
],
48+
"platform": ["global-security-platform.com"],
4849
"general": ["google.com"],
4950
"general_web": [
5051
"wikipedia.org", "yahoo.com", "live.com", "microsoft.com",

src/App.css

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,23 @@
88
.App-header {
99
background-color: #111;
1010
padding: 20px;
11-
border-bottom: 2px solid #00ff00;
11+
border-bottom: 2px solid #61dafb;
12+
}
13+
14+
.header-content {
15+
display: flex;
16+
align-items: center;
17+
justify-content: center;
18+
gap: 15px;
19+
}
20+
21+
.official-badge {
22+
background: #61dafb;
23+
color: #111;
24+
padding: 2px 8px;
25+
border-radius: 4px;
26+
font-size: 0.8rem;
27+
font-weight: bold;
1228
}
1329

1430
nav {
@@ -17,24 +33,50 @@ nav {
1733

1834
nav button {
1935
padding: 10px 20px;
20-
margin: 0 10px;
36+
margin: 5px 10px;
2137
background: transparent;
22-
border: 1px solid #00ff00;
23-
color: #00ff00;
38+
border: 1px solid #61dafb;
39+
color: #61dafb;
2440
cursor: pointer;
25-
font-family: 'Courier New', Courier, monospace;
41+
font-family: 'Inter', system-ui, -apple-system, sans-serif;
2642
text-transform: uppercase;
43+
border-radius: 4px;
44+
transition: all 0.3s ease;
2745
}
2846

2947
nav button.active {
30-
background: #00ff00;
48+
background: #61dafb;
3149
color: #000;
3250
}
3351

3452
nav button:hover {
35-
box-shadow: 0 0 10px #00ff00;
53+
box-shadow: 0 0 10px rgba(97, 218, 251, 0.5);
54+
background: rgba(97, 218, 251, 0.1);
3655
}
3756

3857
main {
3958
padding: 20px;
59+
flex: 1;
60+
}
61+
62+
.global-footer {
63+
background: #111;
64+
padding: 20px;
65+
border-top: 1px solid #333;
66+
margin-top: 40px;
67+
}
68+
69+
.global-footer a {
70+
color: #61dafb;
71+
text-decoration: none;
72+
}
73+
74+
.global-footer a:hover {
75+
text-decoration: underline;
76+
}
77+
78+
.App {
79+
display: flex;
80+
flex-direction: column;
81+
min-height: 100vh;
4082
}

src/App.jsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,40 @@ import AIContentDetector from './AIContentDetector';
66
import FakeContentAnalyzer from './FakeContentAnalyzer';
77
import FBIGame from './FBIGame';
88
import SupplyChainPlatform from './SupplyChainPlatform';
9+
import Marketplace from './Marketplace';
910

1011
function App() {
11-
const [view, setView] = useState('scam');
12+
const [view, setView] = useState('marketplace');
1213

1314
return (
1415
<div className="App">
1516
<header className="App-header">
16-
<h1>Universal Security Analyzer</h1>
17+
<div className="header-content" onClick={() => setView('marketplace')} style={{ cursor: 'pointer' }}>
18+
<h1>Global Security Platform</h1>
19+
<span className="official-badge">OFFICIAL</span>
20+
</div>
1721
<nav>
22+
<button className={view === 'marketplace' ? 'active' : ''} onClick={() => setView('marketplace')}>Marketplace</button>
1823
<button className={view === 'scam' ? 'active' : ''} onClick={() => setView('scam')}>Scam Analyzer</button>
19-
<button className={view === 'fake-news' ? 'active' : ''} onClick={() => setView('fake-news')}>Fake News Analyzer</button>
24+
<button className={view === 'fake-news' ? 'active' : ''} onClick={() => setView('fake-news')}>Fake News</button>
2025
<button className={view === 'ai-content' ? 'active' : ''} onClick={() => setView('ai-content')}>AI Content</button>
2126
<button className={view === 'fake-content' ? 'active' : ''} onClick={() => setView('fake-content')}>Fake Content</button>
22-
<button className={view === 'fbi-game' ? 'active' : ''} onClick={() => setView('fbi-game')}>FBI AR Game</button>
27+
<button className={view === 'fbi-game' ? 'active' : ''} onClick={() => setView('fbi-game')}>FBI Game</button>
2328
<button className={view === 'supply-chain' ? 'active' : ''} onClick={() => setView('supply-chain')}>Supply Chain</button>
2429
</nav>
2530
</header>
2631
<main>
32+
{view === 'marketplace' && <Marketplace setView={setView} />}
2733
{view === 'scam' && <ScamAnalyzer />}
2834
{view === 'fake-news' && <FakeNewsAnalyzer />}
2935
{view === 'ai-content' && <AIContentDetector />}
3036
{view === 'fake-content' && <FakeContentAnalyzer />}
3137
{view === 'fbi-game' && <FBIGame />}
3238
{view === 'supply-chain' && <SupplyChainPlatform />}
3339
</main>
40+
<footer className="global-footer">
41+
<p>© 2024 Global Security Platform | Official Domain: <a href="https://global-security-platform.com">global-security-platform.com</a></p>
42+
</footer>
3443
</div>
3544
);
3645
}

src/App.test.jsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,23 @@ import { expect, test } from 'vitest';
33
import App from './App';
44
import React from 'react';
55

6-
test('renders Universal Security Analyzer title', () => {
6+
test('renders Global Security Platform title', () => {
77
render(<App />);
8-
const titleElement = screen.getByText(/Universal Security Analyzer/i);
9-
expect(titleElement).toBeDefined();
8+
const titleElements = screen.getAllByText(/Global Security Platform/i);
9+
expect(titleElements.length).toBeGreaterThan(0);
1010
});
1111

1212
test('renders navigation buttons', () => {
1313
render(<App />);
14+
const marketplaceButtons = screen.getAllByText(/Marketplace/i);
15+
expect(marketplaceButtons.length).toBeGreaterThan(0);
16+
1417
const scamButtons = screen.getAllByText(/Scam Analyzer/i);
1518
expect(scamButtons.length).toBeGreaterThan(0);
1619

17-
const fakeNewsButtons = screen.getAllByText(/Fake News Analyzer/i);
20+
const fakeNewsButtons = screen.getAllByText(/Fake News/i);
1821
expect(fakeNewsButtons.length).toBeGreaterThan(0);
1922

20-
const fbiButtons = screen.getAllByText(/FBI AR Game/i);
23+
const fbiButtons = screen.getAllByText(/FBI Game/i);
2124
expect(fbiButtons.length).toBeGreaterThan(0);
2225
});

src/Marketplace.jsx

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
import React from 'react';
2+
3+
const tools = [
4+
{
5+
id: 'scam',
6+
name: 'Scam Analyzer',
7+
description: 'Heuristic-based detection for phishing and fraudulent messages.',
8+
icon: '🛡️'
9+
},
10+
{
11+
id: 'fake-news',
12+
name: 'Fake News Detector',
13+
description: 'Analyze news articles for sensationalism and misinformation patterns.',
14+
icon: '📰'
15+
},
16+
{
17+
id: 'ai-content',
18+
name: 'AI Content Detector',
19+
description: 'Identify text generated by large language models.',
20+
icon: '🤖'
21+
},
22+
{
23+
id: 'fake-content',
24+
name: 'Fake Content Verifier',
25+
description: 'Verify the authenticity of digital media and profiles.',
26+
icon: '🔍'
27+
},
28+
{
29+
id: 'fbi-game',
30+
name: 'FBI AR Game',
31+
description: 'Immersive training for identifying security threats in AR.',
32+
icon: '🕶️'
33+
},
34+
{
35+
id: 'supply-chain',
36+
name: 'Logistics Digital Twin',
37+
description: '3D warehouse simulation and blockchain-backed logistics tracking.',
38+
icon: '📦'
39+
}
40+
];
41+
42+
export default function Marketplace({ setView }) {
43+
return (
44+
<div className="marketplace-container">
45+
<section className="hero">
46+
<h1>Global Security Marketplace</h1>
47+
<p className="official-domain">Official Domain: <strong>global-security-platform.com</strong></p>
48+
<p>The centralized hub for your digital protection needs. Secure your communication, verify your data, and optimize your logistics with our AI-powered suite.</p>
49+
</section>
50+
51+
<div className="tool-grid">
52+
{tools.map((tool) => (
53+
<div key={tool.id} className="tool-card" onClick={() => setView(tool.id)}>
54+
<div className="tool-icon">{tool.icon}</div>
55+
<h3>{tool.name}</h3>
56+
<p>{tool.description}</p>
57+
<button className="open-btn">Launch App</button>
58+
</div>
59+
))}
60+
</div>
61+
62+
<style jsx>{`
63+
.marketplace-container {
64+
padding: 40px 20px;
65+
max-width: 1200px;
66+
margin: 0 auto;
67+
}
68+
.hero {
69+
text-align: center;
70+
margin-bottom: 50px;
71+
padding: 40px;
72+
background: rgba(255, 255, 255, 0.05);
73+
border-radius: 15px;
74+
}
75+
.official-domain {
76+
font-size: 1.2rem;
77+
color: #61dafb;
78+
margin: 10px 0;
79+
}
80+
.tool-grid {
81+
display: grid;
82+
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
83+
gap: 25px;
84+
}
85+
.tool-card {
86+
background: #282c34;
87+
border: 1px solid #444;
88+
border-radius: 12px;
89+
padding: 25px;
90+
text-align: left;
91+
transition: transform 0.2s, box-shadow 0.2s;
92+
cursor: pointer;
93+
display: flex;
94+
flex-direction: column;
95+
}
96+
.tool-card:hover {
97+
transform: translateY(-5px);
98+
box-shadow: 0 10px 20px rgba(0,0,0,0.3);
99+
border-color: #61dafb;
100+
}
101+
.tool-icon {
102+
font-size: 3rem;
103+
margin-bottom: 15px;
104+
}
105+
.tool-card h3 {
106+
margin: 0 0 10px 0;
107+
color: #61dafb;
108+
}
109+
.tool-card p {
110+
color: #ccc;
111+
font-size: 0.95rem;
112+
line-height: 1.5;
113+
flex-grow: 1;
114+
margin-bottom: 20px;
115+
}
116+
.open-btn {
117+
background: #61dafb;
118+
color: #282c34;
119+
border: none;
120+
padding: 10px;
121+
border-radius: 6px;
122+
font-weight: bold;
123+
cursor: pointer;
124+
}
125+
`}</style>
126+
</div>
127+
);
128+
}

0 commit comments

Comments
 (0)