This page is a high level overview of the topics which were or are yet to be covered in the intensive full stack web developer course. The language of choice is JavaScript/Node.js. All topics are demonstrated and implemented in the project where possible.
Each topic lists sub topics without a particular order.
- Requirements
- Backend
- Debugging
- Testing
- Clean Code
- Refactoring
- Architecture
- Frontend
- Deployment
- Agile
- Brainstorming a development project idea.
- Identifying and documenting requirements and users.
- Tracking of requirements in Github as Github Issues.
- Node.js development environment setup.
- Using npm and package.json for package management.
- Working with git feature branches and Github.
- Developing application features.
- Classes and object-oriented programming.
- Working with a data model.
- Working with an HTTP client to access external APIs.
- MongoDB NoSQL database setup.
- Working with a database client.
- Scaleable project directory and file structure.
- Application entry point.
- Dependency injection and when should you use it.
- Setting up a web-server with fastify.
- Creating REST API endpoints for HTTP requests:
- GET
- POST
- PUT
- DELETE
- Authentication.
- Debugger setup in Visual Studio Code.
- Debugging in practice
- Breakpoints
- Stepping
- Watching
- Call Stack
- What are tests and why do we need them?
- Unit testing of code without dependencies.
- Unit testing using spies and mocks.
- Clean and readable tests.
- Testability as a marker for clean code.
- Testing the integration layer.
- System tests.
- Unit tests in the frontend.
- End to end tests.
- Identifiers of clean code.
- Single responsibility principle.
- Separation of concerns.
- Cohesion.
- Naming functions, variables and classes.
- Small functions and classes.
- What is refactoring and why do we need it?
- When should the code be refactored and why?
- Refactoring without tests.
- Common refactorings:
- Extract function, variable and class.
- Renaming.
- Split loop.
- Replace loop with pipeline.
- Decompose conditional.
- Replace nested conditional with guard clauses.
- What is software architecture?
- Layered architecture.
- Modularity.
- Benefits of a frontend framework like React.
- Frontend project setup with Node.js.
- Frontend project structure.
- Using a UI library like Bootstrap.
- Connecting the frontend to the backend via HTTP.
- What is application deployment and why do we need it?
- Deployment Scripts.
- Local deployment.
- Deploying into the cloud.
- Containerizing an application.
- Automated deployment with Github Actions.
- What is Agile development and do we need it?
- Agile ceremonies:
- Sprints.
- Daily standups.
- Sprint planing.
- Sprint review.
- Scoring poker.
- Sprint retrospective.