- Getting Things Done in Next.js
- Introduction
- Acknowledgments
- 1. A Brief Introduction to JavaScript
- 1.1. Hello World
- 1.2. Primitive Data Types
- 1.3. Arrays and Objects
- 1.4. Control Flow
- 1.5. Functions
- 1.6. Classes
- 1.7. Error Handling
- 1.8. Basic Data Structures
- 1.9. Functional Thinking
- 1.10. Asynchronous Programming
- 1.11. Modules
- 1.12. Packages
- 1.13. Writing Decent Code
- 2. Leveling Up with TypeScript
- 2.1. Why TypeScript?
- 2.2. Basic Types
- 2.3. Annotating Functions
- 2.4. Union Types
- 2.5. Generics
- 2.6. Configuring TypeScript
- 3. Networking Fundamentals
- 3.1. IPs, Ports and Domains
- 3.2. An HTTP Primer
- 3.3. More on HTTP
- 4. Persistence with SQL
- 4.1. Setup
- 4.2. Data Types and Constraints
- 4.3. Inserting, Updating and Deleting Data
- 4.4. Selecting Data
- 4.5. Modifying Tables
- 4.6. Working with Multiple Tables
- 5. Typesafe SQL with Drizzle
- 5.1. Setup
- 5.2. Inserting, Updating and Deleting Data
- 5.3. Selecting Data
- 5.4. Multiple Tables
- 5.5. Migrations
- 6. A Vanilla Client
- 6.1. Hypertext Markup Language
- 6.2. Marking Up Text
- 6.3. Hyperlinks and Images
- 6.4. The Document Object Model
- 6.5. Events
- 6.6. Web Forms
- 6.7. A Simple Client
- 7. Adding Spice with React
- 7.1. React Components
- 7.2. React State
- 7.3. React Effects
- 8. Moving to the Server with Next.js
- 8.1. Setup
- 8.2. Pages and Layouts
- 8.3. More on Routes
- 8.4. Server and Client Components
- 9. Becoming Pretty with Tailwind CSS
- 9.1. Setup
- 9.2. Typography Utilities
- 9.3. Background Utilities
- 9.4. Size Utilities
- 9.5. Border Utilities
- 9.6. Spacing Utilities
- 9.7. Flexbox
- 9.8. Grid
- 10. The Project
- 10.1. Setup
- 10.2. Authentication
- 10.3. The Projects Page
- 10.4. Task Page
- 10.5. Deployment