docs: update README with email package, buttplug CI badge, and 2026 copyright
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
24
README.md
24
README.md
@@ -15,6 +15,7 @@ Built with passion, technology, and the fearless spirit of sexual empowerment
|
||||
|
||||
[](https://dev.pivoine.art/valknar/sexy/actions)
|
||||
[](https://dev.pivoine.art/valknar/sexy/actions)
|
||||
[](https://dev.pivoine.art/valknar/sexy/actions)
|
||||
[](LICENSE)
|
||||
[](https://sexy.pivoine.art)
|
||||
|
||||
@@ -39,6 +40,7 @@ Like Beate Uhse breaking barriers in post-war Germany, we believe in the freedom
|
||||
- 🌍 **Internationalization** — pleasure speaks all languages
|
||||
- 🏆 **Gamification** — achievements, leaderboards, and reward points
|
||||
- 💬 **Comments & Social** — build your community
|
||||
- 💌 **Professional HTML Emails** — Maizzle v6 + Tailwind CSS 4 templated email (verification, password reset)
|
||||
- 📊 **Analytics Integration** (Umami) — know your admirers
|
||||
- 🐳 **Self-hosted CI/CD** via Gitea Actions on `dev.pivoine.art`
|
||||
|
||||
@@ -72,6 +74,11 @@ Like Beate Uhse breaking barriers in post-war Germany, we believe in the freedom
|
||||
│ ├─ TypeScript + Rust → Power and precision │
|
||||
│ └─ WebBluetooth API → Wireless intimacy │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ 💌 Email Layer │
|
||||
│ ├─ Maizzle v6 → HTML email framework │
|
||||
│ ├─ @maizzle/tailwindcss → Email-safe Tailwind CSS 4 │
|
||||
│ └─ Nodemailer → SMTP delivery │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ 🌸 DevOps Layer │
|
||||
│ ├─ Docker → Containerized ecstasy │
|
||||
│ ├─ Gitea Actions → Self-hosted seduction │
|
||||
@@ -130,13 +137,14 @@ GraphQL playground is available at `http://localhost:4000/graphql` — explore e
|
||||
|
||||
## 🌹 Project Structure
|
||||
|
||||
This monorepo contains three packages, each serving its purpose:
|
||||
This monorepo contains four packages, each serving its purpose:
|
||||
|
||||
```
|
||||
sexy.pivoine.art/
|
||||
├─ 💄 packages/frontend/ → SvelteKit app (the seduction)
|
||||
├─ ⚡ packages/backend/ → Fastify + GraphQL API (the engine)
|
||||
└─ 🎮 packages/buttplug/ → Hardware control (the connection)
|
||||
├─ 🎮 packages/buttplug/ → Hardware control (the connection)
|
||||
└─ 💌 packages/email/ → Maizzle HTML email templates
|
||||
```
|
||||
|
||||
### 💄 Frontend (`packages/frontend/`)
|
||||
@@ -156,6 +164,13 @@ Files stored as `<UPLOAD_DIR>/<uuid>/<filename>` with on-demand WebP transforms
|
||||
Hybrid TypeScript/Rust package for intimate hardware control via WebBluetooth.
|
||||
Compiled to WebAssembly for browser-based Bluetooth device communication.
|
||||
|
||||
### 💌 Email (`packages/email/`)
|
||||
|
||||
Professional HTML email templates built with **Maizzle v6** + **Tailwind CSS 4** (`@maizzle/tailwindcss`).
|
||||
Design tokens mirror the frontend's `app.css` exactly — same oklch colors, Noto Sans font, semantic classes.
|
||||
LightningCSS automatically converts oklch values to hex for email client compatibility.
|
||||
Exported functions: `renderVerification({ token })` and `renderPasswordReset({ token })` — each returns `{ subject, html }`.
|
||||
|
||||
---
|
||||
|
||||
## 🗃️ Database Schema
|
||||
@@ -241,6 +256,7 @@ Automated builds run on **[dev.pivoine.art](https://dev.pivoine.art/valknar/sexy
|
||||
|
||||
- ✅ Frontend image → `dev.pivoine.art/valknar/sexy:latest`
|
||||
- ✅ Backend image → `dev.pivoine.art/valknar/sexy-backend:latest`
|
||||
- ✅ Buttplug image → `dev.pivoine.art/valknar/sexy-buttplug:latest`
|
||||
- ✅ Triggers on push to `main`, `develop`, or version tags (`v*.*.*`)
|
||||
- ✅ Build cache via registry for fast successive builds
|
||||
|
||||
@@ -329,6 +345,8 @@ _Für die Mäuse..._ 🐭💕
|
||||
| [Drizzle ORM](https://orm.drizzle.team/) | Database |
|
||||
| [Sharp](https://sharp.pixelplumbing.com/) | Image transforms |
|
||||
| [Buttplug.io](https://buttplug.io/) | Hardware |
|
||||
| [Maizzle](https://maizzle.com/) | HTML email framework |
|
||||
| [Nodemailer](https://nodemailer.com/) | Email delivery |
|
||||
| [bits-ui](https://www.bits-ui.com/) | UI components |
|
||||
| [Gitea](https://dev.pivoine.art) | Self-hosted VCS & CI |
|
||||
|
||||
@@ -383,6 +401,6 @@ _"Eine Frau, die ihre Sexualität selbstbestimmt lebt, ist eine freie Frau."_
|
||||
|
||||
_Pleasure is a human right. Technology is freedom. Together, they are power._
|
||||
|
||||
**[sexy.pivoine.art](https://sexy.pivoine.art)** | © 2025 Palina & Valknar
|
||||
**[sexy.pivoine.art](https://sexy.pivoine.art)** | © 2026 Palina & Valknar
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user