Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vibecoding 101 @ Esade
Search
Nicolas Grenié
January 22, 2026
Technology
49
0
Share
Vibecoding 101 @ Esade
Vibecoding masterclass given at Esade on Jan 21 2026 with Esade Entrepreneurship club
Nicolas Grenié
January 22, 2026
More Decks by Nicolas Grenié
See All by Nicolas Grenié
How we turned PMs into vibecoders
picsoung
0
50
Developers are the new buyers: why developer experience matters
picsoung
0
110
The GPT Odyssey: When Code becomes Conversations
picsoung
0
53
Desarrolla un GPT: Lecciones y Aprendizajes
picsoung
0
25
Empowering Customer Success Operations With No-code Flows
picsoung
0
87
How developer relations can boost your partnerships program
picsoung
0
59
Developers love webhooks, you should too
picsoung
0
140
Duct tape of entrepreneurs
picsoung
0
93
API 101, What, Where, When
picsoung
0
85
Other Decks in Technology
See All in Technology
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
530
自動テストだけで リリース判断できるチームへ - 鍵はテストの量ではなくリリース判断基準の再設計にあった / Redesigning Release Criteria for Lightweight Releases
ewa
7
3.2k
アクセシビリティはすべての人のもの
tomokusaba
0
240
AgentCore×VPCでの設計パターンn選と勘所
har1101
4
370
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
210
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
170
ハーネスエンジニアリング入門
knishioka
0
110
VespaのParent Childを用いたフィードパフォーマンスの改善
taking
0
220
フロントエンドの相手が変わった - AIが加わったWebの新しいインターフェース設計
azukiazusa1
31
9.8k
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
2.8k
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (前半)
oracle4engineer
PRO
2
210
Building a Study Buddy AI Agent from Scratch: From Passive Chatbots to Autonomous Systems
itchimonji
0
130
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Navigating Team Friction
lara
192
16k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
430
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
From π to Pie charts
rasagy
0
180
What's in a price? How to price your products and services
michaelherold
247
13k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
130
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
350
エンジニアに許された特別な時間の終わり
watany
106
240k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
160
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Transcript
Vibecoding 101 ESADE Jan. 2026 Nicolas Grenié Developer
Advocate @picsoung
Nicolas Grenié Developer Advocate SLNG.ai @picsoung
None
40k+ icons 15k users #2 ProductHunt Top 5 Lovable
Shipped 2000$ of revenue
Other projects Contractiontrack.com imsometal.com my-bingo-card.com
Goal: Jump in the world of building Remove jargon
How does an app work?
It’s has to be written in code Different programming languages
for different things
None
None
None
Client Server Applications
Client Server Applications
Client Server Applications
You first develop locally Then you deploy for the world
to see
Application Programming Interface @picsoung @picsoung
@picsoung @picsoung UI
UI @picsoung @picsoung
What is going to happen? @picsoung @picsoung
@picsoung @picsoung
👋 You have GIF? @picsoung @picsoung
👍 Sure, here @picsoung @picsoung
That was an API 🎉 @picsoung @picsoung
@picsoung @picsoung APIs Are servers Talking to other servers
@picsoung
Examples @picsoung
@picsoung
@picsoung
@picsoung
Programming is like ordering at Chipotle @picsoung
There is an API for that! @picsoung
Let’s Call Some APIs @picsoung
https://api.imgflip.com Memes API! @picsoung
Memes API! @picsoung
Step 1: Read documentation @picsoung
Step 2: Call the API In the browser In the
terminal Using an App
🎁 Debug APIs outside of your code
JSON data format @picsoung { "success": true, "data": { "memes":
[ { "id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } }
@picsoung response = { "success": true, "data": { "memes": [
{ "id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.success { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes[0] { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
@picsoung response.data.memes[0].url { "success": true, "data": { "memes": [ {
"id": "61579", "name": "One Does Not Simply", "url": "https://i.imgflip.com/1bij.jpg", "width": 568, "height": 335, "box_count": 2 }, { "id": "101470", "name": "Ancient Aliens", "url": "https://i.imgflip.com/26am.jpg", "width": 500, "height": 437, "box_count": 2 } ] } } JSON data format
Security? @picsoung
@picsoung API Key oAuth
Advantage for API provider @picsoung Who is calling the API
Charging for API usage Turn off bad users Restrict access to your own data
Let’s try @picsoung Boilerplate Solution
oAuth @picsoung
Oauth Scopes @picsoung
Webhook @picsoung
Webhook @picsoung Ping me when something happens
Vibecoding vs. AI assisted coding? @picsoung
@picsoung vibecode
@picsoung
@picsoung
@picsoung Describe the app and its features
@picsoung One stop prompt Iterative process
@picsoung Use ChatGPT to write the PRD (Product Requirements Document)
@picsoung Or images
@picsoung
@picsoung
@picsoung
@picsoung
@picsoung
@picsoung look at the current UI for the prompt enhancer,
It feels cramped. Help me simplify it, remove clutter.
@picsoung
Share documentation and code snippets @picsoung
AI is an intern Treat it as such @picsoung
Challenges @picsoung
SEO @picsoung
SEO @picsoung Ask to create sitemap.xml robots.txt Llms.txt Opengraph tags
Backend @picsoung
@picsoung 100 credits ($25 worth) Code: ESADE