added new pages
This commit is contained in:
113
src/App.css
113
src/App.css
@@ -2982,3 +2982,116 @@
|
||||
box-shadow: none !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* ============================
|
||||
STATIC PAGES (Privacy, About)
|
||||
============================ */
|
||||
.static-page {
|
||||
min-height: 100dvh;
|
||||
background: linear-gradient(160deg, #eef6ee 0%, #dcfce7 100%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.static-page__header {
|
||||
padding: 1.25rem 2rem;
|
||||
border-bottom: 1px solid rgba(34, 197, 94, 0.2);
|
||||
background: rgba(255, 255, 255, 0.6);
|
||||
backdrop-filter: blur(8px);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.static-page__logo {
|
||||
font-family: "Sniglet", system-ui;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
color: #16a34a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.static-page__content {
|
||||
flex: 1;
|
||||
max-width: 680px;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 3rem 1.5rem 4rem;
|
||||
color: #1a2e1a;
|
||||
}
|
||||
|
||||
.static-page__content h1 {
|
||||
font-family: "Sniglet", system-ui;
|
||||
font-size: 2rem;
|
||||
font-weight: 700;
|
||||
color: #16a34a;
|
||||
margin: 0 0 0.5rem;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.static-page__content h2 {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 600;
|
||||
color: #15803d;
|
||||
margin: 2rem 0 0.75rem;
|
||||
}
|
||||
|
||||
.static-page__content p {
|
||||
line-height: 1.7;
|
||||
margin: 0 0 1rem;
|
||||
color: #374151;
|
||||
}
|
||||
|
||||
.static-page__content ul {
|
||||
padding-left: 1.25rem;
|
||||
margin: 0 0 1rem;
|
||||
color: #374151;
|
||||
}
|
||||
|
||||
.static-page__content li {
|
||||
line-height: 1.7;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
|
||||
.static-page__content a {
|
||||
color: #16a34a;
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 3px;
|
||||
}
|
||||
|
||||
.static-page__updated {
|
||||
font-size: 0.875rem;
|
||||
color: #6b7280;
|
||||
margin-bottom: 1.75rem !important;
|
||||
}
|
||||
|
||||
.static-page__tagline {
|
||||
font-size: 1.0625rem;
|
||||
color: #22c55e;
|
||||
font-weight: 500;
|
||||
margin-bottom: 1.75rem !important;
|
||||
}
|
||||
|
||||
.static-page__footer {
|
||||
padding: 1.5rem 2rem;
|
||||
border-top: 1px solid rgba(34, 197, 94, 0.2);
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
align-items: center;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.static-page__footer a {
|
||||
color: #16a34a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.static-page__footer a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.static-page__footer span {
|
||||
color: #9ca3af;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import HomePage from './pages/HomePage'
|
||||
import HistoryPage from './pages/HistoryPage'
|
||||
import SettingsPage from './pages/SettingsPage'
|
||||
import LoginPage from './pages/LoginPage'
|
||||
import PrivacyPage from './pages/PrivacyPage'
|
||||
import AboutPage from './pages/AboutPage'
|
||||
import './App.css'
|
||||
|
||||
function App() {
|
||||
@@ -37,6 +39,8 @@ function App() {
|
||||
</ProtectedRoute>
|
||||
}
|
||||
/>
|
||||
<Route path="/privacy" element={<PrivacyPage />} />
|
||||
<Route path="/about" element={<AboutPage />} />
|
||||
<Route path="*" element={<Navigate to="/" replace />} />
|
||||
</Routes>
|
||||
</BrowserRouter>
|
||||
|
||||
54
src/pages/AboutPage.tsx
Normal file
54
src/pages/AboutPage.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
import { Link } from 'react-router-dom'
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<div className="static-page">
|
||||
<header className="static-page__header">
|
||||
<Link to="/" className="static-page__logo">🌱 Grateful Journal</Link>
|
||||
</header>
|
||||
|
||||
<main className="static-page__content">
|
||||
<h1>About Grateful Journal</h1>
|
||||
<p className="static-page__tagline">
|
||||
A private space for gratitude and reflection. No feeds. No noise. Just you and your thoughts.
|
||||
</p>
|
||||
|
||||
<h2>What is it?</h2>
|
||||
<p>
|
||||
Grateful Journal is a free, end-to-end encrypted daily journal focused on gratitude.
|
||||
You write a few things you're grateful for each day, and over time you build a private
|
||||
record of the good in your life — visible only to you.
|
||||
</p>
|
||||
|
||||
<h2>Features</h2>
|
||||
<ul>
|
||||
<li><strong>End-to-end encrypted</strong> — your entries are encrypted before leaving your device. We cannot read them.</li>
|
||||
<li><strong>No ads, no tracking</strong> — we don't sell your data or show you ads.</li>
|
||||
<li><strong>Works offline</strong> — installable as a PWA on Android, iOS, and desktop.</li>
|
||||
<li><strong>Daily prompts</strong> — gentle nudges to keep your practice consistent.</li>
|
||||
<li><strong>History view</strong> — browse past entries and reflect on how far you've come.</li>
|
||||
<li><strong>Free to use</strong> — no subscription, no paywall.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Why gratitude?</h2>
|
||||
<p>
|
||||
Research consistently shows that a regular gratitude practice improves mood, reduces stress,
|
||||
and builds resilience. Grateful Journal gives you the simplest possible tool to build that habit —
|
||||
without distractions or social pressure.
|
||||
</p>
|
||||
|
||||
<h2>Privacy first</h2>
|
||||
<p>
|
||||
We built Grateful Journal because we believe your inner thoughts deserve a private space.
|
||||
Read our full <Link to="/privacy">Privacy Policy</Link> to understand exactly how your data is protected.
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<footer className="static-page__footer">
|
||||
<Link to="/">← Back to Grateful Journal</Link>
|
||||
<span>·</span>
|
||||
<Link to="/privacy">Privacy Policy</Link>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
62
src/pages/PrivacyPage.tsx
Normal file
62
src/pages/PrivacyPage.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
import { Link } from 'react-router-dom'
|
||||
|
||||
export default function PrivacyPage() {
|
||||
return (
|
||||
<div className="static-page">
|
||||
<header className="static-page__header">
|
||||
<Link to="/" className="static-page__logo">🌱 Grateful Journal</Link>
|
||||
</header>
|
||||
|
||||
<main className="static-page__content">
|
||||
<h1>Privacy Policy</h1>
|
||||
<p className="static-page__updated">Last updated: April 8, 2026</p>
|
||||
|
||||
<p>
|
||||
Grateful Journal is built on a simple promise: your journal entries are yours alone.
|
||||
We designed the app so that we cannot read your entries even if we wanted to.
|
||||
</p>
|
||||
|
||||
<h2>What we collect</h2>
|
||||
<ul>
|
||||
<li><strong>Account info</strong> — your name and email address via Google Sign-In, used solely to identify your account.</li>
|
||||
<li><strong>Journal entries</strong> — stored encrypted in our database. We do not have access to the content of your entries.</li>
|
||||
<li><strong>Usage data</strong> — no analytics, no tracking pixels, no third-party advertising SDKs.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Encryption</h2>
|
||||
<p>
|
||||
Your journal entries are end-to-end encrypted. They are encrypted on your device before being sent to our servers.
|
||||
We store only the encrypted ciphertext — decryption happens locally in your browser using your account key.
|
||||
</p>
|
||||
|
||||
<h2>Data sharing</h2>
|
||||
<p>
|
||||
We do not sell, share, or rent your personal data to any third party.
|
||||
We use Firebase (Google) for authentication only.
|
||||
</p>
|
||||
|
||||
<h2>Data deletion</h2>
|
||||
<p>
|
||||
You can delete your account and all associated data at any time from the Settings page.
|
||||
Deletion is permanent and irreversible.
|
||||
</p>
|
||||
|
||||
<h2>Cookies</h2>
|
||||
<p>
|
||||
We use a single session cookie to keep you signed in. No advertising or tracking cookies are used.
|
||||
</p>
|
||||
|
||||
<h2>Contact</h2>
|
||||
<p>
|
||||
Questions about this policy? Reach us at the contact details on our <Link to="/about">About page</Link>.
|
||||
</p>
|
||||
</main>
|
||||
|
||||
<footer className="static-page__footer">
|
||||
<Link to="/">← Back to Grateful Journal</Link>
|
||||
<span>·</span>
|
||||
<Link to="/about">About</Link>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user