- Add light/dark/system theme toggle in settings - Add DearDiary.io branding in navbar - Add task logging for journal generation with request/response - Rename project from TotalRecall to DearDiary - Update Docker configuration
134 lines
3.0 KiB
Markdown
134 lines
3.0 KiB
Markdown
# DearDiary
|
|
|
|
> Your day, analyzed. A journal that writes itself.
|
|
|
|
AI-powered daily journal that captures life through multiple input methods and generates thoughtful, reflective journal entries.
|
|
|
|
See [CHANGELOG.md](./CHANGELOG.md) for detailed version history.
|
|
|
|
## Features
|
|
|
|
- **Multiple Input Types**: Text notes, photos, voice memos, health data
|
|
- **AI Journal Generation**: OpenAI, Anthropic, Ollama, or LM Studio
|
|
- **Self-Hostable**: Run it yourself or use any hosted version
|
|
- **Same Codebase**: Single deployment works for single-user or multi-tenant
|
|
- **Task History**: Full logging of AI requests and responses
|
|
|
|
## Quick Start
|
|
|
|
### Docker (Recommended)
|
|
|
|
```bash
|
|
git clone https://github.com/your-repo/deardiary.git
|
|
cd deardiary
|
|
|
|
# Create .env file
|
|
cp backend/.env.example .env
|
|
# Edit .env and set JWT_SECRET
|
|
|
|
# Start
|
|
docker compose up -d
|
|
```
|
|
|
|
Visit http://localhost:5173
|
|
|
|
### Manual Development
|
|
|
|
```bash
|
|
# Backend
|
|
cd backend
|
|
bun install
|
|
bunx prisma generate
|
|
bunx prisma db push
|
|
bun run dev
|
|
|
|
# Frontend (separate terminal)
|
|
cd frontend
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `DATABASE_URL` | `file:./data/deardiary.db` | SQLite, PostgreSQL, or MySQL |
|
|
| `JWT_SECRET` | (required) | Secret for JWT signing |
|
|
| `MEDIA_DIR` | `./data/media` | Directory for uploads |
|
|
| `PORT` | `3000` | Server port |
|
|
| `CORS_ORIGIN` | `*` | Allowed origins |
|
|
|
|
### Database Examples
|
|
|
|
```bash
|
|
# SQLite (default)
|
|
DATABASE_URL="file:./data/deardiary.db"
|
|
|
|
# PostgreSQL
|
|
DATABASE_URL="postgresql://user:pass@host:5432/deardiary"
|
|
|
|
# MySQL
|
|
DATABASE_URL="mysql://user:pass@host:3306/deardiary"
|
|
```
|
|
|
|
## AI Providers
|
|
|
|
Configure in Settings after logging in:
|
|
|
|
| Provider | Setup |
|
|
|----------|-------|
|
|
| **OpenAI** | API key required |
|
|
| **Anthropic** | API key required |
|
|
| **Ollama** | Local URL (default: http://localhost:11434) |
|
|
| **LM Studio** | Local URL (default: http://localhost:1234/v1) |
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
deardiary/
|
|
├── backend/ # Bun + Hono API server
|
|
│ ├── src/
|
|
│ │ ├── routes/ # API endpoints
|
|
│ │ ├── services/ # AI providers
|
|
│ │ └── middleware/
|
|
│ └── prisma/ # Database schema
|
|
├── frontend/ # React + Vite web app
|
|
├── android/ # Native Android app (Kotlin + Compose)
|
|
├── docker-compose.yml
|
|
└── PLAN.md # Full specification
|
|
```
|
|
|
|
## API
|
|
|
|
All endpoints require `Authorization: Bearer {api_key}` header.
|
|
|
|
```
|
|
POST /api/v1/auth/register
|
|
POST /api/v1/auth/login
|
|
POST /api/v1/auth/api-key
|
|
|
|
GET /api/v1/days
|
|
GET /api/v1/days/:date
|
|
DELETE /api/v1/days/:date
|
|
|
|
POST /api/v1/entries
|
|
GET /api/v1/entries/:id
|
|
PUT /api/v1/entries/:id
|
|
DELETE /api/v1/entries/:id
|
|
POST /api/v1/entries/:id/photo
|
|
POST /api/v1/entries/:id/voice
|
|
|
|
POST /api/v1/journal/generate/:date
|
|
GET /api/v1/journal/:date
|
|
GET /api/v1/journal/:date/tasks
|
|
|
|
GET /api/v1/settings
|
|
PUT /api/v1/settings
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|