Latte 77b5eb86c8 Add CLAUDE guide and publish blog posts
Add CLAUDE.md with repo guidance and architecture notes
Add new post "The Haircut Nobody Mentioned"
Adjust pubDate for Clearing the Queue and Knowing Your Worth
Remove draft flag from Knowing Your Worth
Fix frontmatter in Building as Avoidance
2026-05-06 20:58:38 +02:00
2026-03-08 16:17:43 +01:00
2026-04-05 15:21:26 +02:00

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:
npm install
  1. Run the development server:
npm run dev
  1. Build for production:
npm run build
  1. Preview production build:
npm run preview

Docker Deployment

Building the Docker Image

docker build -t cozy-den .

Running the Container

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

Or with docker-compose:

docker-compose up -d

Pushing to Gitea Registry

# 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:
export GOOGLE_API_KEY=jouw_sleutel_hier
# of: export MISTRAL_API_KEY=... / export OPENAI_API_KEY=...

Audio genereren

# 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.

---
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 - 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

S
Description
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.
Readme 72 MiB
Languages
Astro 82.5%
TypeScript 10.8%
Python 6.2%
Dockerfile 0.3%
JavaScript 0.2%