add landing v3
Some checks failed
Build & Deploy / build-and-deploy (push) Failing after 8s

This commit is contained in:
ordinarthur 2026-05-05 18:52:34 +02:00
parent 3c1d7fbd71
commit 269c67ace2
13 changed files with 81 additions and 13 deletions

52
.claude/deploy-memory.md Normal file
View File

@ -0,0 +1,52 @@
# Deploy memory — rubis
## Infra
- Namespace : `rubis`
- Deployment : `rubis`
- Container : `rubis`
- NodePort : `30109`
- Image : `git.arthurbarre.fr/ordinarthur/rubis`
- Domaine : https://rubis.arthurbarre.fr (sous-domaine **temporaire** — domaine définitif pas encore acheté)
- Manifests : `k3s/` (namespace.yml, deployment.yml, service.yml)
- Route Traefik : `~/dev/perso/proxmox/ansible/roles/traefik/templates/rubis.yml.j2`
- Repo Gitea : https://git.arthurbarre.fr/ordinarthur/rubis (remote `gitea`)
## Mise à jour (à suivre pour les prochains /deploy)
1. **Voie normale — push git, le CI build + rollout auto** :
```bash
git push gitea main
```
2. **Voie manuelle** (si Docker Desktop tourne sur le Mac) :
```bash
TAG=$(git rev-parse --short HEAD)
docker build --platform linux/amd64 -t git.arthurbarre.fr/ordinarthur/rubis:$TAG .
docker push git.arthurbarre.fr/ordinarthur/rubis:$TAG
kubectl --kubeconfig ~/dev/perso/proxmox/k3s/kubeconfig.yaml \
-n rubis set image deploy/rubis rubis=git.arthurbarre.fr/ordinarthur/rubis:$TAG
kubectl --kubeconfig ~/dev/perso/proxmox/k3s/kubeconfig.yaml \
-n rubis rollout status deploy/rubis
```
3. Si changement route/domaine : `cd ~/dev/perso/proxmox/ansible && ansible-playbook playbooks/gateway.yml`
4. Vérif : `curl -I https://rubis.arthurbarre.fr`
## Quand le domaine définitif sera acheté
1. Créer le record A chez OVH (ou autre registrar) : `<nouveau-domaine>``51.38.62.199`
2. Modifier la rule du fichier `~/dev/perso/proxmox/ansible/roles/traefik/templates/rubis.yml.j2` :
`Host(\`<nouveau-domaine>\`)`
3. Relancer le playbook `gateway.yml`
4. (Optionnel) supprimer le record DNS `rubis.arthurbarre.fr` si plus utilisé
## Stack
Landing statique, servie par **nginx:1.27-alpine** (Dockerfile à la racine, sert `public/`).
Le rebuild est rapide (pas de bundler).
## Déjà fait — NE PAS refaire
Dockerfile, manifests K3s, route Traefik (`rubis.yml.j2` + tâche dans `tasks/main.yml`),
DNS OVH (A record `rubis.arthurbarre.fr` id 5413044152), repo Gitea + secrets CI
(`KUBECONFIG`, `REGISTRY_PASSWORD`), namespace + secret registry K3s.
Les prochains `/deploy` font uniquement build + rollout via push git.

View File

@ -3,7 +3,8 @@
.claude
.DS_Store
docs/
assets/
landing.html
public/
*.md
k3s/
Dockerfile
.dockerignore

View File

@ -118,21 +118,35 @@ Ce qu'on sait : TypeScript, le reste à formaliser (framework, DB, OCR provider,
| Fichier | Rôle |
|---|---|
| `/CLAUDE.md` (ce fichier) | Contexte top-level, toujours en tête |
| `/landing.html` | Landing page brand-applied, prête à déployer (waitlist V1) |
| `/landing/index.html` | Landing page brand-applied, déployée (waitlist V1) |
| `/landing/favicon.{svg,ico,png}` | Set complet de favicons + apple-touch-icon |
| `/landing/site.webmanifest` | Manifest PWA (theme `#9F1239`, background `#FAF7F2`) |
| `/landing/assets/logo.png` | Logo Rubis original (généré, source pour les favicons) |
| `/docs/produit.md` | Spec produit détaillée (features, flows, IN/OUT V1) |
| `/docs/marque.md` | Référence marque écrite (palette, typo, voix, do/don't) |
| `/docs/decisions.md` | Log de décisions avec rationale (format ADR-light) |
| `/docs/wireframes-mvp.html` | Wireframes low-fi des 13 écrans MVP |
| `/docs/brand-identity.html` | Présentation visuelle de la marque (4 logos, applications) |
| `/docs/munitions-marketing.md` | Stats marché, concurrents, positionnement, copy |
| `/Dockerfile` | Build nginx-alpine servant `/landing/` sur port 80 |
| `/k3s/` | Manifests Kubernetes (namespace, deployment, service) |
| `/.claude/deploy-memory.md` | Procédure de déploiement (Gitea CI ou manuel) |
## Déploiement
- **Image** : `git.arthurbarre.fr/ordinarthur/rubis:latest`
- **Domaine actuel** (temporaire) : https://rubis.arthurbarre.fr
- **Build** : `COPY landing/` → nginx servi sur port 80
- Voir `.claude/deploy-memory.md` pour la procédure complète.
## Questions ouvertes
- **Stack technique** à formaliser
- **Stack technique app produit** à formaliser (la landing tourne en static nginx, mais le SaaS lui-même reste à scoper)
- **Conversion 1 rubis = 10 min** validée mais à confirmer en user testing après MVP
- **Wordmark "rubis" avec gem-i** (direction C) à monter en complément du logo A à un moment
- **Provider OCR** à benchmarker (Mindee, Document AI, Textract, Tesseract)
- **Endpoint waitlist** à câbler dans `landing.html` (Resend, Formspree, ou API perso)
- **Endpoint waitlist** à câbler dans `/landing/index.html` (Resend, Formspree, ou API perso)
- **Domaine définitif** à acheter (le sous-domaine actuel est temporaire)
---

View File

@ -1,14 +1,14 @@
FROM nginx:1.27-alpine
COPY public/ /usr/share/nginx/html/
COPY landing/ /usr/share/nginx/html/
RUN printf 'server {\n\
listen 80;\n\
listen 80;\n\x
server_name _;\n\
root /usr/share/nginx/html;\n\
index index.html;\n\
\n\
location / {\n\
location / {\n\x
try_files $uri $uri/ /index.html;\n\
}\n\
\n\

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 846 KiB

After

Width:  |  Height:  |  Size: 846 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -2409,12 +2409,13 @@
<span class="name">Plan Business</span>
<span class="price-small">49 €<span class="per">/mois</span></span>
</div>
<div class="qualifier">Pour les équipes 5+, avec onboarding humain</div>
<p>Vous êtes plusieurs dans la boîte ? Business ajoute le <b>multi-utilisateurs</b>, votre adresse
<code>compta@votre-entreprise.fr</code>, et — V2 — le <b>SMS de relance</b>. On cale aussi un onboarding
sur-mesure ensemble.
<div class="qualifier">Pour les équipes</div>
<p>Vous pouvez générer autant de relances actives que vous voulez.
<br />
Vous avez la possibilité d'avoir 5 utilisateurs.
<br />
</p>
<span class="aside-cta">Caler 30 min avec Arthur <span class="arrow"></span></span>
<span class="aside-cta">Démarrer Business <span class="arrow"></span></span>
</a>
</div>

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 309 KiB

After

Width:  |  Height:  |  Size: 309 KiB