Add privacy policy and EULA pages, update settings URLs

- Create landing_page/privacy.html and landing_page/eula.html matching site design
- Add app icon to nav/footer/favicon across all landing pages
- Update settings EULA and privacy links to feels.88oakapps.com

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-10 15:50:53 -06:00
parent e0330dbc8d
commit 9c4e0a35a6
5 changed files with 965 additions and 9 deletions

View File

@@ -1072,7 +1072,7 @@ struct SettingsContentView: View {
theme.currentTheme.secondaryBGColor theme.currentTheme.secondaryBGColor
Button(action: { Button(action: {
AnalyticsManager.shared.track(.eulaViewed) AnalyticsManager.shared.track(.eulaViewed)
if let url = URL(string: "https://feels.app/eula.html") { if let url = URL(string: "https://feels.88oakapps.com/eula.html") {
UIApplication.shared.open(url) UIApplication.shared.open(url)
} }
}, label: { }, label: {
@@ -1091,7 +1091,7 @@ struct SettingsContentView: View {
theme.currentTheme.secondaryBGColor theme.currentTheme.secondaryBGColor
Button(action: { Button(action: {
AnalyticsManager.shared.track(.privacyPolicyViewed) AnalyticsManager.shared.track(.privacyPolicyViewed)
if let url = URL(string: "https://feels.app/privacy.html") { if let url = URL(string: "https://feels.88oakapps.com/privacy.html") {
UIApplication.shared.open(url) UIApplication.shared.open(url)
} }
}, label: { }, label: {
@@ -1814,7 +1814,7 @@ struct SettingsView: View {
theme.currentTheme.secondaryBGColor theme.currentTheme.secondaryBGColor
Button(action: { Button(action: {
AnalyticsManager.shared.track(.eulaViewed) AnalyticsManager.shared.track(.eulaViewed)
openURL(URL(string: "https://feels.app/eula.html")!) openURL(URL(string: "https://feels.88oakapps.com/eula.html")!)
}, label: { }, label: {
Text(String(localized: "settings_view_show_eula")) Text(String(localized: "settings_view_show_eula"))
.foregroundColor(textColor) .foregroundColor(textColor)
@@ -1830,7 +1830,7 @@ struct SettingsView: View {
theme.currentTheme.secondaryBGColor theme.currentTheme.secondaryBGColor
Button(action: { Button(action: {
AnalyticsManager.shared.track(.privacyPolicyViewed) AnalyticsManager.shared.track(.privacyPolicyViewed)
openURL(URL(string: "https://feels.app/privacy.html")!) openURL(URL(string: "https://feels.88oakapps.com/privacy.html")!)
}, label: { }, label: {
Text(String(localized: "settings_view_show_privacy")) Text(String(localized: "settings_view_show_privacy"))
.foregroundColor(textColor) .foregroundColor(textColor)

BIN
landing_page/app-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

474
landing_page/eula.html Normal file
View File

@@ -0,0 +1,474 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Feels — End User License Agreement</title>
<meta name="description" content="Feels End User License Agreement (EULA) - Terms governing the use of the Feels app.">
<link rel="icon" type="image/png" href="app-icon.png">
<link rel="apple-touch-icon" href="app-icon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Plus+Jakarta+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--great: #4ADE80;
--great-glow: rgba(74, 222, 128, 0.4);
--good: #FBBF24;
--good-glow: rgba(251, 191, 36, 0.4);
--average: #94A3B8;
--average-glow: rgba(148, 163, 184, 0.3);
--bad: #60A5FA;
--bad-glow: rgba(96, 165, 250, 0.4);
--horrible: #F87171;
--horrible-glow: rgba(248, 113, 113, 0.4);
--bg-primary: #0A0A0B;
--bg-secondary: #111113;
--bg-card: rgba(255, 255, 255, 0.03);
--bg-glass: rgba(255, 255, 255, 0.05);
--border-subtle: rgba(255, 255, 255, 0.06);
--text-primary: #FAFAFA;
--text-secondary: rgba(255, 255, 255, 0.6);
--text-tertiary: rgba(255, 255, 255, 0.4);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.6;
overflow-x: hidden;
}
.serif {
font-family: 'Instrument Serif', Georgia, serif;
}
/* Noise texture overlay */
body::before {
content: '';
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
opacity: 0.03;
pointer-events: none;
z-index: 1000;
}
/* Navigation */
nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
padding: 1.5rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
backdrop-filter: blur(20px);
background: rgba(10, 10, 11, 0.8);
border-bottom: 1px solid var(--border-subtle);
}
.logo {
font-family: 'Instrument Serif', serif;
font-size: 1.5rem;
font-weight: 400;
letter-spacing: -0.02em;
color: var(--text-primary);
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
}
.logo-icon {
width: 32px;
height: 32px;
border-radius: 8px;
}
.nav-links {
display: flex;
gap: 2.5rem;
list-style: none;
}
.nav-links a {
color: var(--text-secondary);
text-decoration: none;
font-size: 0.875rem;
font-weight: 400;
transition: color 0.3s ease;
}
.nav-links a:hover {
color: var(--text-primary);
}
.nav-cta {
background: var(--text-primary);
color: var(--bg-primary);
padding: 0.625rem 1.25rem;
border-radius: 100px;
text-decoration: none;
font-size: 0.875rem;
font-weight: 500;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.nav-cta:hover {
transform: translateY(-2px);
box-shadow: 0 10px 40px rgba(255, 255, 255, 0.15);
}
/* Page Header */
.page-header {
padding: 10rem 2rem 4rem;
text-align: center;
position: relative;
overflow: hidden;
}
.page-header::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 500px;
height: 500px;
background: radial-gradient(circle, var(--bad-glow) 0%, transparent 70%);
opacity: 0.15;
pointer-events: none;
}
.page-header h1 {
font-family: 'Instrument Serif', serif;
font-size: clamp(2.5rem, 6vw, 4rem);
font-weight: 400;
line-height: 1.1;
letter-spacing: -0.03em;
margin-bottom: 1rem;
position: relative;
z-index: 10;
}
.page-header p {
font-size: 1.125rem;
color: var(--text-secondary);
font-weight: 300;
position: relative;
z-index: 10;
}
/* Legal Content */
.legal-content {
max-width: 780px;
margin: 0 auto;
padding: 2rem 2rem 6rem;
}
.legal-content h2 {
font-family: 'Instrument Serif', serif;
font-size: 1.75rem;
font-weight: 400;
margin-top: 3rem;
margin-bottom: 1rem;
letter-spacing: -0.02em;
}
.legal-content h3 {
font-size: 1.125rem;
font-weight: 600;
margin-top: 2rem;
margin-bottom: 0.75rem;
}
.legal-content p {
color: var(--text-secondary);
margin-bottom: 1rem;
font-size: 0.9375rem;
line-height: 1.8;
}
.legal-content ul, .legal-content ol {
color: var(--text-secondary);
margin-bottom: 1rem;
padding-left: 1.5rem;
font-size: 0.9375rem;
line-height: 1.8;
}
.legal-content li {
margin-bottom: 0.5rem;
}
.legal-content a {
color: var(--great);
text-decoration: none;
transition: opacity 0.3s ease;
}
.legal-content a:hover {
opacity: 0.8;
}
.legal-content .effective-date {
display: inline-block;
background: var(--bg-glass);
border: 1px solid var(--border-subtle);
padding: 0.5rem 1rem;
border-radius: 100px;
font-size: 0.8125rem;
color: var(--text-tertiary);
margin-bottom: 2rem;
}
.legal-content .highlight-box {
background: var(--bg-card);
border: 1px solid var(--border-subtle);
border-radius: 16px;
padding: 1.5rem;
margin: 1.5rem 0;
}
.legal-content .highlight-box p {
margin-bottom: 0;
}
/* Footer */
footer {
padding: 3rem 2rem;
border-top: 1px solid var(--border-subtle);
}
.footer-content {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
.footer-logo {
font-family: 'Instrument Serif', serif;
font-size: 1.25rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.footer-links {
display: flex;
gap: 2rem;
list-style: none;
}
.footer-links a {
color: var(--text-tertiary);
text-decoration: none;
font-size: 0.875rem;
transition: color 0.3s ease;
}
.footer-links a:hover {
color: var(--text-primary);
}
.footer-copy {
font-size: 0.8125rem;
color: var(--text-tertiary);
}
/* Mobile responsiveness */
@media (max-width: 768px) {
nav {
padding: 1rem;
}
.nav-links {
display: none;
}
.page-header {
padding: 8rem 1.5rem 3rem;
}
.legal-content {
padding: 2rem 1.5rem 4rem;
}
.footer-content {
flex-direction: column;
text-align: center;
}
}
</style>
</head>
<body>
<nav>
<a href="index.html" class="logo"><img src="app-icon.png" alt="Feels" class="logo-icon">Feels</a>
<ul class="nav-links">
<li><a href="index.html#features">Features</a></li>
<li><a href="index.html#devices">Devices</a></li>
<li><a href="index.html#testimonials">Reviews</a></li>
</ul>
<a href="index.html#download" class="nav-cta">Download</a>
</nav>
<div class="page-header">
<h1>End User License Agreement</h1>
<p>The terms that govern your use of Feels.</p>
</div>
<div class="legal-content">
<div class="effective-date">Effective Date: February 10, 2026</div>
<div class="highlight-box">
<p><strong>The short version:</strong> Feels is licensed to you by 88 Oak Apps. You can use it on your Apple devices. Subscriptions are managed through Apple. Don't reverse-engineer it or use it to harm others. We're not liable for decisions you make based on your mood data.</p>
</div>
<h2>1. Agreement</h2>
<p>This End User License Agreement ("EULA") is a legal agreement between you ("User") and 88 Oak Apps ("Licensor", "we", "us") for the use of the Feels mobile application ("the App"), available for iOS and watchOS through the Apple App Store.</p>
<p>By downloading, installing, or using the App, you agree to be bound by the terms of this EULA. If you do not agree to these terms, do not download or use the App.</p>
<p>This EULA is supplemental to Apple's standard Licensed Application End User License Agreement ("Standard EULA") available at <a href="https://www.apple.com/legal/internet-services/itunes/dev/stdeula/">apple.com/legal/internet-services/itunes/dev/stdeula</a>. In the event of a conflict, the terms of this EULA shall prevail.</p>
<h2>2. License Grant</h2>
<p>Subject to the terms of this EULA, we grant you a limited, non-exclusive, non-transferable, revocable license to:</p>
<ul>
<li>Download and install the App on Apple-branded devices that you own or control</li>
<li>Use the App for your personal, non-commercial purposes</li>
<li>Access and use features included in your subscription tier (if applicable)</li>
</ul>
<h2>3. Subscription Terms (Feels+)</h2>
<p>Feels offers optional premium features through a subscription called "Feels+" with the following terms:</p>
<h3>Plans and Pricing</h3>
<ul>
<li><strong>Monthly subscription</strong> — billed monthly after any applicable trial period</li>
<li><strong>Annual subscription</strong> — billed annually after any applicable trial period</li>
</ul>
<p>Exact pricing is displayed in the App and on the App Store at the time of purchase.</p>
<h3>Free Trial</h3>
<p>New subscribers may be eligible for a free trial period. If you do not cancel before the trial ends, your subscription will automatically convert to a paid subscription at the displayed rate.</p>
<h3>Billing and Renewal</h3>
<ul>
<li>Subscriptions are billed through your Apple ID account</li>
<li>Subscriptions automatically renew unless turned off at least 24 hours before the end of the current billing period</li>
<li>Your account will be charged for renewal within 24 hours prior to the end of the current period</li>
<li>You can manage and cancel subscriptions in your Apple ID account settings</li>
</ul>
<h3>Refunds</h3>
<p>All subscription payments are processed by Apple. Refund requests must be directed to Apple through their standard refund process. We do not process refunds directly.</p>
<h2>4. Restrictions</h2>
<p>You agree not to:</p>
<ul>
<li>Copy, modify, or distribute the App or any part thereof</li>
<li>Reverse-engineer, decompile, disassemble, or attempt to derive the source code of the App</li>
<li>Rent, lease, lend, sell, sublicense, or transfer the App to any third party</li>
<li>Remove, alter, or obscure any proprietary notices in the App</li>
<li>Use the App for any unlawful purpose or in violation of any applicable laws</li>
<li>Attempt to interfere with or disrupt the App's functionality, servers, or networks</li>
<li>Use automated systems, bots, or scrapers to access the App</li>
<li>Use the App to collect data about other users</li>
</ul>
<h2>5. Intellectual Property</h2>
<p>The App, including its design, code, graphics, icons, animations, themes, and all other content, is owned by 88 Oak Apps and is protected by copyright, trademark, and other intellectual property laws. This EULA does not grant you any ownership rights to the App or its content.</p>
<p>All theme designs, icon packs, mood visualizations, and other creative elements within the App are the exclusive property of 88 Oak Apps.</p>
<h2>6. Your Content</h2>
<p>You retain full ownership of all content you create within the App, including mood entries, notes, and photos ("User Content"). We do not claim any rights to your User Content.</p>
<p>You are solely responsible for your User Content. We are not responsible for any loss of User Content due to device failure, app deletion, or any other cause. We recommend keeping iCloud sync enabled for data protection.</p>
<h2>7. HealthKit Integration</h2>
<p>The App may integrate with Apple HealthKit to read and write health-related data with your explicit permission. By enabling this integration, you acknowledge that:</p>
<ul>
<li>HealthKit data is governed by Apple's HealthKit terms and your device privacy settings</li>
<li>We do not access, store, or transmit your HealthKit data to any server</li>
<li>HealthKit integration is optional and can be revoked at any time through iOS Settings</li>
<li>We are not a medical device and do not provide medical advice</li>
</ul>
<h2>8. Disclaimer of Warranties</h2>
<p>THE APP IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.</p>
<p>We do not warrant that:</p>
<ul>
<li>The App will be uninterrupted, error-free, or secure</li>
<li>Any defects will be corrected</li>
<li>The App will meet your specific requirements</li>
<li>Data synced via iCloud will always be accurate or available</li>
</ul>
<div class="highlight-box">
<p><strong>Important:</strong> Feels is a mood tracking tool, not a medical device. It is not intended to diagnose, treat, cure, or prevent any medical or mental health condition. If you are experiencing a mental health crisis, please contact a healthcare professional or emergency services immediately.</p>
</div>
<h2>9. Limitation of Liability</h2>
<p>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL 88 OAK APPS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO LOSS OF DATA, LOSS OF PROFITS, OR LOSS OF GOODWILL, ARISING OUT OF OR IN CONNECTION WITH YOUR USE OF THE APP.</p>
<p>OUR TOTAL LIABILITY FOR ALL CLAIMS ARISING OUT OF OR RELATING TO THIS EULA OR THE APP SHALL NOT EXCEED THE AMOUNT YOU PAID FOR THE APP IN THE TWELVE (12) MONTHS PRECEDING THE CLAIM.</p>
<h2>10. Indemnification</h2>
<p>You agree to indemnify and hold harmless 88 Oak Apps, its affiliates, and their respective officers, directors, employees, and agents from any claims, damages, losses, liabilities, and expenses (including reasonable attorneys' fees) arising out of or related to your use of the App or violation of this EULA.</p>
<h2>11. Termination</h2>
<p>This EULA is effective until terminated. Your rights under this EULA will terminate automatically if you fail to comply with any of its terms. Upon termination:</p>
<ul>
<li>You must cease all use of the App and delete all copies from your devices</li>
<li>Any active subscriptions should be cancelled through your Apple ID settings</li>
<li>Sections 5, 8, 9, 10, and 14 shall survive termination</li>
</ul>
<h2>12. Changes to This Agreement</h2>
<p>We reserve the right to modify this EULA at any time. Changes will be posted on this page with an updated effective date. Your continued use of the App after changes constitutes acceptance of the modified terms. If you disagree with any changes, you should stop using the App and delete it from your devices.</p>
<h2>13. Governing Law</h2>
<p>This EULA shall be governed by and construed in accordance with the laws of the United States, without regard to its conflict of law provisions. Any disputes arising under this EULA shall be resolved in the courts of competent jurisdiction.</p>
<h2>14. Apple-Specific Terms</h2>
<p>This EULA is between you and 88 Oak Apps, not Apple Inc. Apple has no obligation to provide maintenance, support, or warranty for the App. In the event of any third-party intellectual property claim, 88 Oak Apps, not Apple, is responsible for investigation, defense, and settlement. Apple and its subsidiaries are third-party beneficiaries of this EULA.</p>
<h2>15. Severability</h2>
<p>If any provision of this EULA is held to be invalid or unenforceable, the remaining provisions shall continue in full force and effect. The invalid or unenforceable provision shall be modified to the minimum extent necessary to make it valid and enforceable.</p>
<h2>16. Entire Agreement</h2>
<p>This EULA, together with Apple's Standard EULA and our <a href="privacy.html">Privacy Policy</a>, constitutes the entire agreement between you and 88 Oak Apps regarding the App, and supersedes all prior agreements and understandings.</p>
<h2>17. Contact</h2>
<p>If you have questions about this EULA, contact us at:</p>
<p><a href="mailto:support@88oakapps.com">support@88oakapps.com</a></p>
</div>
<footer>
<div class="footer-content">
<div class="footer-logo"><img src="app-icon.png" alt="Feels" class="logo-icon">Feels</div>
<ul class="footer-links">
<li><a href="privacy.html">Privacy Policy</a></li>
<li><a href="eula.html">Terms of Service</a></li>
<li><a href="mailto:support@88oakapps.com">Support</a></li>
</ul>
<p class="footer-copy">&copy; 2026 88 Oak Apps. All rights reserved.</p>
</div>
</footer>
</body>
</html>

View File

@@ -4,6 +4,8 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Feels — Track Your Emotional Journey</title> <title>Feels — Track Your Emotional Journey</title>
<link rel="icon" type="image/png" href="app-icon.png">
<link rel="apple-touch-icon" href="app-icon.png">
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Plus+Jakarta+Sans:wght@300;400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Plus+Jakarta+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
@@ -84,6 +86,15 @@
font-size: 1.5rem; font-size: 1.5rem;
font-weight: 400; font-weight: 400;
letter-spacing: -0.02em; letter-spacing: -0.02em;
display: flex;
align-items: center;
gap: 0.5rem;
}
.logo-icon {
width: 32px;
height: 32px;
border-radius: 8px;
} }
.nav-links { .nav-links {
@@ -786,6 +797,9 @@
.footer-logo { .footer-logo {
font-family: 'Instrument Serif', serif; font-family: 'Instrument Serif', serif;
font-size: 1.25rem; font-size: 1.25rem;
display: flex;
align-items: center;
gap: 0.5rem;
} }
.footer-links { .footer-links {
@@ -872,7 +886,7 @@
</head> </head>
<body> <body>
<nav> <nav>
<div class="logo">Feels</div> <div class="logo"><img src="app-icon.png" alt="Feels" class="logo-icon">Feels</div>
<ul class="nav-links"> <ul class="nav-links">
<li><a href="#features">Features</a></li> <li><a href="#features">Features</a></li>
<li><a href="#devices">Devices</a></li> <li><a href="#devices">Devices</a></li>
@@ -1071,11 +1085,11 @@
<footer> <footer>
<div class="footer-content"> <div class="footer-content">
<div class="footer-logo">Feels</div> <div class="footer-logo"><img src="app-icon.png" alt="Feels" class="logo-icon">Feels</div>
<ul class="footer-links"> <ul class="footer-links">
<li><a href="#">Privacy Policy</a></li> <li><a href="privacy.html">Privacy Policy</a></li>
<li><a href="#">Terms of Service</a></li> <li><a href="eula.html">Terms of Service</a></li>
<li><a href="#">Support</a></li> <li><a href="mailto:support@88oakapps.com">Support</a></li>
<li><a href="#">Press Kit</a></li> <li><a href="#">Press Kit</a></li>
</ul> </ul>
<p class="footer-copy">© 2026 Feels. Made with 💚 for your wellbeing.</p> <p class="footer-copy">© 2026 Feels. Made with 💚 for your wellbeing.</p>

468
landing_page/privacy.html Normal file
View File

@@ -0,0 +1,468 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Feels — Privacy Policy</title>
<meta name="description" content="Feels Privacy Policy - Learn how we collect, use, and protect your data.">
<link rel="icon" type="image/png" href="app-icon.png">
<link rel="apple-touch-icon" href="app-icon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Plus+Jakarta+Sans:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--great: #4ADE80;
--great-glow: rgba(74, 222, 128, 0.4);
--good: #FBBF24;
--good-glow: rgba(251, 191, 36, 0.4);
--average: #94A3B8;
--average-glow: rgba(148, 163, 184, 0.3);
--bad: #60A5FA;
--bad-glow: rgba(96, 165, 250, 0.4);
--horrible: #F87171;
--horrible-glow: rgba(248, 113, 113, 0.4);
--bg-primary: #0A0A0B;
--bg-secondary: #111113;
--bg-card: rgba(255, 255, 255, 0.03);
--bg-glass: rgba(255, 255, 255, 0.05);
--border-subtle: rgba(255, 255, 255, 0.06);
--text-primary: #FAFAFA;
--text-secondary: rgba(255, 255, 255, 0.6);
--text-tertiary: rgba(255, 255, 255, 0.4);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.6;
overflow-x: hidden;
}
.serif {
font-family: 'Instrument Serif', Georgia, serif;
}
/* Noise texture overlay */
body::before {
content: '';
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
opacity: 0.03;
pointer-events: none;
z-index: 1000;
}
/* Navigation */
nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
padding: 1.5rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
backdrop-filter: blur(20px);
background: rgba(10, 10, 11, 0.8);
border-bottom: 1px solid var(--border-subtle);
}
.logo {
font-family: 'Instrument Serif', serif;
font-size: 1.5rem;
font-weight: 400;
letter-spacing: -0.02em;
color: var(--text-primary);
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
}
.logo-icon {
width: 32px;
height: 32px;
border-radius: 8px;
}
.nav-links {
display: flex;
gap: 2.5rem;
list-style: none;
}
.nav-links a {
color: var(--text-secondary);
text-decoration: none;
font-size: 0.875rem;
font-weight: 400;
transition: color 0.3s ease;
}
.nav-links a:hover {
color: var(--text-primary);
}
.nav-cta {
background: var(--text-primary);
color: var(--bg-primary);
padding: 0.625rem 1.25rem;
border-radius: 100px;
text-decoration: none;
font-size: 0.875rem;
font-weight: 500;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.nav-cta:hover {
transform: translateY(-2px);
box-shadow: 0 10px 40px rgba(255, 255, 255, 0.15);
}
/* Page Header */
.page-header {
padding: 10rem 2rem 4rem;
text-align: center;
position: relative;
overflow: hidden;
}
.page-header::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 500px;
height: 500px;
background: radial-gradient(circle, var(--great-glow) 0%, transparent 70%);
opacity: 0.15;
pointer-events: none;
}
.page-header h1 {
font-family: 'Instrument Serif', serif;
font-size: clamp(2.5rem, 6vw, 4rem);
font-weight: 400;
line-height: 1.1;
letter-spacing: -0.03em;
margin-bottom: 1rem;
position: relative;
z-index: 10;
}
.page-header p {
font-size: 1.125rem;
color: var(--text-secondary);
font-weight: 300;
position: relative;
z-index: 10;
}
/* Legal Content */
.legal-content {
max-width: 780px;
margin: 0 auto;
padding: 2rem 2rem 6rem;
}
.legal-content h2 {
font-family: 'Instrument Serif', serif;
font-size: 1.75rem;
font-weight: 400;
margin-top: 3rem;
margin-bottom: 1rem;
letter-spacing: -0.02em;
}
.legal-content h3 {
font-size: 1.125rem;
font-weight: 600;
margin-top: 2rem;
margin-bottom: 0.75rem;
}
.legal-content p {
color: var(--text-secondary);
margin-bottom: 1rem;
font-size: 0.9375rem;
line-height: 1.8;
}
.legal-content ul {
color: var(--text-secondary);
margin-bottom: 1rem;
padding-left: 1.5rem;
font-size: 0.9375rem;
line-height: 1.8;
}
.legal-content li {
margin-bottom: 0.5rem;
}
.legal-content a {
color: var(--great);
text-decoration: none;
transition: opacity 0.3s ease;
}
.legal-content a:hover {
opacity: 0.8;
}
.legal-content .effective-date {
display: inline-block;
background: var(--bg-glass);
border: 1px solid var(--border-subtle);
padding: 0.5rem 1rem;
border-radius: 100px;
font-size: 0.8125rem;
color: var(--text-tertiary);
margin-bottom: 2rem;
}
.legal-content .highlight-box {
background: var(--bg-card);
border: 1px solid var(--border-subtle);
border-radius: 16px;
padding: 1.5rem;
margin: 1.5rem 0;
}
.legal-content .highlight-box p {
margin-bottom: 0;
}
/* Footer */
footer {
padding: 3rem 2rem;
border-top: 1px solid var(--border-subtle);
}
.footer-content {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
.footer-logo {
font-family: 'Instrument Serif', serif;
font-size: 1.25rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.footer-links {
display: flex;
gap: 2rem;
list-style: none;
}
.footer-links a {
color: var(--text-tertiary);
text-decoration: none;
font-size: 0.875rem;
transition: color 0.3s ease;
}
.footer-links a:hover {
color: var(--text-primary);
}
.footer-copy {
font-size: 0.8125rem;
color: var(--text-tertiary);
}
/* Mobile responsiveness */
@media (max-width: 768px) {
nav {
padding: 1rem;
}
.nav-links {
display: none;
}
.page-header {
padding: 8rem 1.5rem 3rem;
}
.legal-content {
padding: 2rem 1.5rem 4rem;
}
.footer-content {
flex-direction: column;
text-align: center;
}
}
</style>
</head>
<body>
<nav>
<a href="index.html" class="logo"><img src="app-icon.png" alt="Feels" class="logo-icon">Feels</a>
<ul class="nav-links">
<li><a href="index.html#features">Features</a></li>
<li><a href="index.html#devices">Devices</a></li>
<li><a href="index.html#testimonials">Reviews</a></li>
</ul>
<a href="index.html#download" class="nav-cta">Download</a>
</nav>
<div class="page-header">
<h1>Privacy Policy</h1>
<p>Your feelings are yours. Here's how we keep it that way.</p>
</div>
<div class="legal-content">
<div class="effective-date">Effective Date: February 10, 2026</div>
<div class="highlight-box">
<p><strong>The short version:</strong> Feels is built around privacy. Your mood data stays on your devices and in your personal iCloud account. We don't have user accounts, we don't sell data, and we can't read your entries. We collect anonymous usage analytics to improve the app — and you can opt out at any time.</p>
</div>
<h2>1. Who We Are</h2>
<p>Feels is developed and operated by 88 Oak Apps ("we", "us", "our"). This Privacy Policy explains how we collect, use, and protect information when you use the Feels app for iOS and watchOS ("the App").</p>
<h2>2. Data That Stays on Your Devices</h2>
<p>The core of Feels — your mood entries, notes, and photos — is stored locally on your device using Apple's SwiftData framework. If you have iCloud enabled, this data syncs automatically through your personal iCloud account via Apple's CloudKit.</p>
<ul>
<li><strong>Mood entries</strong> — your daily mood rating (Great, Good, Average, Bad, Horrible)</li>
<li><strong>Notes</strong> — any text notes you attach to entries</li>
<li><strong>Photos</strong> — any images you attach to entries</li>
<li><strong>Streak data</strong> — your voting streak history</li>
</ul>
<p>We never have access to this data. It is stored on-device and, if iCloud is enabled, encrypted and synced by Apple. We cannot read, access, or recover your mood data.</p>
<h2>3. HealthKit Data</h2>
<p>If you grant permission, Feels can integrate with Apple HealthKit to read and write mindful minutes and mood data. HealthKit data is governed by Apple's strict privacy policies and is never shared with us or any third party. We do not use HealthKit data for analytics, advertising, or any purpose other than displaying it to you within the App.</p>
<h2>4. Anonymous Analytics</h2>
<p>We collect anonymous usage analytics to understand how people use Feels and to improve the app. This is handled through a self-hosted instance of PostHog, an open-source analytics platform, running on our own servers.</p>
<h3>What we collect:</h3>
<ul>
<li><strong>App usage events</strong> — which screens are viewed, which features are used (e.g., changing a theme, logging a mood), and how the app is navigated</li>
<li><strong>App preferences</strong> — which theme, icon pack, voting layout, and visual style you've selected (sent as aggregate properties, not tied to an identity)</li>
<li><strong>Device information</strong> — device model, OS version, app version, screen size, and locale</li>
<li><strong>Session data</strong> — session duration, app foreground/background events</li>
<li><strong>Performance data</strong> — network request timing (URLs and status codes, no request/response bodies)</li>
</ul>
<h3>What we do NOT collect:</h3>
<ul>
<li>Your name, email, or any personally identifiable information</li>
<li>Your mood entries, notes, or photos</li>
<li>Your iCloud account information</li>
<li>Your HealthKit data</li>
<li>Your location</li>
<li>Contacts, calendar, or any other personal data</li>
</ul>
<div class="highlight-box">
<p>All analytics are collected anonymously. We do not create user accounts and do not link analytics data to any identity. Each device generates a random anonymous identifier that cannot be traced back to you.</p>
</div>
<h3>Session Replay</h3>
<p>Feels may use PostHog's session replay feature, which captures anonymized visual recordings of app sessions to help us identify usability issues. Session replays do not capture text input, personal data, or mood content. This feature can be disabled at any time within the App. We may also disable it remotely if needed.</p>
<h3>Opting Out</h3>
<p>You can opt out of all analytics at any time in the App's Settings under the Privacy section. When opted out, no analytics data is collected or transmitted.</p>
<h2>5. How We Use Your Information</h2>
<ul>
<li>To provide and improve the Feels app experience</li>
<li>To understand how features are used so we can improve them</li>
<li>To identify and fix bugs and performance issues</li>
<li>To develop new features based on usage patterns</li>
</ul>
<h2>6. Subscription and Purchase Data</h2>
<p>Feels offers optional paid subscriptions ("Feels+") managed entirely through Apple's App Store and StoreKit. Payment processing is handled by Apple. We do not collect or store your payment information, Apple ID, or billing details.</p>
<p>We receive anonymized subscription status information (e.g., whether a subscription is active, in a trial period, or expired) solely to unlock premium features within the App.</p>
<h2>7. Data Sharing</h2>
<p>We do not sell, rent, or share your personal data with third parties. Period.</p>
<ul>
<li><strong>No advertising networks</strong> — Feels contains no ads and no ad tracking</li>
<li><strong>No data brokers</strong> — we never sell or provide data to third parties</li>
<li><strong>No social networks</strong> — any sharing features are initiated by you and use Apple's native share sheet</li>
</ul>
<p>Our analytics data is processed on our self-hosted servers and is never shared with external analytics providers.</p>
<h2>8. Third-Party Services</h2>
<ul>
<li><strong>Apple CloudKit:</strong> Used for syncing your personal data across devices (if iCloud is enabled). Subject to <a href="https://www.apple.com/legal/privacy/">Apple's Privacy Policy</a>.</li>
<li><strong>Apple StoreKit:</strong> Used for in-app purchases and subscriptions. Payment processing is handled entirely by Apple.</li>
<li><strong>Apple HealthKit:</strong> Used for reading and writing health-related data with your explicit permission. Subject to Apple's Privacy Policy.</li>
</ul>
<h2>9. Data Storage and Security</h2>
<p>Your mood data is stored on-device using Apple's encrypted storage. If iCloud sync is enabled, data is encrypted in transit and at rest by Apple's CloudKit infrastructure.</p>
<p>Anonymous analytics data is stored on our self-hosted PostHog instance, which is secured with industry-standard encryption and access controls.</p>
<h2>10. Data Retention</h2>
<ul>
<li><strong>Personal data</strong> — stored on your device and iCloud account indefinitely, or until you delete it. Deleting the app removes local data; iCloud data can be managed through your iCloud settings.</li>
<li><strong>Analytics data</strong> — retained for up to 24 months, then automatically purged.</li>
</ul>
<h2>11. Your Rights</h2>
<p>Because we don't collect personally identifiable information, most traditional data rights (access, portability, deletion) are handled directly through your device and iCloud account. You have full control over your data at all times.</p>
<p>You can:</p>
<ul>
<li>Delete any or all mood entries within the App</li>
<li>Delete the App and all local data at any time</li>
<li>Manage iCloud data through Apple's iCloud settings</li>
<li>Opt out of analytics in Settings &gt; Privacy</li>
<li>Disable session replay within the App's settings</li>
<li>Revoke HealthKit permissions through iOS Settings at any time</li>
<li>Contact us to ask what data we hold about you (which is none, since analytics are anonymous)</li>
</ul>
<h2>12. Children's Privacy</h2>
<p>Feels is not directed at children under the age of 13. We do not knowingly collect any information from children. Since we don't collect personal information from any users, there is no risk of children's data being stored or processed.</p>
<h2>13. Changes to This Policy</h2>
<p>We may update this Privacy Policy from time to time. Changes will be posted on this page with an updated effective date. Continued use of the App after changes constitutes acceptance of the updated policy.</p>
<h2>14. Contact</h2>
<p>If you have questions about this Privacy Policy or our privacy practices, contact us at:</p>
<p><a href="mailto:support@88oakapps.com">support@88oakapps.com</a></p>
</div>
<footer>
<div class="footer-content">
<div class="footer-logo"><img src="app-icon.png" alt="Feels" class="logo-icon">Feels</div>
<ul class="footer-links">
<li><a href="privacy.html">Privacy Policy</a></li>
<li><a href="eula.html">Terms of Service</a></li>
<li><a href="mailto:support@88oakapps.com">Support</a></li>
</ul>
<p class="footer-copy">&copy; 2026 88 Oak Apps. All rights reserved.</p>
</div>
</footer>
</body>
</html>