This repository contains all my coursework for the Fullstack Open Course offered by the University of Helsinki. Below is a brief overview of what each part of the course covered. It progresses from basic to advanced web development. Most part contains multiple subdirectories with individual projects. Many projects are revisited and and improved throughout the course.
This part introduces the fundamentals of web applications. It covers the basics of web development, including how the web works, basic HTML and CSS, and how to set up a simple web page.
- JavaScript
- Creating React applications with Vite
- Components and props
- State and event handling
- Debugging
This part dives into communicating with a server from a React application. Key concepts include:
- REST APIs
- HTTP methods (GET, POST, PUT, DELETE)
- Asynchronous operations using promises and async/await
This part covers backend development using Node.js and Express. Topics include:
- Setting up an Express server
- Handling different routes
- Middleware
- Deploying apps to the internet
- MongoDB as database
- ESLint
Part 4 is about testing and user administration in Express servers. The main topics are:
- Writing unit and integration tests
- Backend integration testing with Supertest
- User authentication and authorization
- References across MongoDB collections
- End to end testing: Playwright
- Unit testing: Vitest & React Testing Library
- Mocking dependencies
Advanced state management in React applications, including:
- Managing data on server: React Query/Tanstack
- Managing data on the client (simple): useReducer & useContext
- Managing data on client (advanced): Redux and the flux architecture
- Handling side effects with Redux Thunk
Part 7 covers additional React features and tools, including:
- Routing with React Router
- Creating custom hooks
- Styling components with CSS
- Bundling applications with esbuild or Webpack
- Loaders, transpiling & minification
This part introduces GraphQL.
- Setting up a GraphQL server
- Writing queries and mutations
- Using Apollo Client with React
- Cache invalidation
Part 9 focuses on TypeScript, a typed superset of JavaScript. We cover:
- Basic TypeScript syntax and types
- Using TypeScript in Express and React apps
- TypeScript features like interfaces and generics
- Using type guards
- Type narrowing
Part 11 introduces Continuous Integration and Continuous Deployment (CI/CD). We learn about:
- Setting up CI/CD pipelines
- Automated testing and deployment
- Tools like GitHub Actions and Docker