https://github.com/alan345/vpjsf
https://github.com/alan345/vpjsf
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/alan345/vpjsf
- Owner: alan345
- Created: 2026-06-26T16:54:31.000Z (9 days ago)
- Default Branch: main
- Last Pushed: 2026-06-26T19:08:38.000Z (9 days ago)
- Last Synced: 2026-06-26T19:18:37.142Z (9 days ago)
- Language: TypeScript
- Size: 5.29 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# VoilaPourquoiJeSuisFauché.fr
Catalogue de cadeaux insolites (affiliation). Next.js 16 (App Router) + TypeScript + Tailwind v4 + Prisma 7 (PostgreSQL).
## Fonctionnalités
- Page d'accueil avec liste de produits en **mode masonry** + **pagination**
- Produits classés par **catégories** (`/categorie/[slug]`)
- **Recherche** (`/recherche?q=...`)
- **Pages produit** type article de blog (`/produit/[slug]`), avec contenu HTML
- Bouton **« Découvrir »** vers la plateforme d'affiliation (`rel="nofollow sponsored"`)
- **SEO** : métadonnées Open Graph, `sitemap.xml`, `robots.txt`, données structurées JSON-LD (Product + Article)
- Backend assuré par Next.js (pas de serveur séparé)
## Prérequis
- Node.js 22+
- [pnpm](https://pnpm.io) (gestionnaire de paquets)
- Une base [Prisma Postgres](https://www.prisma.io/postgres)
## Configuration
1. Copier les variables d'environnement :
```bash
cp .env.example .env
```
2. Renseigner dans `.env` (valeurs fournies par Prisma Postgres) :
- `POSTGRES_URL` : connexion **directe** (TCP) — utilisée par l'app (adaptateur `pg`) et le CLI Prisma.
- `PRISMA_DATABASE_URL` : connexion Accelerate (`prisma+postgres://`) — optionnelle.
- `NEXT_PUBLIC_SITE_URL` : URL publique du site.
3. Installer les dépendances :
```bash
pnpm install
```
4. Créer le schéma en base et générer le client :
```bash
pnpm db:push
```
5. Insérer les produits :
```bash
pnpm db:seed
```
Les images produits sont servies localement depuis `public/products/` (versionnées dans le dépôt).
## Déploiement (Vercel + Prisma Postgres)
Le dépôt contient un blueprint `vercel.json` (framework Next.js, région `cdg1` / Paris).
1. **Prisma Postgres** : créer une base, récupérer `POSTGRES_URL` (directe) et `PRISMA_DATABASE_URL` (Accelerate).
2. Préparer la base **une seule fois** depuis votre machine (`.env` pointant sur Prisma Postgres) :
```bash
pnpm db:push && pnpm db:seed
```
3. **Vercel** : importer le dépôt GitHub, puis définir les variables d'environnement :
`POSTGRES_URL`, `PRISMA_DATABASE_URL`, `NEXT_PUBLIC_SITE_URL`.
4. Déployer. Le build (`prisma generate && next build`) ne touche pas la base (pages rendues dynamiquement).
## Développement
```bash
pnpm dev
```
Le site est disponible sur http://localhost:3000.
## Scripts utiles
| Script | Description |
| ---------------- | ---------------------------------------------- |
| `pnpm dev` | Serveur de développement |
| `pnpm build` | Build de production (`prisma generate` inclus) |
| `pnpm start` | Serveur de production |
| `pnpm db:push` | Synchronise le schéma Prisma avec la base |
| `pnpm db:seed` | Insère les produits |
| `pnpm db:studio` | Ouvre Prisma Studio |
## Ajouter des produits
Les produits s'ajoutent **directement en base de données** (table `products`, liée à `categories` via `product_categories`). Le champ `content` contient du **HTML** rendu sur la page produit. Les images sont hébergées sur **Vercel Blob** ; envoyez votre fichier (dashboard Vercel → Storage → Blob, ou `put()` du SDK) et collez l'URL publique dans `imageUrl`.
Pour migrer les images locales `public/products/` vers Vercel Blob et mettre à jour la base :
```bash
pnpm images:blob
```
## facebook token
https://developers.facebook.com/tools/explorer/
https://developers.facebook.com/tools/debug/accesstoken
pnpm tsx scripts/fb-longlived-token.ts "PASTE_THE_NEW_USER_TOKEN"
# Instructions to crete a new post
```
create a new post in the site.
You will get most of the data from the amaxon product https://www.amazon.fr/-/en/Tonysa-Anti-Gravity-Droplets-Humidifier-Humidifiers/dp/B0CFXWSM4D
uplaod image from amazon image to vercel blob.
create a nice decsription and title. Fun but SEO friendly.
in the context https://voilapourquoijesuisfauche.fr is a blog that list funny products on the internet. It should be funny.
create a script and then execute, similar to
scripts/2026-06-01-2120_add-product.ts
create a script and execute
In the script add the facebook call to publish the item.
```