Skip to content

Commit b4bfaf9

Browse files
committed
GDPR Compliance
1 parent f575e61 commit b4bfaf9

File tree

8 files changed

+404
-19
lines changed

8 files changed

+404
-19
lines changed

content/_index.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,36 @@ date: 2023-01-01T00:00:00Z
44
---
55

66
# Welcome to CodeFryDev
7-
Hello World
7+
8+
Your ultimate destination for **free online tools, games, AI applications, and creative resources**. CodeFryDev provides a comprehensive collection of web-based utilities designed to enhance your productivity, creativity, and digital experience—all without requiring any signup or installation.
9+
10+
## What We Offer
11+
12+
### 🎨 Creative & Assets
13+
Explore our extensive collection of creative resources including digital art tools, text utilities, wallpapers, 3D models, and Android assets. Whether you're a designer, developer, or creative enthusiast, find the assets you need to bring your projects to life.
14+
15+
### 🛠️ Tools & Utilities
16+
Boost your productivity with our suite of free online tools. From AI-powered applications and prompt libraries to CSV processors, JSON formatters, meta tag generators, and weather services—we've got the utilities you need for everyday tasks and professional projects.
17+
18+
### 🎮 Games & Fun
19+
Take a break and enjoy our collection of engaging web-based games. Play classic favorites like Wordle, Snake, and Chain Reaction, or discover new challenges. All games are free to play directly in your browser—no downloads required.
20+
21+
### 🤖 AI Tools
22+
Harness the power of artificial intelligence with our AI-powered tools. Create memes, summarize websites, generate social media content, take visual notes, and more. Our AI tools are designed to be intuitive and accessible, helping you work smarter and faster.
23+
24+
### 🎨 Design Lab
25+
Unleash your creativity with our design tools and resources. Access professional design utilities, data visualization tools, music visualizers, and creative applications that inspire and empower your design workflow.
26+
27+
## Why Choose CodeFryDev?
28+
29+
- **100% Free**: All tools and games are completely free to use
30+
- **No Signup Required**: Start using our tools immediately—no registration needed
31+
- **No Installation**: Everything runs in your web browser
32+
- **Regular Updates**: We continuously add new tools and features
33+
- **Privacy-Focused**: Your data stays private and secure
34+
35+
## Get Started
36+
37+
Browse our categories above to discover tools, games, and resources tailored to your needs. Use the search function to quickly find specific utilities, or explore our [AI tools](/ai), [games collection](/games), and [design lab](/designlab) for curated experiences.
38+
39+
Ready to explore? Start browsing our collection of free online tools and resources today!

hugo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ title = 'Code Fry Dev'
1414
[params]
1515
paginate = 10 # Number of posts per page
1616
env = "production"
17+
google_analytics_id = "G-VM01Q3R43D"
1718

1819
[assets]
1920
favicon = "favicon.ico"

layouts/404.html

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,23 @@
22
<html lang="en">
33
<head>
44

