Initial commit: Quiet Thanks gratitude app

A calm, private gratitude and mood log built with Next.js 16, TypeScript,
Tailwind CSS, and SQLite/Drizzle ORM.

Features:
- Quick check-in with autosave (800ms debounce)
- Optional mood selector (5 levels) with accessibility labels
- Optional tags with tap-to-add from recent
- Timeline with weekly reflection card
- Filters by mood, tag, and rough day
- Export to Markdown and JSON
- Dark mode default
- Delete with undo toast
- Docker deployment ready

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Gemini Agent
2026-01-24 01:57:20 +00:00
commit 5555c1e6b5
43 changed files with 11337 additions and 0 deletions

73
src/app/settings/page.tsx Normal file
View File

@@ -0,0 +1,73 @@
import { APP_NAME } from "@/lib/constants";
export default function SettingsPage() {
return (
<div>
<header className="mb-8">
<h1 className="text-2xl font-light">{APP_NAME}</h1>
<p className="text-sm text-muted">Settings</p>
</header>
<div className="space-y-6">
{/* Notifications - disabled in MVP */}
<div className="p-4 bg-surface border border-border rounded-xl opacity-50">
<div className="flex items-center justify-between">
<div>
<h3 className="font-medium">Daily reminder</h3>
<p className="text-sm text-muted">
Get a gentle nudge to check in
</p>
</div>
<button
disabled
className="relative w-12 h-6 bg-border rounded-full cursor-not-allowed"
>
<span className="absolute left-1 top-1 w-4 h-4 bg-muted rounded-full" />
</button>
</div>
</div>
{/* Sync - disabled in MVP */}
<div className="p-4 bg-surface border border-border rounded-xl opacity-50">
<div className="flex items-center justify-between">
<div>
<h3 className="font-medium">Cloud sync</h3>
<p className="text-sm text-muted">
Sync across devices (coming soon)
</p>
</div>
<button
disabled
className="relative w-12 h-6 bg-border rounded-full cursor-not-allowed"
>
<span className="absolute left-1 top-1 w-4 h-4 bg-muted rounded-full" />
</button>
</div>
</div>
{/* LLM Summaries - disabled in MVP */}
<div className="p-4 bg-surface border border-border rounded-xl opacity-50">
<div className="flex items-center justify-between">
<div>
<h3 className="font-medium">AI summaries</h3>
<p className="text-sm text-muted">
Monthly reflections with LLM (coming soon)
</p>
</div>
<button
disabled
className="relative w-12 h-6 bg-border rounded-full cursor-not-allowed"
>
<span className="absolute left-1 top-1 w-4 h-4 bg-muted rounded-full" />
</button>
</div>
</div>
<div className="pt-6 border-t border-border text-center text-sm text-muted">
<p>{APP_NAME} v0.1.0</p>
<p className="mt-1">A calm, private gratitude log.</p>
</div>
</div>
</div>
);
}