Files
schopenhauer-chat/README.md
2026-06-03 19:17:38 +02:00

116 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Will & Representation — Schopenhauer Chat App
*“Speak, and the Will shall betray itself.”*
**Will & Representation** is a minimal, elegant, mobile-first chat application that allows users to converse with an AI persona inspired by the 19th-century German philosopher **Arthur Schopenhauer**. Unlike generic conversational bots, this application acts as a dry, elegant, and philosophically consistent interlocutor grounded deeply in Schopenhauers core doctrine: the world as representation, the blind striving of the Will, existence swinging between suffering and boredom, art as temporary intellectual liberation, and compassion as the true foundation of ethics.
---
## 🎨 Design & Visuals
The interface is designed with a **dark-academic aesthetic** featuring:
- **Palette**: Clean, modern dark mode surfaces (`#0E0E10` background, `#17171A` surfaces) with high-contrast warm cream text (`#F4F1EA`) and premium gold accents (`#C8A96A`).
- **Typography**: Sleek Sans-serif body font (`Inter`) combined with elegant Serif headers (`Cormorant Garamond`).
- **Mobile First**: Fixed bottom chat inputs, safe-area boundary configurations, smooth scrolling animations, and auto-resizing text fields tailored for phone screen viewports.
---
## 🛠️ Tech Stack
- **Core Framework**: [Next.js 15+ / 16 (App Router)](https://nextjs.org/)
- **Logic**: React 19, TypeScript
- **Styling**: Tailwind CSS v4 with custom design tokens
- **AI SDK**: Official `@google/genai` (Google Gen AI SDK)
- **Markdown Support**: `react-markdown` for rendering assistant formatting (quotes, lists, code snippets)
- **State Store**: Client-side `localStorage` caching for secure local conversation history
---
## ⚙️ Environment Variables
Copy the example template to prepare your local configuration:
```bash
cp .env.example .env.local
```
Open `.env.local` and add your credentials:
```env
# Google Gemini API key from AI Studio
GEMINI_API_KEY=your_gemini_api_key_here
# Default model (can override)
GEMINI_MODEL=gemini-3.1-flash
```
*Note: The backend endpoint includes a model fallback sequence. If `gemini-3.1-flash` is not available, it automatically falls back to `gemini-2.5-flash` and then `gemini-1.5-flash` to prevent API failures.*
---
## 🚀 Local Setup & Development
1. **Install Dependencies**:
```bash
npm install
```
2. **Run Dev Server**:
```bash
npm run dev
```
3. **Open the browser**:
Navigate to [http://localhost:3000](http://localhost:3000) using a desktop or mobile browser viewport.
---
## 🧠 Key Features & Usage
### 1. Persona Intensity Modes
You can customize the philosopher's tone via the **Settings Modal** (accessible from the header top-right):
- **Gentle Schopenhauer**: Softens the delivery, offering patient, empathetic, and slightly less biting responses to personal struggles while maintaining philosophical seriousness.
- **Classical Schopenhauer (Default)**: Lucid, formal, pessimistic, and dryly witty. Strictly aligns with his historical treatises.
- **Severe Schopenhauer**: Concise, sharp, and cutting. Highly skeptical of human ambition and societal optimism.
### 2. Source-Grounded Mode
Toggle **Source-Grounded Mode** in the settings. This appends directives to anchor replies strictly to historical publications, reminding the simulation to draw directly from his main works.
### 3. Quote Card Generator
Click the **Quote** (quotation mark) icon beneath any response from the assistant. This opens the **Quote Card Generator**. You can edit the text to shorten it, preview it on a beautiful dark-academic gold-bordered canvas, and download it as an **800x500 PNG image** for sharing.
### 4. Safety Guardrails
Discussing existential pessimism necessitates care. The application monitors incoming messages for crisis signals. If expressions of self-harm or suicidal intent are detected, the system immediately bypasses the philosophical persona to deliver direct, compassionate mental health resources and helpline information.
---
## 🐳 Docker Deployment
The application is completely containerized for simple plug-and-play execution.
1. **Verify your Env File**:
Ensure `.env.local` exists and contains your `GEMINI_API_KEY`.
2. **Start the Container**:
```bash
docker compose up --build -d
```
3. **Browse the App**:
Navigate to [http://localhost:3000](http://localhost:3000) on your device.
4. **Stop the Container**:
```bash
docker compose down
```
---
## 📚 Bibliography & References
For further reading on Arthur Schopenhauer's original public-domain writings, refer to:
- **Project Gutenberg Author Index**: [Arthur Schopenhauer Page](https://www.gutenberg.org/ebooks/author/3648)
- **The World as Will and Idea, Vol. 1**: [Gutenberg eBook 38427](https://www.gutenberg.org/ebooks/38427)
- **Studies in Pessimism**: [Gutenberg eBook 10732](https://www.gutenberg.org/ebooks/10732)
- **Internet Archive PDF Index**: [The World as Will and Representation](https://archive.org/details/the-world-as-will-and-representation)