5-
<!-- Google Tag Manager -->
6-
<!-- Google tag (gtag.js) -->
7-
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VM01Q3R43D"></script>
8-
<script>
9-
window.dataLayer = window.dataLayer || [];
10-
function gtag(){dataLayer.push(arguments);}
11-
gtag('js', new Date());
12-
gtag('config', 'G-VM01Q3R43D');
13-
</script>
5+
{{- /* Preconnect to Google Analytics for improved performance */ -}}
6+
{{- /* Note: Google Analytics will only load after user consent via cookie-consent.js */ -}}
7+
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
8+
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
149
<meta charset="UTF-8">
1510
<meta name="viewport" content="width=device-width, initial-scale=1.0">
11+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
1612
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
1713
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
1814
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
1915
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#28966a">
2016
<meta name="msapplication-TileColor" content="#28966a">
2117
<meta name="theme-color" content="#28966a">
22-
<title>Code fried</title>
18+
<title>404 - Page Not Found | CodeFryDev</title>
19+
<meta name="description" content="The page you're looking for doesn't exist. Return to CodeFryDev homepage to explore our free online tools, games, AI apps, and design resources.">
20+
<meta name="robots" content="noindex, follow">
21+
<link rel="canonical" href="{{ .Site.BaseURL }}404.html">
2322
<link rel="stylesheet" href="/css/internal.css">
2423
<link rel="stylesheet" href="/css/theme.css">
2524
<style>
@@ -67,6 +66,26 @@
6766
}
6867
}
6968
</style>
69+
{{- /* Structured data for 404 page */ -}}
70+
<script type="application/ld+json">
71+
{
72+
"@context": "https://schema.org",
73+
"@type": "WebPage",
74+
"name": "404 - Page Not Found",
75+
"description": "The page you're looking for doesn't exist. Return to CodeFryDev homepage to explore our free online tools, games, AI apps, and design resources.",
76+
"url": "{{ .Site.BaseURL }}404.html",
77+
"mainEntity": {
78+
"@type": "ErrorPage",
79+
"name": "404 Error",
80+
"description": "Page not found"
81+
},
82+
"isPartOf": {
83+
"@type": "WebSite",
84+
"name": "{{ .Site.Title }}",
85+
"url": "{{ .Site.BaseURL }}"
86+
}
87+
}
88+
</script>
7089
</head>
7190
<body>
7291
<div id="main">
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{{- /* Cookie Consent Banner for GDPR/CCPA Compliance */ -}}
2+
{{- $gaId := .Site.Params.google_analytics_id | default "" -}}
3+
{{- if not $gaId -}}
4+
{{- warnf "google_analytics_id not set in hugo.toml params. Please configure it." -}}
5+
{{- $gaId = "G-VM01Q3R43D" -}}
6+
{{- end -}}
7+
<div id="cookie-consent-banner" class="cookie-consent-banner" role="dialog" aria-labelledby="cookie-consent-title" aria-live="polite" style="display: none;" data-ga-id="{{ $gaId }}">
8+
<div class="cookie-consent-content">
9+
<div class="cookie-consent-text">
10+
<h2 id="cookie-consent-title" class="cookie-consent-title">Cookie Consent</h2>
11+
<p class="cookie-consent-message">
12+
We use cookies to enhance your browsing experience and analyze site traffic. By clicking "Accept", you consent to our use of cookies.
13+
<a href="/tncprivacy" class="cookie-consent-link">Learn more about our privacy policy</a>.
14+
</p>
15+
</div>
16+
<div class="cookie-consent-buttons">
17+
<button type="button" id="cookie-consent-accept" class="cookie-consent-button cookie-consent-accept" aria-label="Accept cookies">
18+
Accept
19+
</button>
20+
<button type="button" id="cookie-consent-decline" class="cookie-consent-button cookie-consent-decline" aria-label="Decline cookies">
21+
Decline
22+
</button>
23+
</div>
24+
</div>
25+
</div>
26+
<link rel="stylesheet" href="/css/cookie-consent.css">
27+
<script src="/js/cookie-consent.js" defer></script>

layouts/partials/footer.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,6 @@ <h3 class="footer-nav-title">Company</h3>
6363
</div>
6464
</div>
6565
</div>
66-
</footer>
66+
</footer>
67+
{{- /* Cookie Consent Banner */ -}}
68+
{{ partial "cookie-consent.html" . }}

layouts/partials/googlegtag.html

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VM01Q3R43D" type="text/javascript"></script>
2-
<script>
3-
window.dataLayer = window.dataLayer || [];
4-
function gtag() { dataLayer.push(arguments); }
5-
gtag('js', new Date());
6-
gtag('config', 'G-VM01Q3R43D');
7-
</script>
1+
{{- /* Preconnect to Google Analytics for improved performance */ -}}
2+
{{- /* Note: Google Analytics will only load after user consent via cookie-consent.js */ -}}
3+
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
4+
<link rel="dns-prefetch" href="https://www.googletagmanager.com">

