# Cozy Den 🏡☕

A cozy landing page for hiddenden.cafe built with Astro.

## About

Cozy Den is a warm, self-hosted corner of the internet. This landing page represents the values of privacy, open-source software, and creating comfortable digital spaces.

## Features

- ☕ Cozy, warm aesthetic with hidden den theme
- 🎨 Catppuccin Mocha color palette
- 📱 Responsive design
- ⚡ Built with Astro for blazing fast performance
- 🐳 Docker support for easy deployment
- 📝 Blog powered by Astro Content Collections (hardcoded Markdown, no CMS)

## Setup

### Prerequisites

- Node.js 18+ and npm
- (Optional) Docker for containerized deployment

### Installation

1. Clone or download this project
2. Install dependencies:
```bash
npm install
```

3. Run the development server:
```bash
npm run dev
```

4. Build for production:
```bash
npm run build
```

5. Preview production build:
```bash
npm run preview
```

## Docker Deployment

### Building the Docker Image

```bash
docker build -t cozy-den .
```

### Running the Container

```bash
docker run -d -p 3000:80 --name cozy-den cozy-den
```

Or with docker-compose:

```bash
docker-compose up -d
```

### Pushing to Gitea Registry

```bash
# Tag the image
docker tag cozy-den git.hiddenden.cafe/mats/cozy-den:latest

# Login to your Gitea registry
docker login git.hiddenden.cafe

# Push the image
docker push git.hiddenden.cafe/mats/cozy-den:latest
```

## Blog Text-to-Speech

Blog posts kunnen automatisch omgezet worden naar audio met `scripts/tts_generate.py`.

### Setup

1. Kopieer `.env.example` naar `.env` en vul je API key in
2. Exporteer de variabelen:
```bash
export GOOGLE_API_KEY=jouw_sleutel_hier
# of: export MISTRAL_API_KEY=... / export OPENAI_API_KEY=...
```

### Audio genereren

```bash
# Eén post — output: <slug>.mp3 in de huidige map
python scripts/tts_generate.py src/content/blog/hello-world.md

# Andere output directory
python scripts/tts_generate.py src/content/blog/hello-world.md --output-dir public/audio

# Andere provider
TTS_PROVIDER=openai python scripts/tts_generate.py src/content/blog/hello-world.md
```

Beschikbare providers (via `TTS_PROVIDER`):

| Provider | Env var | Prijs |
|---|---|---|
| `google` (standaard) | `GOOGLE_API_KEY` | 1M chars/maand gratis |
| `mistral` | `MISTRAL_API_KEY` | ~$16/M chars |
| `openai` | `OPENAI_API_KEY` | ~$15/M chars |

### Audio tonen op een blogpost

Voeg `audio: true` toe aan het frontmatter van de post. De `<audio>` player verschijnt automatisch en laadt van `https://audio.hiddenden.cafe/<slug>.mp3`.

```yaml
---
title: "Mijn post"
audio: true
---
```

## Customization

The site is built to be easily customizable:

- **Colors**: Edit the CSS variables in `src/layouts/BaseLayout.astro`
- **Content**: Update sections in `src/pages/index.astro`
- **Favicon**: Replace `public/favicon.svg`
- **Blog posts**: Add `.md` files to `src/content/blog/` — they appear automatically at `/blog`
- **Blog images**: Place images in `public/blog/<post-slug>/` and reference with `/blog/<post-slug>/image.jpg`

## Technology Stack

- [Astro](https://astro.build/) - Static site generator
- Vanilla CSS with custom properties
- TypeScript for type safety

## License

Personal project - feel free to use as inspiration for your own cozy corners of the internet!

---

Made with 💖 by Latte
