Having fun is the best way to learn and improve your craft. Building engaging projects with the stack you choose is an exercise that builds your real-world development skills while enjoying what youโre creating.
In talk at KCDC in Kansas City, I walk through how I built a simple game (a single-page app) in a day with Next.js, Prisma, and Chakra-UI, and how the techniques used in rapidly developing the game with this stack translate into real-world full-stack development techniques.
5. โก Engineering requires lots of learning.
โก Fun helps us learn.
๐ก Therefore: have fun while learning and practicing.
work on fun things.
TL;DR:
6. ๐ Fun ๐ ๐บ Mood
๐บ Attention
๐บ Memory
FUN helps you learn
Source: science
Learn better,
faster,
& longer
7. this talk
Source: science
How I built a simple game in a day
Real-world skills practiced in v1
How this led to v2
Real-world learnings from v2
8. Fun and Games with the Full-Stack Jamstack
Mike Cavaliere ๐ mikecavaliere.com ๐ @mcavaliere
In case you haven't heard of it...
what is was the ?
JavaScript APIs Markup
+ + = "JAM"
Term coined by
9. Fun and Games with the Full-Stack Jamstack
Mike Cavaliere ๐ mikecavaliere.com ๐ @mcavaliere
In case you haven't heard of it...
what is was the ?
Build things in JS
Compile to HTML
Fetch data w/APIs
10. In case you haven't heard of it...
what is the ?
๐ FAST
๐ SEO
๐ Secure
๐ Scalable
๐ฐ Saves $$$
๐ป **Developer Experience (DX)**
Benefits:
๐ Jamstack.org
11. Fun and Games with the Full-Stack Jamstack
Mike Cavaliere ๐ mikecavaliere.com ๐ @mcavaliere
what is the Jamstack now?
Build things in anything
Compile to HTML
Fetch data w/APIs
Spoiler: it's the same thing.
๐ Netlify blog: The Jamstack definition evolved
12. Fun and Games with the Full-Stack Jamstack
Mike Cavaliere ๐ mikecavaliere.com ๐ @mcavaliere
Jamstack frameworks
https://jamstack.org/generators
& many more
13. Fun and Games with the Full-Stack Jamstack
Mike Cavaliere ๐ mikecavaliere.com ๐ @mcavaliere
Enter the
Full-Stack Jamstack
Frameworks that give you full control over the server-side.
Coined by fsjam.org
20. The tools I started the stack
with, which are (mostly) part of
my own standard boilerplate.
๐งฐ Toolbox ๐
JS Framework
Database
Data fetching
UI/layout/design
Authentication
22. Fun and Games with the Full-Stack Jamstack
Mike Cavaliere ๐ mikecavaliere.com ๐ @mcavaliere
building v1
Planning
Gen. scaffold / add
dependencies
GitHub Auth +
DB schema
Feature: emoji
picker
Feature: emoji
list
Tweak details Deploy
31. UI
Page layout / styling
Data fetching
tech skills practiced
Frontend Backend
Data modeling
Database CRUD
API development
General
Type modeling (TypeScript)
Authentication
Product development (!)
33. How to ship fast
Learning time accumulates
Being selective increases focus
Limit new learning
Start with tools you already know.
Don't reinvent the โธ๏ธ
Search before building.
Aim for "good enough."
Add TODOs for later.
35. v1 areas for
improvement
UX: Emoji get tooooo big
UX: Updates slowly
UX: No animation
UX: How do we "win"?
Tech: Code is a mess; can't add
features easily
44. building v2
React rearchitecting
Take state out of components
Move into React contexts
<RoundProvider>
<EmojisProvider>
Drop SWR, add react-query
Add useEffectReducer()
Move websockets, effects to custom hooks
Separate side effects
๐๐ผDecouple all the things.๐๐ผ
Unnecessary details:
48. ๐ฅ Sound effects
๐ป Game mechanics
๐ก Weapons (take away votes)
๐ฑ Mobile friendliness
โฑ Longer rounds
๐คช Random animations
? Who knows.
Suggestions welcome!
What's next?
Open for contributions
mcavaliere/emoji-battle
mcavaliere/emoji-battle-api
49. โก Engineering requires lots of learning.
โก Fun helps us learn.
๐ก Therefore: have fun while learning and practicing.
work on fun things.
Recap: