diff --git a/README.md b/README.md index e6aee82..4245a86 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,10 @@ Built with passion, technology, and the fearless spirit of sexual empowerment -[![Build Status](https://img.shields.io/github/actions/workflow/status/valknarxxx/sexy.pivoine.art/docker-build-push.yml?style=for-the-badge&logo=docker&logoColor=white&color=FF69B4&labelColor=8B008B)](https://github.com/valknarxxx/sexy.pivoine.art/actions/workflows/docker-build-push.yml) -[![Security Scan](https://img.shields.io/github/actions/workflow/status/valknarxxx/sexy.pivoine.art/docker-scan.yml?style=for-the-badge&logo=security&logoColor=white&label=Security&color=DA70D6&labelColor=8B008B)](https://github.com/valknarxxx/sexy.pivoine.art/actions/workflows/docker-scan.yml) +[![Build Frontend](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdev.pivoine.art%2Fvalknar%2Fsexy.pivoine.art%2Factions%2Ftasks.json&query=%24.workflow_runs%5B0%5D.status&style=for-the-badge&logo=docker&logoColor=white&label=Frontend&color=FF69B4&labelColor=8B008B)](https://dev.pivoine.art/valknar/sexy.pivoine.art/actions) +[![Build Backend](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdev.pivoine.art%2Fvalknar%2Fsexy.pivoine.art%2Factions%2Ftasks.json&query=%24.workflow_runs%5B0%5D.status&style=for-the-badge&logo=fastify&logoColor=white&label=Backend&color=DA70D6&labelColor=8B008B)](https://dev.pivoine.art/valknar/sexy.pivoine.art/actions) [![License](https://img.shields.io/badge/License-For_Pleasure-FF1493?style=for-the-badge&logo=heart&logoColor=white&labelColor=8B008B)](LICENSE) -[![Made with Love](https://img.shields.io/badge/Made_with-๐Ÿ’œ_Love-FF69B4?style=for-the-badge&labelColor=8B008B)](http://sexy.pivoine.art) +[![Made with Love](https://img.shields.io/badge/Made_with-๐Ÿ’œ_Love-FF69B4?style=for-the-badge&labelColor=8B008B)](https://sexy.pivoine.art) @@ -24,20 +24,23 @@ Built with passion, technology, and the fearless spirit of sexual empowerment ## ๐Ÿ‘… What Is This Delicious Creation? -Welcome, dear pleasure-seeker! This is **sexy.pivoine.art** โ€” a modern, sensual platform combining the elegance of **SvelteKit**, the power of **Directus CMS**, and the intimate connection of **Buttplug.io** hardware integration. +Welcome, dear pleasure-seeker! This is **sexy.pivoine.art** โ€” a modern, sensual platform built from the ground up with full control over every intimate detail. A **SvelteKit** frontend caresses a purpose-built **Fastify + GraphQL** backend, while **Buttplug.io** hardware integration brings the experience into the physical world. Like Beate Uhse breaking barriers in post-war Germany, we believe in the freedom to explore, create, and celebrate sexuality without shame. This platform is built for **models**, **creators**, and **connoisseurs** of adult content who deserve technology as sophisticated as their desires. ### โ™‰ Features That'll Make You Blush โ™Š - ๐Ÿ’– **Sensual SvelteKit Frontend** with Tailwind CSS 4 styling -- ๐Ÿ—„๏ธ **Headless CMS** powered by Directus for content liberation +- โšก **Purpose-built GraphQL Backend** โ€” lean, fast, no CMS overhead +- ๐Ÿ” **Session-based Auth** with Redis & Argon2 โ€” discretion guaranteed +- ๐Ÿ–ผ๏ธ **Smart Image Transforms** via Sharp (WebP, multiple presets, cached) - ๐ŸŽฎ **Hardware Integration** via Buttplug.io (yes, really!) -- ๐ŸŒ **Multi-Platform Support** (AMD64 + ARM64) โ€” pleasure everywhere -- ๐Ÿ”’ **Session-Based Authentication** โ€” discretion guaranteed - ๐Ÿ“ฑ **Responsive Design** that looks sexy on any device - ๐ŸŒ **Internationalization** โ€” pleasure speaks all languages +- ๐Ÿ† **Gamification** โ€” achievements, leaderboards, and reward points +- ๐Ÿ’ฌ **Comments & Social** โ€” build your community - ๐Ÿ“Š **Analytics Integration** (Umami) โ€” know your admirers +- ๐Ÿณ **Self-hosted CI/CD** via Gitea Actions on `dev.pivoine.art`
@@ -48,15 +51,21 @@ Like Beate Uhse breaking barriers in post-war Germany, we believe in the freedom ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ’‹ Frontend Layer โ”‚ -โ”‚ โ”œโ”€ SvelteKit 2.0 โ†’ Smooth as silk โ”‚ +โ”‚ โ”œโ”€ SvelteKit 2 โ†’ Smooth as silk โ”‚ โ”‚ โ”œโ”€ Tailwind CSS 4 โ†’ Styled to seduce โ”‚ โ”‚ โ”œโ”€ bits-ui Components โ†’ Building blocks of pleasure โ”‚ +โ”‚ โ”œโ”€ graphql-request v7 โ†’ Whispering to the backend โ”‚ โ”‚ โ””โ”€ Vite โ†’ Fast and furious โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ ๐Ÿท Backend Layer โ”‚ -โ”‚ โ”œโ”€ Directus CMS โ†’ Content with no limits โ”‚ -โ”‚ โ”œโ”€ Custom Extensions โ†’ Bespoke pleasures โ”‚ -โ”‚ โ””โ”€ PostgreSQL โ†’ Data deep and secure โ”‚ +โ”‚ โ”œโ”€ Fastify v5 โ†’ The fastest penetration โ”‚ +โ”‚ โ”œโ”€ GraphQL Yoga v5 โ†’ Flexible positions โ”‚ +โ”‚ โ”œโ”€ Pothos (code-first) โ†’ Schema with intention โ”‚ +โ”‚ โ”œโ”€ Drizzle ORM โ†’ Data with grace โ”‚ +โ”‚ โ”œโ”€ PostgreSQL 16 โ†’ Deep and persistent โ”‚ +โ”‚ โ”œโ”€ Redis โ†’ Sessions that never forget โ”‚ +โ”‚ โ”œโ”€ Sharp โ†’ Images transformed beautifully โ”‚ +โ”‚ โ””โ”€ Argon2 โ†’ Passwords hashed with passion โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ ๐ŸŽ€ Hardware Layer โ”‚ โ”‚ โ”œโ”€ Buttplug.io โ†’ Real connections โ”‚ @@ -65,8 +74,8 @@ Like Beate Uhse breaking barriers in post-war Germany, we believe in the freedom โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ ๐ŸŒธ DevOps Layer โ”‚ โ”‚ โ”œโ”€ Docker โ†’ Containerized ecstasy โ”‚ -โ”‚ โ”œโ”€ GitHub Actions โ†’ Automated seduction โ”‚ -โ”‚ โ””โ”€ GHCR โ†’ Images served hot โ”‚ +โ”‚ โ”œโ”€ Gitea Actions โ†’ Self-hosted seduction โ”‚ +โ”‚ โ””โ”€ dev.pivoine.art โ†’ Our own pleasure palace โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` @@ -74,23 +83,23 @@ Like Beate Uhse breaking barriers in post-war Germany, we believe in the freedom ## ๐Ÿ”ฅ Quick Start โ€” Get Intimate Fast -### ๐Ÿ’• Option 1: Using Docker (Recommended) +### ๐Ÿ’• Option 1: Using Docker Compose (Recommended) ```bash -# Pull the pleasure -docker pull ghcr.io/valknarxxx/sexy:latest +# Clone the repository +git clone https://dev.pivoine.art/valknar/sexy.pivoine.art.git +cd sexy.pivoine.art -# Run with passion -docker run -d -p 3000:3000 \ - -e PUBLIC_API_URL=https://api.your-domain.com \ - -e PUBLIC_URL=https://your-domain.com \ - ghcr.io/valknarxxx/sexy:latest +# Configure your secrets +cp .env.example .env +# Edit .env with your intimate details + +# Awaken all services (postgres, redis, backend, frontend) +docker compose up -d # Visit your creation at http://localhost:3000 ๐Ÿ’‹ ``` -See [QUICKSTART.md](QUICKSTART.md) for the full seduction guide. - ### ๐Ÿ’œ Option 2: Local Development **Prerequisites:** @@ -98,22 +107,25 @@ See [QUICKSTART.md](QUICKSTART.md) for the full seduction guide. 1. Node.js 20.19.1 โ€” *the foundation* 2. `corepack enable` โ€” *unlock the tools* 3. `pnpm install` โ€” *gather your ingredients* -4. Rust + `cargo install wasm-bindgen-cli` โ€” *forge the connection* +4. PostgreSQL 16 + Redis โ€” *the data lovers* **Start your pleasure journey:** ```bash -# Awaken all services -pnpm dev +# Awaken data services +pnpm dev:data -# Or tease them one by one -pnpm dev:data # The foundation -pnpm dev:directus # The content -pnpm --filter @sexy.pivoine.art/frontend dev # The face +# Start the backend (port 4000) +pnpm dev:backend + +# Start the frontend (port 3000, proxied to :4000) +pnpm --filter @sexy.pivoine.art/frontend dev ``` Visit `http://localhost:3000` and let the experience begin... ๐Ÿ’‹ +GraphQL playground is available at `http://localhost:4000/graphql` โ€” explore every query. + --- ## ๐ŸŒน Project Structure @@ -123,98 +135,116 @@ This monorepo contains three packages, each serving its purpose: ``` sexy.pivoine.art/ โ”œโ”€ ๐Ÿ’„ packages/frontend/ โ†’ SvelteKit app (the seduction) -โ”œโ”€ ๐ŸŽญ packages/bundle/ โ†’ Directus extensions (the power) +โ”œโ”€ โšก packages/backend/ โ†’ Fastify + GraphQL API (the engine) โ””โ”€ ๐ŸŽฎ packages/buttplug/ โ†’ Hardware control (the connection) ``` ---- +### ๐Ÿ’„ Frontend (`packages/frontend/`) -## ๐Ÿ“š Documentation โ€” Your Guide to Pleasure +SvelteKit 2 application with server-side rendering, i18n, and a clean component library. +Communicates with the backend exclusively via GraphQL using `graphql-request`. +Assets served via `/api/assets/:id?transform=` โ€” no CDN, no Directus, just raw power. -
+### โšก Backend (`packages/backend/`) -| Document | Purpose | Emoji | -|----------|---------|-------| -| [QUICKSTART.md](QUICKSTART.md) | Get wet... I mean, get started! | ๐Ÿ’ฆ | -| [COMPOSE.md](COMPOSE.md) | Docker Compose setup guide | ๐Ÿณ | -| [DOCKER.md](DOCKER.md) | Standalone Docker deployment | ๐Ÿ‹ | -| [CLAUDE.md](CLAUDE.md) | Architecture & development | ๐Ÿค– | -| [.github/workflows/README.md](.github/workflows/README.md) | CI/CD workflows | โš™๏ธ | +Purpose-built Fastify v5 + GraphQL Yoga server. All business logic lives here: +auth, file uploads, video processing, comments, gamification, and analytics. +Files stored as `//` with on-demand WebP transforms cached on disk. -
+### ๐ŸŽฎ Buttplug (`packages/buttplug/`) + +Hybrid TypeScript/Rust package for intimate hardware control via WebBluetooth. +Compiled to WebAssembly for browser-based Bluetooth device communication. --- -## ๐ŸŽจ Building โ€” Craft Your Masterpiece +## ๐Ÿ—ƒ๏ธ Database Schema -### Build All Packages +Built with Drizzle ORM โ€” clean tables, no `directus_` prefix, full control: -```bash -# Prepare everything -pnpm install - -# Build the WASM foundation -pnpm --filter @sexy.pivoine.art/buttplug build:wasm - -# Build the packages -pnpm --filter @sexy.pivoine.art/buttplug build -pnpm --filter @sexy.pivoine.art/frontend build -pnpm --filter @sexy.pivoine.art/bundle build ``` - -### Build Docker Image - -```bash -# Quick build -./build.sh - -# Manual control -docker build -t sexy.pivoine.art:latest . - -# Multi-platform pleasure -docker buildx build --platform linux/amd64,linux/arm64 -t sexy.pivoine.art:latest . +users โ†’ profiles, roles (model/viewer/admin), auth tokens +files โ†’ uploaded assets with metadata and duration +videos โ†’ content with model junctions, likes, plays +articles โ†’ magazine / editorial content +recordings โ†’ user-created content with play tracking +comments โ†’ threaded by collection + item_id +achievements โ†’ gamification goals +user_points โ†’ points ledger +user_stats โ†’ cached leaderboard data ``` --- -## ๐Ÿš€ Deployment โ€” Share Your Creation +## ๐Ÿ” Authentication Flow + +``` +POST /graphql (login mutation) + โ†’ verify argon2 password hash + โ†’ nanoid(32) session token + โ†’ SET session: EX 86400 in Redis + โ†’ set httpOnly cookie: session_token + โ†’ return CurrentUser + +Every request: + โ†’ read session_token cookie + โ†’ GET session: from Redis + โ†’ inject currentUser into GraphQL context +``` + +--- + +## ๐Ÿ–ผ๏ธ Image Transforms + +Assets are transformed on first request and cached as WebP: + +| Preset | Size | Fit | Use | +|--------|------|-----|-----| +| `mini` | 80ร—80 | cover | Avatars in lists | +| `thumbnail` | 300ร—300 | cover | Profile photos | +| `preview` | 800px wide | inside | Video teasers | +| `medium` | 1400px wide | inside | Full-size images | +| `banner` | 1600ร—480 | cover | Profile banners | + +--- + +## ๐Ÿš€ Deployment ### Production with Docker Compose ```bash # Configure your secrets -cp .env.production.example .env.production -# Edit .env.production with your intimate details +cp .env.example .env.production +# Edit .env.production โ€” set DB credentials, SMTP, cookie secret, CORS origin -# Deploy with grace (uses Traefik for routing) -docker-compose -f compose.production.yml --env-file .env.production up -d +# Deploy +docker compose --env-file .env.production up -d ``` -### Production without Docker +Key environment variables for the backend: -```bash -# Build everything -pnpm build:frontend - -# Start serving -pnpm --filter @sexy.pivoine.art/frontend start +```env +DATABASE_URL=postgresql://sexy:sexy@postgres:5432/sexy +REDIS_URL=redis://redis:6379 +COOKIE_SECRET=your-very-secret-key +CORS_ORIGIN=https://sexy.pivoine.art +UPLOAD_DIR=/data/uploads +SMTP_HOST=your.smtp.host +SMTP_PORT=587 +EMAIL_FROM=noreply@sexy.pivoine.art +PUBLIC_URL=https://sexy.pivoine.art ``` ---- +### ๐ŸŽฌ CI/CD โ€” Self-Hosted Seduction -## ๐ŸŒˆ Environment Variables +Automated builds run on **[dev.pivoine.art](https://dev.pivoine.art/valknar/sexy.pivoine.art)** via Gitea Actions: -### ๐Ÿ’– Required (The Essentials) +- โœ… Frontend image โ†’ `dev.pivoine.art/valknar/sexy:latest` +- โœ… Backend image โ†’ `dev.pivoine.art/valknar/sexy-backend:latest` +- โœ… Triggers on push to `main`, `develop`, or version tags (`v*.*.*`) +- โœ… Build cache via registry for fast successive builds -- `PUBLIC_API_URL` โ€” Your Directus backend -- `PUBLIC_URL` โ€” Your frontend domain - -### ๐Ÿ’œ Optional (The Extras) - -- `PUBLIC_UMAMI_ID` โ€” Analytics tracking ID -- `PUBLIC_UMAMI_SCRIPT` โ€” Umami script URL - -See [.env.production.example](.env.production.example) for the full configuration. +Images are pulled on the production server via Watchtower or manual `docker compose pull && docker compose up -d`. --- @@ -225,60 +255,54 @@ graph LR A[๐Ÿ’ก Idea] --> B[๐Ÿ’ป Code] B --> C[๐Ÿงช Test Locally] C --> D[๐ŸŒฟ Feature Branch] - D --> E[๐Ÿ“ค Push & PR] - E --> F{โœ… CI Pass?} + D --> E[๐Ÿ“ค Push to dev.pivoine.art] + E --> F{โœ… Build Pass?} F -->|Yes| G[๐Ÿ”€ Merge to Main] F -->|No| B - G --> H[๐Ÿš€ Auto Deploy] - H --> I[๐Ÿท๏ธ Tag Release] - I --> J[๐ŸŽ‰ Celebrate] + G --> H[๐Ÿš€ Images Built & Pushed] + H --> I[๐ŸŽ‰ Deploy to Production] ``` 1. Create โ†’ `git checkout -b feature/my-sexy-feature` 2. Develop โ†’ Write beautiful code -3. Test โ†’ `pnpm dev` -4. Push โ†’ Create PR (triggers CI build) -5. Merge โ†’ Automatic deployment to production +3. Test โ†’ `pnpm dev:data && pnpm dev:backend && pnpm dev` +4. Push โ†’ `git push` to `dev.pivoine.art` (triggers CI build) +5. Merge โ†’ Images published, deploy to production 6. Release โ†’ `git tag v1.0.0 && git push origin v1.0.0` --- -## ๐Ÿ” Security โ€” Protected Pleasure +## ๐ŸŒˆ Environment Variables -- ๐Ÿ›ก๏ธ Daily vulnerability scans with Trivy -- ๐Ÿ”’ Non-root Docker containers -- ๐Ÿ“Š Security reports in GitHub Security tab -- ๐Ÿค Confidential issue reporting available +### Backend (required) -*Report security concerns privately via GitHub Security.* +| Variable | Description | +|----------|-------------| +| `DATABASE_URL` | PostgreSQL connection string | +| `REDIS_URL` | Redis connection string | +| `COOKIE_SECRET` | Session cookie signing secret | +| `CORS_ORIGIN` | Allowed frontend origin | +| `UPLOAD_DIR` | Path for uploaded files | ---- +### Backend (optional) -## ๐Ÿ’ Contributing โ€” Join the Movement +| Variable | Default | Description | +|----------|---------|-------------| +| `PORT` | `4000` | Backend listen port | +| `LOG_LEVEL` | `info` | Fastify log level | +| `SMTP_HOST` | โ€” | Email server for auth flows | +| `SMTP_PORT` | `587` | Email server port | +| `EMAIL_FROM` | โ€” | Sender address | +| `PUBLIC_URL` | โ€” | Frontend URL (for email links) | -Like Beate Uhse fought for sexual liberation, we welcome contributors who believe in freedom, pleasure, and quality code. +### Frontend -1. **Fork** this repository -2. **Create** your feature branch -3. **Commit** your changes -4. **Push** to your branch -5. **Submit** a pull request - -All contributors are bound by our code of conduct: **Respect, Consent, and Quality.** - ---- - -## ๐ŸŽฏ CI/CD Pipeline โ€” Automated Seduction - -Our GitHub Actions workflows handle: - -- โœ… Multi-platform Docker builds (AMD64 + ARM64) -- โœ… Automated publishing to GHCR -- โœ… Daily security vulnerability scans -- โœ… Weekly cleanup of old images -- โœ… Semantic versioning from git tags - -**Images available at:** `ghcr.io/valknarxxx/sexy` +| Variable | Description | +|----------|-------------| +| `PUBLIC_API_URL` | Backend URL (e.g. `http://sexy_backend:4000`) | +| `PUBLIC_URL` | Frontend public URL | +| `PUBLIC_UMAMI_ID` | Umami analytics site ID (optional) | +| `PUBLIC_UMAMI_SCRIPT` | Umami script URL (optional) | --- @@ -288,7 +312,7 @@ Our GitHub Actions workflows handle: ### ๐ŸŒธ Created with Love by ๐ŸŒธ -**[Palina](http://sexy.pivoine.art) & [Valknar](http://sexy.pivoine.art)** +**[Palina](https://sexy.pivoine.art) & [Valknar](https://sexy.pivoine.art)** *Fรผr die Mรคuse...* ๐Ÿญ๐Ÿ’• @@ -298,10 +322,15 @@ Our GitHub Actions workflows handle: | Technology | Purpose | |------------|---------| -| [SvelteKit](https://kit.svelte.dev/) | Framework | -| [Directus](https://directus.io/) | CMS | +| [SvelteKit](https://kit.svelte.dev/) | Frontend framework | +| [Fastify](https://fastify.dev/) | HTTP server | +| [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server) | GraphQL server | +| [Pothos](https://pothos-graphql.dev/) | Code-first schema | +| [Drizzle ORM](https://orm.drizzle.team/) | Database | +| [Sharp](https://sharp.pixelplumbing.com/) | Image transforms | | [Buttplug.io](https://buttplug.io/) | Hardware | -| [bits-ui](https://www.bits-ui.com/) | Components | +| [bits-ui](https://www.bits-ui.com/) | UI components | +| [Gitea](https://dev.pivoine.art) | Self-hosted VCS & CI | --- @@ -331,9 +360,9 @@ Pilot, Entrepreneur, Freedom Fighter
-[![Issues](https://img.shields.io/badge/๐Ÿ›_Issues-Report_Here-FF69B4?style=for-the-badge&labelColor=8B008B)](https://github.com/valknarxxx/sexy.pivoine.art/issues) -[![Discussions](https://img.shields.io/badge/๐Ÿ’ญ_Discussions-Join_Here-DA70D6?style=for-the-badge&labelColor=8B008B)](https://github.com/valknarxxx/sexy.pivoine.art/discussions) -[![Website](https://img.shields.io/badge/๐ŸŒ_Website-Visit_Here-FF1493?style=for-the-badge&labelColor=8B008B)](http://sexy.pivoine.art) +[![Repository](https://img.shields.io/badge/๐Ÿ™_Repository-dev.pivoine.art-FF69B4?style=for-the-badge&labelColor=8B008B)](https://dev.pivoine.art/valknar/sexy.pivoine.art) +[![Issues](https://img.shields.io/badge/๐Ÿ›_Issues-Report_Here-DA70D6?style=for-the-badge&labelColor=8B008B)](https://dev.pivoine.art/valknar/sexy.pivoine.art/issues) +[![Website](https://img.shields.io/badge/๐ŸŒ_Website-Visit_Here-FF1493?style=for-the-badge&labelColor=8B008B)](https://sexy.pivoine.art)
@@ -354,6 +383,6 @@ Pilot, Entrepreneur, Freedom Fighter *Pleasure is a human right. Technology is freedom. Together, they are power.* -**[sexy.pivoine.art](http://sexy.pivoine.art)** | ยฉ 2025 Palina & Valknar +**[sexy.pivoine.art](https://sexy.pivoine.art)** | ยฉ 2025 Palina & Valknar