This repository contains my solutions and progress for the Full Stack Open course by the University of Helsinki.
- Part 0–2: React fundamentals, component state, forms, and data fetching
- Part 3: Backend with Node.js, Express, MongoDB, and deployment
- Part 4: Backend testing, user authentication, and authorization
- Part 5: Frontend testing, login/token handling, and end-to-end testing
- Part 6: State management with Context API, Zustand, and React Query
- Part 7: In Progress...
- React (components, state, props, forms, conditional rendering)
- Axios (HTTP client)
- React Router (client-side routing,
useMatch,useNavigate) - MUI (Material UI) & Emotion (component library and styling)
- Context API &
useState(shared state without prop drilling) - Zustand (lightweight global state store)
- TanStack React Query (server-state caching, mutations, and query invalidation)
- json-server (mock REST backend for local development)
- Node.js
- Express.js (REST API, routing, middleware)
- MongoDB & Mongoose (schemas, models, validation)
- Schema relations with
refand.populate()(e.g. User ↔ Note references) - dotenv (environment variables)
- CORS (cross-origin resource sharing)
- JSON Web Tokens (JWT)
- Password hashing with bcrypt
- Token-based authorization for protected routes
- Middleware-based authentication handling
- Client-side token persistence with
localStorageand attaching tokens to requests
- Supertest (HTTP integration testing)
- Automated backend tests
- HTTP requests with Supertest
- API endpoints
- Authentication and authorization
- Database state changes
- Frontend unit/integration testing
- Vitest & React Testing Library
- jsdom (simulated browser environment)
- user-event (simulating user interactions)
- Test coverage reporting with @vitest/coverage-v8
- End-to-end testing
- Playwright
- Testing full user flows against a running app (login, CRUD, notifications)
- REST principles (GET, POST, PUT, DELETE)
- CRUD operations
- HTTP status codes
- Error handling with middleware
- Web application fundamentals (HTTP request/response cycle, traditional web apps vs. single-page apps)
- cross-env (cross-platform environment variable support)
- ESLint (code linting)
- Git & GitHub (version control)
- npm (package management)
- Postman & REST Client (manual API testing)
- Deployment with Render
This repository is updated continuously as I progress through the course.