Initial vault setup
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
---
|
||||
title: ShipShipShip
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, development, launch, product-hunt, marketing, landing]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Development, https://github.com/marclavergne/shipshipship]
|
||||
---
|
||||
|
||||
# 💻 ShipShipShip
|
||||
|
||||
> **L'outil de « launch pages » self-hosted façon Product Hunt** — créez des pages de lancement stylées pour vos produits, avec vote, commentaires, file d'attente, badges « Top of the day », sans SaaS tiers.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [shipshipship.dev](https://shipshipship.dev/) |
|
||||
| **GitHub** | [marclavergne/shipshipship](https://github.com/marclavergne/shipshipship) |
|
||||
| **License** | MIT |
|
||||
| **Langage** | TypeScript (Next.js) |
|
||||
| **Étoiles GitHub** | 290 ⭐ |
|
||||
| **Catégorie** | Development, Product Launch |
|
||||
| **Référence** | [selfh.st Development](https://selfh.st/apps/?tag=Development) |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**ShipShipShip** est un **clone self-hosted de Product Hunt** (et de ses alternatives comme BetaList, Launching Next) : il permet de **créer des pages de lancement** pour vos produits, avec un système de **vote, classement, commentaires, badges** (« #1 Product of the Day ») et une **file d'attente** pour les lancements à venir.
|
||||
|
||||
Le concept est simple : quand on lance un nouveau produit (SaaS, app mobile, projet open source), on veut le mettre en avant sur une page dédiée, avec un effet « monday morning launch » à la Product Hunt. Les services existants (Product Hunt, BetaList) sont **cloud only**, payants ou imposés, et on n'a pas le contrôle du branding. ShipShipShip propose la même mécanique **chez soi**, avec votre propre nom de domaine, votre branding, vos propres règles.
|
||||
|
||||
L'outil est particulièrement adapté aux **indie hackers, studios indie et SaaS bootstrappés** qui lancent plusieurs produits par an et veulent un **hub de lancements** réutilisable. Possibilité d'**embed** la page sur son propre site, d'envoyer des **notifications email** aux abonnés à chaque nouveau produit, et de **tracker** les lancements passés (statut shipped / in queue).
|
||||
|
||||
**Fonctionnalités clés** : pages produits avec images, vidéos, tags, vote up/down, classement par jour/semaine/mois, commentaires, file d'attente, badges « Top of the Day », newsletter, custom CSS, multi-tenants (plusieurs pages de lancement sur une instance).
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Via Docker (recommandé)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
shipshipship:
|
||||
image: ghcr.io/marclavergne/shipshipship:latest
|
||||
container_name: shipshipship
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
DATABASE_URL: "postgresql://ship:***changeme***@db:5432/ship"
|
||||
NEXTAUTH_URL: "https://launch.example.com"
|
||||
NEXTAUTH_SECRET: "openssl-rand-hex-50"
|
||||
GITHUB_ID: "***"
|
||||
GITHUB_SECRET: "***"
|
||||
SMTP_HOST: "smtp.example.com"
|
||||
SMTP_PORT: 587
|
||||
SMTP_USER: "noreply@example.com"
|
||||
SMTP_PASS: "***"
|
||||
SMTP_FROM: "noreply@example.com"
|
||||
depends_on: [db]
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.ship.rule=Host(`launch.example.com`)"
|
||||
- "traefik.http.routers.ship.entrypoints=websecure"
|
||||
- "traefik.http.routers.ship.tls.certresolver=letsencrypt"
|
||||
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: ship
|
||||
POSTGRES_USER: ship
|
||||
POSTGRES_PASSWORD: ***changeme***
|
||||
volumes:
|
||||
- ship_db:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
ship_db:
|
||||
```
|
||||
|
||||
### Installation manuelle
|
||||
|
||||
```bash
|
||||
git clone https://github.com/marclavergne/shipshipship.git
|
||||
cd shipshipship
|
||||
pnpm install
|
||||
cp .env.example .env.local # éditer DATABASE_URL, NEXTAUTH_*, SMTP_*
|
||||
pnpm prisma migrate deploy
|
||||
pnpm build && pnpm start
|
||||
```
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
1. **OAuth GitHub** (recommandé) : créer une app OAuth sur GitHub pour l'authentification des contributeurs et votes.
|
||||
2. **NEXTAUTH_SECRET** : `openssl rand -hex 50` pour signer les sessions.
|
||||
3. **Branding** : modifier `theme.config.ts` pour couleurs, logo, tagline — la page publique reflète votre marque.
|
||||
4. **Premier admin** : créer un compte, se logguer, accéder à `/admin` pour modérer les soumissions.
|
||||
5. **Webhook de déploiement** (optionnel) : ping à chaque release pour auto-publier un nouveau produit.
|
||||
|
||||
## 🔗 Alternatives
|
||||
|
||||
- **Product Hunt** — Le référence, cloud only, audience massive mais algorithme opaque et pay-to-play.
|
||||
- **BetaList** — Historique, orienté early-adopters, payant pour soumettre.
|
||||
- **Launching Next** — Annuaire de lancements à venir, gratuit, pas self-hostable.
|
||||
- **Peerlist Launches** — Nouveau venu, orienté dev, gratuit.
|
||||
- **Une landing page Notion** — Solution minimaliste, sans dynamique de vote ni classement.
|
||||
|
||||
## 🔒 Sécurité
|
||||
|
||||
- 🔐 **HTTPS obligatoire** via [[app-traefik]] : OAuth, sessions et votes transitent en clair sinon.
|
||||
- 🔒 **NEXTAUTH_SECRET robuste** : `openssl rand -hex 50`, sauvegarder hors-ligne.
|
||||
- 🛡️ **Modération** : prévoir un workflow d'approbation pour éviter le spam et les lancements frauduleux.
|
||||
- 🛡️ **Rate limiting** : activer un rate-limit sur `/api/vote` et `/api/submit` pour éviter les votes automatisés.
|
||||
- 🛡️ **Anti-bot sur les votes** : ajouter un CAPTCHA ([[app-private-captcha]]) pour empêcher la triche au classement.
|
||||
- 🛡️ **Backups PostgreSQL** : `ship_db` contient les votes, commentaires et métadonnées produits.
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Site officiel](https://shipshipship.dev/)
|
||||
- [Documentation](https://github.com/marclavergne/shipshipship#readme)
|
||||
- [GitHub marclavergne/shipshipship](https://github.com/marclavergne/shipshipship)
|
||||
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)
|
||||
|
||||
## 🔗 Pages Liées
|
||||
|
||||
- [[cat-development]] — Catégorie Development
|
||||
- [[app-private-captcha]] — CAPTCHA self-hosted pour anti-bot sur les votes
|
||||
- [[app-traefik]] — Reverse proxy HTTPS
|
||||
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
|
||||
- [[recettes-docker-compose]] — Templates Docker Compose
|
||||
Reference in New Issue
Block a user