Files
quietthanks/README.md
Gemini Agent 5555c1e6b5 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>
2026-01-24 01:57:20 +00:00

132 lines
3.0 KiB
Markdown

# Quiet Thanks
A calm, private gratitude and mood log. No streaks, no gamification—just a simple way to reflect on what you're grateful for.
## Features
- **Quick check-in**: One prompt, optional mood, optional tags. Entry capture takes 10-20 seconds.
- **Autosave**: No save button needed. Your entry saves automatically as you type.
- **Timeline**: View all entries in reverse chronological order with filters.
- **Weekly reflection**: See your entry count and top tags from the past 7 days.
- **Export**: Download all entries as Markdown or JSON.
- **Dark mode**: Calm, minimal interface with soft colors.
- **Self-hosted**: Your data stays on your server.
## Quick Start
### Docker (Recommended)
```bash
docker compose up -d
```
The app will be available at `http://localhost:6124`.
### Manual Setup
1. Install dependencies:
```bash
npm install
```
2. Generate and run database migrations:
```bash
npm run db:generate
npm run db:migrate
```
3. Start the development server:
```bash
npm run dev
```
4. Open `http://localhost:3000` in your browser.
## Development
```bash
# Install dependencies
npm install
# Generate database migrations after schema changes
npm run db:generate
# Run migrations
npm run db:migrate
# Start dev server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# View database with Drizzle Studio
npm run db:studio
```
## Database
- **Location**: `./data/quietthanks.db` (SQLite)
- **Environment variable**: `DATABASE_PATH` to customize location
- **Migrations**: Stored in `./drizzle/`
The database is created automatically when you run migrations. In Docker, the `./data` directory is mounted as a volume to persist data.
### Schema
- **entries**: Main gratitude entries with date, text, optional mood (1-5), rough day flag, and timestamps
- **tags**: Normalized tag names
- **entry_tags**: Junction table linking entries to tags
## Export
Navigate to `/export` or use the Export tab to download your data:
- **Markdown**: Human-readable format, grouped by date, includes mood and tags
- **JSON**: Full data export with all fields and timestamps
Exports include all entries regardless of filters.
## Configuration
### App Name
Change the app name by editing `src/lib/constants.ts`:
```typescript
export const APP_NAME = "My Gratitude Log";
```
### Port
In `docker-compose.yml`, change the port mapping:
```yaml
ports:
- "8080:3000" # Change 8080 to your desired port
```
## Tech Stack
- **Framework**: Next.js 16 with App Router
- **Language**: TypeScript
- **Styling**: Tailwind CSS 4
- **Database**: SQLite with Drizzle ORM
- **Icons**: Lucide React
## Future Extension Points
These features are not implemented but the architecture supports them:
- **Cloud sync**: Add authentication and a sync service to enable cross-device access
- **LLM summaries**: Integrate with an LLM API to generate monthly reflections
- **Notifications**: Add push notifications for daily reminders
- **Import**: Add an import endpoint to restore from JSON exports
## License
MIT