static/css/cookie-consent.css

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
/* Cookie Consent Banner Styles */
2+
.cookie-consent-banner {
3+
position: fixed;
4+
bottom: 0;
5+
left: 0;
6+
right: 0;
7+
z-index: 10000;
8+
padding: 1rem;
9+
background-color: var(--bg-primary, #ffffff);
10+
border-top: 2px solid var(--border-color, #e0e0e0);
11+
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
12+
transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
13+
}
14+
15+
.cookie-consent-banner.hidden {
16+
transform: translateY(100%);
17+
opacity: 0;
18+
pointer-events: none;
19+
}
20+
21+
.cookie-consent-content {
22+
max-width: 1200px;
23+
margin: 0 auto;
24+
display: flex;
25+
flex-wrap: wrap;
26+
align-items: center;
27+
gap: 1rem;
28+
}
29+
30+
.cookie-consent-text {
31+
flex: 1;
32+
min-width: 250px;
33+
}
34+
35+
.cookie-consent-title {
36+
margin: 0 0 0.5rem 0;
37+
font-size: 1.25rem;
38+
font-weight: 600;
39+
color: var(--text-primary, #000000);
40+
}
41+
42+
.cookie-consent-message {
43+
margin: 0;
44+
font-size: 0.9rem;
45+
line-height: 1.5;
46+
color: var(--text-secondary, #666666);
47+
}
48+
49+
.cookie-consent-link {
50+
color: var(--link-color, #0066cc);
51+
text-decoration: underline;
52+
}
53+
54+
.cookie-consent-link:hover,
55+
.cookie-consent-link:focus {
56+
color: var(--link-hover-color, #0052a3);
57+
outline: 2px solid var(--link-color, #0066cc);
58+
outline-offset: 2px;
59+
}
60+
61+
.cookie-consent-buttons {
62+
display: flex;
63+
gap: 0.75rem;
64+
flex-shrink: 0;
65+
}
66+
67+
.cookie-consent-button {
68+
padding: 0.75rem 1.5rem;
69+
font-size: 1rem;
70+
font-weight: 500;
71+
border: 2px solid transparent;
72+
border-radius: 4px;
73+
cursor: pointer;
74+
transition: all 0.2s ease;
75+
min-width: 100px;
76+
}
77+
78+
.cookie-consent-accept {
79+
background-color: var(--primary-color, #0066cc);
80+
color: var(--text-on-primary, #ffffff);
81+
border-color: var(--primary-color, #0066cc);
82+
}
83+
84+
.cookie-consent-accept:hover,
85+
.cookie-consent-accept:focus {
86+
background-color: var(--primary-hover-color, #0052a3);
87+
border-color: var(--primary-hover-color, #0052a3);
88+
outline: 2px solid var(--primary-color, #0066cc);
89+
outline-offset: 2px;
90+
}
91+
92+
.cookie-consent-decline {
93+
background-color: transparent;
94+
color: var(--text-primary, #000000);
95+
border-color: var(--border-color, #666666);
96+
}
97+
98+
.cookie-consent-decline:hover,
99+
.cookie-consent-decline:focus {
100+
background-color: var(--bg-secondary, #f5f5f5);
101+
border-color: var(--text-primary, #000000);
102+
outline: 2px solid var(--border-color, #666666);
103+
outline-offset: 2px;
104+
}
105+
106+
/* Dark mode support */
107+
[data-theme="dark"] .cookie-consent-banner {
108+
background-color: var(--bg-primary, #1a1a1a);
109+
border-top-color: var(--border-color, #333333);
110+
}
111+
112+
[data-theme="dark"] .cookie-consent-title {
113+
color: var(--text-primary, #ffffff);
114+
}
115+
116+
[data-theme="dark"] .cookie-consent-message {
117+
color: var(--text-secondary, #cccccc);
118+
}
119+
120+
[data-theme="dark"] .cookie-consent-decline {
121+
color: var(--text-primary, #ffffff);
122+
border-color: var(--border-color, #666666);
123+
}
124+
125+
[data-theme="dark"] .cookie-consent-decline:hover,
126+
[data-theme="dark"] .cookie-consent-decline:focus {
127+
background-color: var(--bg-secondary, #2a2a2a);
128+
}
129+
130+
/* Mobile responsiveness */
131+
@media (max-width: 768px) {
132+
.cookie-consent-content {
133+
flex-direction: column;
134+
align-items: stretch;
135+
}
136+
137+
.cookie-consent-buttons {
138+
width: 100%;
139+
flex-direction: column;
140+
}
141+
142+
.cookie-consent-button {
143+
width: 100%;
144+
}
145+
146+
.cookie-consent-title {
147+
font-size: 1.1rem;
148+
}
149+
150+
.cookie-consent-message {
151+
font-size: 0.85rem;
152+
}
153+
}
154+
155+
/* Accessibility: Focus visible */
156+
.cookie-consent-button:focus-visible {
157+
outline: 3px solid var(--focus-color, #0066cc);
158+
outline-offset: 2px;
159+
}

0 commit comments

Comments
 (0)