Web Dev Roadmap
Tool indicators
- βοΈ: current fave/fascination
- ππΎ: have used/battle-tested
- HTML5, CSS3 & Vanilla JavaScript
- TypeScript
- event loop
- async programming / Promises / callbacks
- ExpressJS ππΎ
- client - server architecture & connects
- HTTP
- response types
- streams
- WebSockets
- HTTP
- request to response flow
- middleware
- other frameworks: alternatives and more "batteries-included" options
- Create React App (CRA)
- components (functional vs class)
- props
- state
- contexts
- hooks
- SSR (server-side rendering) vs CSR (client-side rendering)
- RSC (react server components)
- static generation w/ dynamic SSR & CSR
There are a lot of ways to build full-stack apps with React. These are two common full-stack, or meta frameworks you can use to build full-stack web applications.
If React really isn't your thing, you are far from alone. Checkout the "Alternative JS Frameworks" section.
There are two primary kinds of databases that you will work with, "relational" and "non-relational" (or "NoSQL"). Below is a breakdown of some common kinds and variations of databases you might use within those categories.
If you'd like to dive deeper, here is an article from Prisma that does a detailed breakdown of types of databases and another speficially comparing relational to document databases like MongoDB.
This is often used to describe your common SQL flavors of databases. The common selections are broken down below:
- MySQL
- common "go-to" SQL flavor for projects
- usually considered "simpler" that PostgreSQL
- PostgreSQL ππΎ
- more data types like
jsonb
- considered to be more complex but full featured compared to MySQL
- more data types like
- SQLite βοΈ
- considered more (surprise) lightweight
- all data stored in a single file like
my_database.sqlite
- very common for embedded devices/IoT and LoFi (local-first) solutions
(Yeahhhh they are indeed db companies, not the fanciest designs on these sites lol.)
Here is a nice breakdown from AWS of why you might choose PostgreSQL or MySQL for a project.
Commonly called NoSQL databases, non-relational databases include all kinds of different forms of database structions from document collections to graph nodes to key-value pairs.
- MongoDB ππΎ
- organizes data into collections of documents that do not enforce a schema
- ORM usually needs to enforce the schema
- good for hobby projects like a blog
- AWS DynamoDB ππΎ
- organizes data into partitions that can be split and sharded
- high performance (when using correct design patterns)
- Bonus: DynamoDB Streams
- Redis
- common "go-to" key-value store used for simple storage and caching
- neo4j
- graph database that's been getting more popular
- commonly used for genAI RAG patterns
- Drizzle βοΈ
- new kid on the block
- extensive tooling for a great dev experience
- supports
- SQLite
- MySQL
- Postgres
- Prisma
- very stable & strong support
- pretty prominent in modern projects these days
- supports
- SQLite
- MySQL
- Postgres
- TypeORM
- TypeScript-first ORM
- fairly popular
- supports
- SQLite
- MySQL
- Postgres
- Sequelize ππΎ
- tried & true ORM for relational DBs
- little dated this days but still maintained and a viable option
- supports
- SQLite
- MySQL
- Postgres
Below are some potential options for deploying and hosting your websites, web applications, and databases.
- serverless (all have free tiers)
- Vercel ππΎ
- maintainers of Next.js
- platform features
- serverless PostgreSQL
- Blob storage
- Edge Config (read-optimized key-value)
- KV (managed Redis)
- AI integrations
- Cloudflare Pages βοΈ
- uses Cloudflare Worker's
workerd
runtime - platform features
- D1: distributed SQL database
- queues
- scheduled jobs: recurring or one-time cron jobs
- Workers AI
- uses Cloudflare Worker's
- AWS Lambda
- invocable functions running in Node.js or other runtimes
- Netlify ππΎ
- static sites & assets
- Decap CMS (formerly Netlify CMS)
- GitHub Pages ππΎ
- static sites & assets
- Turso βοΈ
- distributed SQLite
- local-first (LoFi) capabilities
- Vercel ππΎ
- server-ful
Node.js isn't everything. Try out some of these runtimes to understand core JS APIs without relying on Node's internals when you develop. Resulting in more universally runnable code. π
- Deno
- bun.sh
- Cloudflare's
workerd
βοΈ
React isn't the only modern approach to UI development. These frameworks are viable alternatives and even competitors you should check out.
There is a helpful tool called "Component Party" where you can compare how different components are implemented in these frameworks and more!
- OOP (Object-Oriented Programming)
- Functional Programming
- TDD (Test-driven Development)
- Level Up Tutorials
- Wes Bos
- Udemy: great course platform but be sure to check curriculums and reviews (often has sales)
- Syntax.fm βοΈ
- JS Party βοΈ
- devtoolsFM
- Lex Friedman ππΎ
- MDN Docs: great ref for web standards, APIs, concepts, techniques, and more
- Prisma's Dataguide: haven't gone through all of it but stumbled upon this and loved a lot of the content it provides and how it covers different database patterns