132 lines
3.3 KiB
Markdown
132 lines
3.3 KiB
Markdown
# DearDiary
|
|
|
|
Self-hosted AI-powered daily journaling application. Capture events throughout the day and let AI generate thoughtful diary pages from your entries.
|
|
|
|
## Features
|
|
|
|
- Quick event capture with keyboard shortcut (Ctrl+J)
|
|
- Multiple event types: text, health, photo, voice
|
|
- **Automatic geolocation** - events tagged with your location
|
|
- AI-powered diary page generation with customizable providers
|
|
- Events become immutable once a diary is generated (prevents editing past memories)
|
|
- Regenerate diary pages with additional instructions
|
|
- Generation tasks with title tracking per task
|
|
- Read all diaries with pagination (10/50/100 per page)
|
|
- Dashboard with diary excerpts
|
|
- Calendar view for browsing past entries
|
|
- Full-text search across events and diaries
|
|
- Export/Import data with version checking
|
|
- Dark/light theme support
|
|
- Self-hostable with Docker
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone git@git.kropa.tech:lotherk/deardiary.git
|
|
cd deardiary
|
|
|
|
# Configure environment (optional - defaults work out of box)
|
|
cp .env.example .env
|
|
|
|
# Start with Docker
|
|
docker compose up -d
|
|
```
|
|
|
|
Access the app at `http://localhost:3000`
|
|
|
|
Default credentials: `admin@localhost` / `changeme123`
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
Copy `.env.example` to `.env` and configure:
|
|
|
|
```bash
|
|
# Backend
|
|
BACKEND_JWT_SECRET=your-secret-key
|
|
BACKEND_DEFAULT_USER_EMAIL=admin@example.com
|
|
BACKEND_DEFAULT_USER_PASSWORD=your-password
|
|
|
|
# Default AI for new users (optional)
|
|
BACKEND_DEFAULT_AI_PROVIDER=groq
|
|
BACKEND_DEFAULT_AI_MODEL=llama-3.3-70b-versatile
|
|
BACKEND_DEFAULT_AI_API_KEY=your-api-key
|
|
|
|
# Website links (for product website)
|
|
WEBSITE_APP_URL=https://your-app.example.com
|
|
GIT_URL=https://git.kropa.tech/lotherk/deardiary
|
|
```
|
|
|
|
### AI Providers
|
|
|
|
Go to Settings and select your AI provider (Groq, OpenAI, Anthropic, Ollama, LM Studio, xAI, Custom).
|
|
|
|
New users will use the system default AI settings by default. Users can uncheck "Use system default settings" to configure their own.
|
|
|
|
## Development
|
|
|
|
### Prerequisites
|
|
|
|
- Bun
|
|
- Node.js 20+
|
|
- Docker
|
|
|
|
### Backend
|
|
|
|
```bash
|
|
cd backend
|
|
bun install
|
|
bunx prisma generate
|
|
bun run dev
|
|
```
|
|
|
|
### Frontend
|
|
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### Docker Build
|
|
|
|
```bash
|
|
docker compose build && docker compose up -d
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
├── backend/ # Hono + Prisma backend
|
|
│ ├── prisma/ # Database schema
|
|
│ └── src/ # API routes and AI services
|
|
├── frontend/ # React + Vite frontend
|
|
│ └── src/
|
|
│ ├── pages/ # Page components
|
|
│ ├── components/
|
|
│ └── lib/ # API client, geolocation
|
|
├── www/ # Product website with docs
|
|
├── Dockerfile # App container (frontend + backend + nginx)
|
|
├── Dockerfile.website # Website container with envsubst
|
|
├── docker-compose.yml
|
|
└── docker-entrypoint.d/ # Entrypoint scripts
|
|
```
|
|
|
|
## Routes
|
|
|
|
- `/` - Dashboard with recent diary pages and excerpts
|
|
- `/today` - Today's event stream (main capture page)
|
|
- `/diary` - Paginated diary reader (10/50/100 per page)
|
|
- `/journal/:date` - View/edit diary page with generation tasks
|
|
- `/day/:date` - View day's events
|
|
- `/calendar` - Calendar view
|
|
- `/settings` - Configuration and Export/Import
|
|
|
|
## License
|
|
|
|
MIT License
|
|
|
|
Copyright 2026 Konrad Lother
|