style(frontend): Prettier config + one-time repo-wide format pass
Prettier 3 (pinned), printWidth 100, double quotes — chosen to match the existing hand-formatting and minimise reflow. This commit is ONLY the mechanical format pass (`prettier --write`) plus the config/ignore/scripts, isolated so it never pollutes a feature diff. Verified behaviour-neutral: typecheck, eslint (0 errors), and vitest all green before and after. See .git-blame-ignore-revs — `git blame` skips this sha.
This commit is contained in:
@@ -70,11 +70,19 @@ export default function LegalLayout({
|
||||
<div className="space-y-5 text-sm leading-relaxed text-fg/90">{children}</div>
|
||||
</div>
|
||||
<footer className="mt-6 flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted">
|
||||
<a href="/" className="hover:text-fg transition">Home</a>
|
||||
<a href="/privacy" className="hover:text-fg transition">Privacy Policy</a>
|
||||
<a href="/terms" className="hover:text-fg transition">Terms of Service</a>
|
||||
<a href="/" className="hover:text-fg transition">
|
||||
Home
|
||||
</a>
|
||||
<a href="/privacy" className="hover:text-fg transition">
|
||||
Privacy Policy
|
||||
</a>
|
||||
<a href="/terms" className="hover:text-fg transition">
|
||||
Terms of Service
|
||||
</a>
|
||||
{contact && (
|
||||
<a href={`mailto:${contact}`} className="hover:text-fg transition">Contact</a>
|
||||
<a href={`mailto:${contact}`} className="hover:text-fg transition">
|
||||
Contact
|
||||
</a>
|
||||
)}
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -4,19 +4,19 @@ export default function PrivacyPolicy() {
|
||||
return (
|
||||
<LegalLayout title="Privacy Policy">
|
||||
<p>
|
||||
Siftlode is a personal, non-commercial project operated by an individual in Hungary
|
||||
("we", "us"). It lets you view and organize your own YouTube subscriptions as a
|
||||
filterable feed. This policy explains what data Siftlode accesses, how it is used, and
|
||||
the choices you have. By using Siftlode you agree to this policy.
|
||||
Siftlode is a personal, non-commercial project operated by an individual in Hungary ("we",
|
||||
"us"). It lets you view and organize your own YouTube subscriptions as a filterable feed.
|
||||
This policy explains what data Siftlode accesses, how it is used, and the choices you have.
|
||||
By using Siftlode you agree to this policy.
|
||||
</p>
|
||||
|
||||
<H2>What we access</H2>
|
||||
<p>Siftlode only accesses data you explicitly authorize, in two separate steps:</p>
|
||||
<ul className="list-disc pl-5 space-y-1">
|
||||
<li>
|
||||
<span className="text-fg font-medium">Sign-in (always):</span> your basic Google
|
||||
profile — name, email address, profile picture, and Google account identifier — used
|
||||
solely to create and identify your account.
|
||||
<span className="text-fg font-medium">Sign-in (always):</span> your basic Google profile —
|
||||
name, email address, profile picture, and Google account identifier — used solely to
|
||||
create and identify your account.
|
||||
</li>
|
||||
<li>
|
||||
<span className="text-fg font-medium">YouTube read (optional, opt-in):</span> with the{" "}
|
||||
@@ -25,9 +25,9 @@ export default function PrivacyPolicy() {
|
||||
thumbnails, durations, view counts, publish dates), used to build your feed.
|
||||
</li>
|
||||
<li>
|
||||
<span className="text-fg font-medium">YouTube manage (optional, opt-in):</span> with
|
||||
the <code className="text-xs">youtube</code> scope, the ability to unsubscribe from a
|
||||
channel on YouTube — performed only when you click to do so.
|
||||
<span className="text-fg font-medium">YouTube manage (optional, opt-in):</span> with the{" "}
|
||||
<code className="text-xs">youtube</code> scope, the ability to unsubscribe from a channel
|
||||
on YouTube — performed only when you click to do so.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
@@ -37,30 +37,30 @@ export default function PrivacyPolicy() {
|
||||
|
||||
<H2>How we use it</H2>
|
||||
<p>
|
||||
Your data is used exclusively to provide Siftlode's features to you: building and
|
||||
displaying your personalized subscription feed, and carrying out actions (such as
|
||||
unsubscribing) that you initiate. We do not use it for advertising, profiling, or any
|
||||
purpose unrelated to the app.
|
||||
Your data is used exclusively to provide Siftlode's features to you: building and displaying
|
||||
your personalized subscription feed, and carrying out actions (such as unsubscribing) that
|
||||
you initiate. We do not use it for advertising, profiling, or any purpose unrelated to the
|
||||
app.
|
||||
</p>
|
||||
|
||||
<H2>Limited Use disclosure</H2>
|
||||
<p>
|
||||
Siftlode's use and transfer of information received from Google APIs to any other app
|
||||
will adhere to the{" "}
|
||||
Siftlode's use and transfer of information received from Google APIs to any other app will
|
||||
adhere to the{" "}
|
||||
<LegalLink href="https://developers.google.com/terms/api-services-user-data-policy">
|
||||
Google API Services User Data Policy
|
||||
</LegalLink>
|
||||
, including the Limited Use requirements. We do not sell your data, do not transfer it
|
||||
to third parties (except as needed to operate the app, e.g. the hosting infrastructure
|
||||
we control), and do not use it for advertising.
|
||||
, including the Limited Use requirements. We do not sell your data, do not transfer it to
|
||||
third parties (except as needed to operate the app, e.g. the hosting infrastructure we
|
||||
control), and do not use it for advertising.
|
||||
</p>
|
||||
|
||||
<H2>Storage & security</H2>
|
||||
<p>
|
||||
Data is stored in a private PostgreSQL database on a server we control, accessible only
|
||||
to the operator. Google OAuth refresh tokens are encrypted at rest. Access is restricted
|
||||
to the emails explicitly invited to the app. No system is perfectly secure, but we take
|
||||
reasonable measures to protect your data.
|
||||
Data is stored in a private PostgreSQL database on a server we control, accessible only to
|
||||
the operator. Google OAuth refresh tokens are encrypted at rest. Access is restricted to the
|
||||
emails explicitly invited to the app. No system is perfectly secure, but we take reasonable
|
||||
measures to protect your data.
|
||||
</p>
|
||||
|
||||
<H2>Retention & deletion</H2>
|
||||
@@ -70,8 +70,8 @@ export default function PrivacyPolicy() {
|
||||
<LegalLink href="https://myaccount.google.com/permissions">
|
||||
myaccount.google.com/permissions
|
||||
</LegalLink>
|
||||
; once revoked, the stored tokens can no longer be used. To have your account and
|
||||
associated data deleted, contact <ContactEmail />.
|
||||
; once revoked, the stored tokens can no longer be used. To have your account and associated
|
||||
data deleted, contact <ContactEmail />.
|
||||
</p>
|
||||
|
||||
<H2>Cookies</H2>
|
||||
@@ -83,8 +83,8 @@ export default function PrivacyPolicy() {
|
||||
<H2>YouTube & Google</H2>
|
||||
<p>
|
||||
Siftlode uses YouTube API Services. By using Siftlode you also agree to the{" "}
|
||||
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>,
|
||||
and your use of Google data is subject to the{" "}
|
||||
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>, and
|
||||
your use of Google data is subject to the{" "}
|
||||
<LegalLink href="https://policies.google.com/privacy">Google Privacy Policy</LegalLink>.
|
||||
</p>
|
||||
|
||||
|
||||
@@ -11,41 +11,43 @@ export default function Terms() {
|
||||
|
||||
<H2>The service</H2>
|
||||
<p>
|
||||
Siftlode is offered on an invite-only basis, free of charge, and "as is", without
|
||||
warranties of any kind. It is a hobby project: features may change, and the service may
|
||||
be slowed, interrupted, or discontinued at any time without notice.
|
||||
Siftlode is offered on an invite-only basis, free of charge, and "as is", without warranties
|
||||
of any kind. It is a hobby project: features may change, and the service may be slowed,
|
||||
interrupted, or discontinued at any time without notice.
|
||||
</p>
|
||||
|
||||
<H2>Your account & acceptable use</H2>
|
||||
<p>
|
||||
You sign in with your Google account and may only access Siftlode with an email that has
|
||||
been invited. You agree to use the service lawfully, not to abuse, disrupt, probe, or
|
||||
overload it, and not to attempt to access other users' data. We may suspend or revoke
|
||||
access at our discretion, for example in case of misuse.
|
||||
overload it, and not to attempt to access other users' data. We may suspend or revoke access
|
||||
at our discretion, for example in case of misuse.
|
||||
</p>
|
||||
|
||||
<H2>Third-party services</H2>
|
||||
<p>
|
||||
Siftlode uses YouTube API Services. By using Siftlode you agree to be bound by the{" "}
|
||||
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>.
|
||||
Your data is handled as described in our{" "}
|
||||
<a href="/privacy" className="text-accent hover:underline">Privacy Policy</a> and, for
|
||||
Google data, the{" "}
|
||||
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>. Your
|
||||
data is handled as described in our{" "}
|
||||
<a href="/privacy" className="text-accent hover:underline">
|
||||
Privacy Policy
|
||||
</a>{" "}
|
||||
and, for Google data, the{" "}
|
||||
<LegalLink href="https://policies.google.com/privacy">Google Privacy Policy</LegalLink>.
|
||||
</p>
|
||||
|
||||
<H2>No warranty & limitation of liability</H2>
|
||||
<p>
|
||||
To the maximum extent permitted by law, the service is provided without warranty, and
|
||||
the operator is not liable for any indirect, incidental, or consequential damages, or
|
||||
for any loss of data, arising from your use of Siftlode. Your sole remedy if you are
|
||||
dissatisfied is to stop using the service and revoke its access to your account.
|
||||
To the maximum extent permitted by law, the service is provided without warranty, and the
|
||||
operator is not liable for any indirect, incidental, or consequential damages, or for any
|
||||
loss of data, arising from your use of Siftlode. Your sole remedy if you are dissatisfied is
|
||||
to stop using the service and revoke its access to your account.
|
||||
</p>
|
||||
|
||||
<H2>Governing law</H2>
|
||||
<p>
|
||||
These Terms are governed by the laws of Hungary and applicable European Union law,
|
||||
without regard to conflict-of-law rules.
|
||||
These Terms are governed by the laws of Hungary and applicable European Union law, without
|
||||
regard to conflict-of-law rules.
|
||||
</p>
|
||||
|
||||
<H2>Changes</H2>
|
||||
|
||||
Reference in New Issue
Block a user