Skip to content

Commit 0b35ed2

Browse files
committed
feat: Implement core site structure including legal pages, footer, cookie banner, sitemap generation, and Firebase integration.
1 parent 8b993ad commit 0b35ed2

10 files changed

Lines changed: 410 additions & 170 deletions

File tree

app/layout.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import "./globals.css";
33
import type { Metadata } from "next";
44
import Header from "@/components/Header";
55
import Footer from "@/components/Footer";
6+
import CookieBanner from "@/components/CookieBanner";
67
import Script from "next/script";
78
import localFont from "next/font/local";
89

@@ -132,6 +133,9 @@ export default function RootLayout({
132133
__html: `
133134
window.dataLayer = window.dataLayer || [];
134135
function gtag(){dataLayer.push(arguments);}
136+
gtag('consent', 'default', {
137+
'analytics_storage': 'denied'
138+
});
135139
gtag('js', new Date());
136140
gtag('config', '${GA_TRACKING_ID}', {
137141
page_path: window.location.pathname,
@@ -147,6 +151,7 @@ export default function RootLayout({
147151
<Header />
148152
{children}
149153
<Footer />
154+
<CookieBanner />
150155
</Container>
151156
</body>
152157
</html>

app/privacy-policy/page.tsx

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
import type { Metadata } from "next";
2+
3+
export const metadata: Metadata = {
4+
title: "Privacy Policy",
5+
description: "Privacy Policy for L.A.P - Docs",
6+
};
7+
8+
export default function PrivacyPolicy() {
9+
return (
10+
<main className="flex flex-col min-h-screen max-w-4xl mx-auto px-6 py-12 w-full text-white">
11+
<h1 className="text-4xl font-bold mb-8">Privacy Policy</h1>
12+
<p className="mb-4 text-gray-300">
13+
Last updated:{" "}
14+
{new Date().toLocaleDateString("en-US", {
15+
month: "long",
16+
day: "numeric",
17+
year: "numeric",
18+
})}
19+
</p>
20+
21+
<section className="mb-8">
22+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
23+
1. Introduction
24+
</h2>
25+
<p className="mb-4 text-gray-300 leading-relaxed">
26+
Welcome to L.A.P - Docs. We respect your privacy and are committed to
27+
protecting your personal data. This privacy policy explains what
28+
information we collect, how we use it, and the rights you have
29+
concerning your data when you visit our website.
30+
</p>
31+
</section>
32+
33+
<section className="mb-8">
34+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
35+
2. The Data We Collect
36+
</h2>
37+
<p className="mb-4 text-gray-300 leading-relaxed">
38+
We only collect data that is necessary to provide you with our
39+
services and improve your experience on our website. Specifically, we
40+
collect:
41+
</p>
42+
<ul className="list-disc pl-6 mb-4 text-gray-300 space-y-2">
43+
<li>
44+
<strong>Usage Data & Analytics:</strong> We use Google Analytics
45+
solely to collect anonymized information about how you interact with
46+
our website. This includes your browser type, operating system,
47+
pages visited, and time spent on those pages, allowing us to monitor
48+
traffic patterns.
49+
</li>
50+
</ul>
51+
<p className="mb-4 text-gray-300 leading-relaxed">
52+
We do not require you to create an account to use our website, and we
53+
do not collect sensitive personal data.
54+
</p>
55+
</section>
56+
57+
<section className="mb-8">
58+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
59+
3. How We Use Your Data
60+
</h2>
61+
<p className="mb-4 text-gray-300 leading-relaxed">
62+
We use the minimal information we collect for the following purposes:
63+
</p>
64+
<ul className="list-disc pl-6 mb-4 text-gray-300 space-y-2">
65+
<li>
66+
<strong>To improve our website:</strong> We use analytics data to
67+
understand how users interact with our site, which helps us improve
68+
our content, layout, and overall user experience.
69+
</li>
70+
<li>
71+
<strong>To ensure security:</strong> To monitor and protect our
72+
website from malicious activity.
73+
</li>
74+
</ul>
75+
</section>
76+
77+
<section className="mb-8">
78+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
79+
4. Cookies and Tracking Technologies
80+
</h2>
81+
<p className="mb-4 text-gray-300 leading-relaxed">
82+
We use cookies and similar tracking technologies (such as Google
83+
Analytics tags) to track activity on our service. Cookies are files
84+
with a small amount of data which may include an anonymous unique
85+
identifier.
86+
</p>
87+
<p className="mb-4 text-gray-300 leading-relaxed">
88+
You can instruct your browser to refuse all cookies or to indicate
89+
when a cookie is being sent. However, if you do not accept cookies,
90+
some portions of our analytics may not function properly, though you
91+
will still be able to read our documentation.
92+
</p>
93+
</section>
94+
95+
<section className="mb-8">
96+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
97+
5. Third-Party Services
98+
</h2>
99+
<p className="mb-4 text-gray-300 leading-relaxed">
100+
We do not sell, trade, or otherwise transfer your personally
101+
identifiable information to outside parties. However, we do share data
102+
with trusted third-party service providers who assist us in operating
103+
our website, such as Google Analytics for traffic analysis. These
104+
parties agree to keep this information confidential.
105+
</p>
106+
</section>
107+
108+
<section className="mb-8">
109+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
110+
6. Your Rights
111+
</h2>
112+
<p className="mb-4 text-gray-300 leading-relaxed">
113+
Depending on your location, you may have the right to request access
114+
to the personal data we hold about you, request corrections, or
115+
request deletion of your data. To exercise these rights, please
116+
contact us directly.
117+
</p>
118+
</section>
119+
120+
<section className="mb-8">
121+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
122+
7. Contact Us
123+
</h2>
124+
<p className="mb-4 text-gray-300 leading-relaxed">
125+
If you have any questions about this Privacy Policy, please contact us
126+
via email at{" "}
127+
<a
128+
href="mailto:contact@lap.onl?subject=Privacy%20Policy%20Inquiry"
129+
className="text-[#8a2be2] hover:underline"
130+
>
131+
contact@lap.onl
132+
</a>
133+
.
134+
</p>
135+
</section>
136+
</main>
137+
);
138+
}

app/sitemap.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
66
const baseUrl = "https://lap.onl";
77

88
// Static routes
9-
const routes = ["", "/posts", "/team"].map((route) => ({
9+
const routes = [
10+
"",
11+
"/posts",
12+
"/team",
13+
"/privacy-policy",
14+
"/terms-of-service",
15+
].map((route) => ({
1016
url: `${baseUrl}${route}`,
1117
lastModified: new Date().toISOString(),
1218
}));

app/terms-of-service/page.tsx

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
import type { Metadata } from "next";
2+
3+
export const metadata: Metadata = {
4+
title: "Terms of Service",
5+
description: "Terms of Service for L.A.P - Docs",
6+
};
7+
8+
export default function TermsOfService() {
9+
return (
10+
<main className="flex flex-col min-h-screen max-w-4xl mx-auto px-6 py-12 w-full text-white">
11+
<h1 className="text-4xl font-bold mb-8">Terms of Service</h1>
12+
<p className="mb-4 text-gray-300">
13+
Last updated:{" "}
14+
{new Date().toLocaleDateString("en-US", {
15+
month: "long",
16+
day: "numeric",
17+
year: "numeric",
18+
})}
19+
</p>
20+
21+
<section className="mb-8">
22+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
23+
1. Acceptance of Terms
24+
</h2>
25+
<p className="mb-4 text-gray-300 leading-relaxed">
26+
By accessing this website, we assume you accept these terms of service
27+
in full. Do not continue to use L.A.P - Docs if you do not accept all
28+
of the terms of service stated on this page. Our site provides
29+
technical documentation, guides, and tutorials for informational
30+
purposes.
31+
</p>
32+
</section>
33+
34+
<section className="mb-8">
35+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
36+
2. Informational Purposes Only
37+
</h2>
38+
<p className="mb-4 text-gray-300 leading-relaxed">
39+
The tutorials, code snippets, and general information provided on
40+
L.A.P - Docs are for educational and informational purposes only.
41+
While we strive to keep technical information as accurate and
42+
up-to-date as possible, technology changes rapidly. We do not
43+
guarantee the accuracy, completeness, or usefulness of this
44+
information. Proceeding with our guides is at your own risk.
45+
</p>
46+
</section>
47+
48+
<section className="mb-8">
49+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
50+
3. License and Use of Content
51+
</h2>
52+
<p className="mb-4 text-gray-300 leading-relaxed">
53+
The documentation, guides, and articles (excluding user-submitted
54+
comments or third-party code libraries) are the intellectual property
55+
of L.A.P. You may view and print pages for your own personal,
56+
non-commercial use.
57+
</p>
58+
<p className="mb-4 text-gray-300 leading-relaxed font-semibold">
59+
You must not:
60+
</p>
61+
<ul className="list-disc pl-6 mb-4 text-gray-300 space-y-2">
62+
<li>
63+
Republish material from https://lap.onl without proper attribution.
64+
</li>
65+
<li>Sell or rent material from https://lap.onl.</li>
66+
<li>
67+
Reproduce, duplicate, or copy material from https://lap.onl for
68+
commercial gain.
69+
</li>
70+
</ul>
71+
<p className="mb-4 text-gray-300 leading-relaxed mt-4">
72+
Code snippets provided in our tutorials may generally be freely used
73+
in your own projects unless stated otherwise in the specific tutorial.
74+
</p>
75+
</section>
76+
77+
<section className="mb-8">
78+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
79+
4. Disclaimer of Warranties
80+
</h2>
81+
<p className="mb-4 text-gray-300 leading-relaxed">
82+
The materials on L.A.P - Docs&apos;s website are provided on an
83+
&apos;as is&apos; basis. L.A.P makes no warranties, expressed or
84+
implied, and hereby disclaims and negates all other warranties
85+
including, without limitation, implied warranties or conditions of
86+
merchantability, fitness for a particular purpose, or non-infringement
87+
of intellectual property or other violation of rights.
88+
</p>
89+
</section>
90+
91+
<section className="mb-8">
92+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
93+
5. Limitations of Liability
94+
</h2>
95+
<p className="mb-4 text-gray-300 leading-relaxed">
96+
In no event shall L.A.P or its contributors be liable for any damages
97+
(including, without limitation, damages for loss of data or profit,
98+
server downtime, or due to business interruption) arising out of the
99+
use or inability to use the materials on L.A.P - Docs&apos;s website
100+
or out of following any provided tutorials, even if L.A.P or a L.A.P
101+
authorized representative has been notified orally or in writing of
102+
the possibility of such damage.
103+
</p>
104+
</section>
105+
106+
<section className="mb-8">
107+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
108+
6. Links to Third-Party Sites
109+
</h2>
110+
<p className="mb-4 text-gray-300 leading-relaxed">
111+
Our tutorials frequently link to third-party tools, repositories, or
112+
documentation. L.A.P has not reviewed the totality of these external
113+
sites and is not responsible for their contents or privacy policies.
114+
The inclusion of any link does not imply endorsement by L.A.P. Use of
115+
any linked tool or website is at the user&apos;s own risk.
116+
</p>
117+
</section>
118+
119+
<section className="mb-8">
120+
<h2 className="text-2xl font-semibold mb-4 text-[#8a2be2]">
121+
7. Revisions
122+
</h2>
123+
<p className="mb-4 text-gray-300 leading-relaxed">
124+
L.A.P may revise these terms of service for its website at any time
125+
without notice. By using this website you are agreeing to be bound by
126+
the then-current version of these terms of service.
127+
</p>
128+
</section>
129+
</main>
130+
);
131+
}

0 commit comments

Comments
 (0)