mirror of
https://github.com/Tony0410/quietthanks.git
synced 2026-05-25 05:41:38 +08:00
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:
131
README.md
Normal file
131
README.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user