Files
me-joachimhummel-de/README.md
joachimhummel 5fb91deb13 Update project setup and remove unnecessary database requirements
Refactor README.md to remove database prerequisites and environmental variables, as the API server does not utilize the database.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 6f3329ae-2dcc-46cc-bf2e-f58b7a5fa805
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 9e23be68-a2a3-473e-9d7c-be900f23a459
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/e678fe28-87ab-4437-945b-7a15e872a292/6f3329ae-2dcc-46cc-bf2e-f58b7a5fa805/vRxTy2Z
Replit-Helium-Checkpoint-Created: true
2026-05-15 16:43:58 +00:00

102 lines
2.5 KiB
Markdown
Raw Permalink 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.
# Joachim Hummel Portfolio
Personal portfolio website for Joachim Hummel — Senior IT-Consultant, DevOps Engineer, KI-Automation Experte.
Built with React + Vite (frontend) and Express 5 (API), running as a pnpm monorepo.
---
## Prerequisites
- **Node.js** 24+
- **pnpm** 10+ — install via `npm install -g pnpm`
---
## Installation
```bash
# 1. Clone the repository
git clone <repo-url>
cd <repo-folder>
# 2. Install all workspace dependencies
pnpm install
```
---
## Environment Variables
Create a `.env` file in the project root (or export the variables in your shell):
```env
# Session secret — any long random string (required)
SESSION_SECRET=your-very-long-random-secret-here
# Brevo (Sendinblue) API key — required for the contact form to send emails
BREVO_API_KEY=your-brevo-api-key
```
> **Brevo API key:** Sign up for free at [brevo.com](https://www.brevo.com), then generate an API key under *SMTP & API → API Keys*.
---
## Running Locally
Start both services in separate terminal windows:
```bash
# Terminal 1 — API server (http://localhost:8080)
pnpm --filter @workspace/api-server run dev
# Terminal 2 — Frontend (http://localhost:23924)
pnpm --filter @workspace/joachim-portfolio run dev
```
Open **http://localhost:23924** in your browser.
---
## Project Structure
```
artifacts/
api-server/ # Express 5 API — contact form, email via Brevo
joachim-portfolio/ # React + Vite frontend (portfolio site)
lib/
api-spec/ # OpenAPI spec + generated client hooks
api-client-react/ # Generated React Query hooks (from Orval)
scripts/ # Utility scripts
```
---
## Useful Commands
| Command | Description |
|---------|-------------|
| `pnpm install` | Install all dependencies |
| `pnpm run typecheck` | Full TypeScript check across all packages |
| `pnpm run build` | Typecheck + build all packages |
| `pnpm --filter @workspace/api-spec run codegen` | Regenerate API hooks from OpenAPI spec |
---
## Production Build
```bash
# Build frontend static files
pnpm --filter @workspace/joachim-portfolio run build
# Output: artifacts/joachim-portfolio/dist/public
# Build API server
pnpm --filter @workspace/api-server run build
# Output: artifacts/api-server/dist/index.mjs
# Start API server in production
NODE_ENV=production PORT=8080 node --enable-source-maps artifacts/api-server/dist/index.mjs
```
Serve the frontend's `dist/public` folder via any static file server (Nginx, Caddy, etc.) and proxy `/api/*` requests to the API server.