ShipShipShip
A lightweight, self-hostable changelog and roadmap web application that lets you share product updates with your community and gather feedback through voting on upcoming features. Built with SvelteKit and Go.
Install / Use
/learn @GauthierNelkinsky/ShipShipShipREADME
🚢 ShipShipShip
A modern, self-hostable changelog and roadmap platform with emoji reactions, custom themes, and automated newsletters.
🔗 Links
- 📋 Website
- 🔗 Live Demo (Login:
demo/demo) - 🐳 Docker Hub
✨ Features
- 📋 Rich Event Management - TipTap editor with markdown support, tags, and media uploads
- 😊 Emoji Reactions - 8 reaction types (👍❤️🔥🎉👀💡🤔👎) for community feedback
- 🗳️ Voting System - Let users vote on proposed features
- 📊 Kanban Board - Drag-and-drop interface with customizable statuses
- 🎨 Theme System - Install custom themes with manifest-based configuration
- 📧 Newsletter Automation - Auto-send emails when events change status
- 📮 Email Templates - Customizable templates for different event types
- 🔧 Admin Dashboard - Full-featured SvelteKit admin panel
- 🔌 RESTful API - Complete API for integrations
🏗️ Tech Stack
Admin: SvelteKit 2 · Svelte 5 · TailwindCSS · shadcn-svelte · TipTap
Backend: Go 1.21 · Gin · SQLite · GORM
Deploy: Docker (AMD64 & ARM64)
🚀 Quick Start
🔑 Admin Panel:
/adminVisit http://localhost:8080/admin (or https://your-domain/admin) right after installation to complete setup.
Docker (Recommended)
docker run -d \
-p 8080:8080 \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=changeme \
-e JWT_SECRET=your-secret-key \
-e BASE_URL=https://changelog.yourdomain.com \
-v shipshipship_data:/app/data \
nelkinsky/shipshipship:latest
🔑 Admin Panel: http://localhost:8080/admin
Docker Compose
version: "3.8"
services:
shipshipship:
image: nelkinsky/shipshipship:latest
ports:
- "8080:8080"
environment:
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=changeme
- JWT_SECRET=your-secret-key
- BASE_URL=https://changelog.yourdomain.com
- GIN_MODE=release
volumes:
- shipshipship_data:/app/data
restart: unless-stopped
volumes:
shipshipship_data:
🔑 Admin Panel: http://localhost:8080/admin
Local Development
git clone https://github.com/GauthierNelkinsky/ShipShipShip.git
cd ShipShipShip
# Start backend + admin dev server
./start-dev.sh
# Or backend only
./quick-start.sh
Dev URLs:
- Backend: http://localhost:8080
- Admin Dev: http://localhost:5173
⚙️ Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| ADMIN_USERNAME | admin | Admin username |
| ADMIN_PASSWORD | admin | Admin password |
| JWT_SECRET | your-secret-key-change-in-production | JWT signing key |
| BASE_URL | (auto-detected) | Base URL of your instance (e.g., https://changelog.yourdomain.com) - used for email unsubscribe links |
| PORT | 8080 | Server port |
| GIN_MODE | debug | debug or release |
| DB_PATH | ./data/changelog.db | Database path |
🎨 Theme System
ShipShipShip separates the admin interface from the public-facing changelog through installable themes:
- Install Theme: Upload via
/admin/customization/theme - Configure: Customize theme settings (colors, layout, etc.)
- Map Statuses: Connect your event statuses to theme categories
- Publish: Your themed changelog appears at the root URL
Without a theme, the root URL shows the admin interface for initial setup.
📧 Newsletter Setup
- Go to
/admin/newsletter/settings - Configure SMTP settings (Gmail, Outlook, SendGrid, etc.)
- Test configuration
- Enable automation for status-based triggers
- Customize email templates
Automation: Automatically send newsletters when events move to specific statuses (e.g., "Released").
🛠️ Development
# Full dev mode (hot reload)
./start-dev.sh
# Rebuild everything
./start-dev.sh --rebuild
# Backend only
./quick-start.sh
Project Structure
admin/ # SvelteKit admin panel (SPA)
├── src/routes/admin/
│ ├── events/ # Kanban board
│ ├── newsletter/ # Email management
│ └── customization/ # Themes & branding
└── build/ # Static output (served by backend)
backend/ # Go API server
├── handlers/ # API endpoints
├── models/ # Database models
├── services/ # Business logic (email, automation)
└── main.go # Server entry point
data/ # SQLite + uploads + themes
📖 API Examples
Public:
# Get public events
curl http://localhost:8080/api/events
# Add reaction
curl -X POST http://localhost:8080/api/events/1/reactions \
-H "Content-Type: application/json" \
-d '{"reaction_type":"thumbs_up"}'
# Subscribe to newsletter
curl -X POST http://localhost:8080/api/newsletter/subscribe \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com"}'
Admin (requires JWT):
# Create event
curl -X POST http://localhost:8080/api/admin/events \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"New Feature","status":"Proposed","content":"..."}'
🤝 Contributing
Contributions welcome! Fork the repo, create a feature branch, and submit a PR.
📝 License
Apache 2.0 - see LICENSE
💬 Support
- Issues: GitHub Issues
- Website: shipshipship.io
- Demo: demo.shipshipship.io
Built with ❤️ and shipped with ShipShipShip 🚢
Related Skills
node-connect
341.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
prose
341.6kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
