392d42ce2c613fd94fd28b20a9d823a743b9ee5c
sexy.pivoine.art
An adult content platform built with SvelteKit, Directus CMS, and hardware integration via Buttplug.io.
Quick Start
Using Docker (Recommended)
# Pull and run the latest image
docker pull ghcr.io/valknarxxx/sexy:latest
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
See QUICKSTART.md for detailed instructions.
Local Development
Prerequisites:
- Install Node.js 20.19.1
- Enable corepack:
corepack enable - Install dependencies:
pnpm install - Install Rust and wasm-bindgen:
cargo install wasm-bindgen-cli
Start development environment:
# Start all services (Docker Compose + frontend)
pnpm dev
# Or start individually
pnpm dev:data # Start data services
pnpm dev:directus # Start Directus CMS
pnpm --filter @sexy.pivoine.art/frontend dev # Start frontend
Access the application at http://localhost:3000
Project Structure
This is a pnpm monorepo with three packages:
packages/frontend- SvelteKit application with Tailwind CSS 4packages/bundle- Directus extensions (endpoints, hooks, themes)packages/buttplug- Hardware control library (TypeScript + Rust/WASM)
Documentation
- QUICKSTART.md - Get running in 5 minutes with Docker
- DOCKER.md - Comprehensive Docker deployment guide
- CLAUDE.md - Development guide and architecture
- .github/workflows/README.md - CI/CD workflows
Building
Build All Packages
pnpm install
pnpm --filter @sexy.pivoine.art/buttplug build:wasm
pnpm --filter @sexy.pivoine.art/buttplug build
pnpm --filter @sexy.pivoine.art/frontend build
pnpm --filter @sexy.pivoine.art/bundle build
Build Docker Image
# Using the build script
./build.sh
# Or manually
docker build -t sexy.pivoine.art:latest .
# Multi-platform
docker buildx build --platform linux/amd64,linux/arm64 -t sexy.pivoine.art:latest .
Deployment
Production with Docker
# Using docker-compose
cp .env.production.example .env.production
# Edit .env.production with your values
docker-compose -f docker-compose.production.yml up -d
Production without Docker
# Build all packages
pnpm build:frontend
# Start the server
pnpm --filter @sexy.pivoine.art/frontend start
Features
- 🎨 Modern SvelteKit frontend with Tailwind CSS 4
- 🗄️ Headless CMS powered by Directus
- 🎮 Hardware integration via Buttplug.io
- 🌐 Multi-platform support (AMD64/ARM64)
- 🔒 Session-based authentication
- 📱 Responsive design with bits-ui components
- 🌍 Internationalization support (i18n)
- 📊 Built-in analytics integration (Umami)
- 📧 Newsletter integration (Letterspace)
Technology Stack
Frontend
- Framework: SvelteKit 2
- Styling: Tailwind CSS 4
- UI Components: bits-ui, custom component library
- Build Tool: Vite
- Deployment: Node.js adapter
Backend
- CMS: Directus (headless)
- Extensions: Custom endpoints, hooks, and themes
- Database: PostgreSQL (via Directus)
Hardware
- Library: Buttplug.io
- Languages: TypeScript + Rust (compiled to WASM)
- Protocols: WebBluetooth API
DevOps
- Containerization: Docker + Docker Compose
- CI/CD: GitHub Actions
- Registry: GitHub Container Registry (GHCR)
- Security: Trivy vulnerability scanning
Environment Variables
Required
PUBLIC_API_URL- Directus API endpointPUBLIC_URL- Frontend application URL
Optional
PUBLIC_UMAMI_ID- Umami analytics tracking IDLETTERSPACE_API_URL- Newsletter API endpointLETTERSPACE_API_KEY- Newsletter API keyLETTERSPACE_LIST_ID- Mailing list identifier
See .env.production.example for full reference.
Development Workflow
- Make changes to code
- Test locally with
pnpm dev - Create a feature branch
- Push and create PR (triggers CI build)
- Merge to
main(triggers production build) - Tag release:
git tag v1.0.0 && git push origin v1.0.0
CI/CD Pipeline
Automated 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 are available at: ghcr.io/valknarxxx/sexy
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Ensure tests pass (when implemented)
- Submit a pull request
Security
- Docker images are scanned daily for vulnerabilities
- Security reports available in GitHub Security tab
- Report security issues privately via GitHub Security
License
See LICENSE file for details.
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Acknowledgments
- Built with SvelteKit
- Powered by Directus
- Hardware control via Buttplug.io
- UI components from bits-ui
Note: This is an adult content platform. Users must be 18+ or the age of majority in their jurisdiction.
Description
Languages
Svelte
64.8%
TypeScript
29.1%
Rust
3.7%
CSS
0.9%
Dockerfile
0.8%
Other
0.7%