Full IT Stack Training Program
Full IT Stack Training Program
25.12.2021
─
Younes Henni
Oran, Algeria
1
Overview
This training program aims to help the trainee acquire web development skills and become
ready to take on real web development projects.
Goals
At the end of this training curriculum, the trainee would acquire all the knowledge and skills
necessary to create any website or application that they want.
This training covers all the hard skills required during the development and deployment
process of an application.
2
Overview 1
Goals 1
Specifications 5
Milestones 7
Technology: Is it food? 7
Your website in hours: WordPress 8
It’s instructive and beautiful: HTML and CSS 9
I can do anything I want: JavaScript 10
He who never sleeps: Backend 11
Talking Machines: RESTful APIs and WebSockets 11
A magical page: Single-Page Applications 12
Once you say it you can’t take it back: Teamwork and Version Management 12
An organized Desktop: Relational Databases 13
Chaos Masters: Non-Relational Databases 14
Clean up your room: Writing clean, documented, and organized code 14
3
Front-end
Front-end web development represents everything that gets executed in the client (The
web browser), it involves three parts:
Markup
The content, written using HyperText Markup Language (HTML)
Stylesheets
The design, specified using Cascading StyleSheets (CSS)
Logic
The functionalities, interactivity, and life that is found in a website, it is coded using
JavaScript
Tools
● HTML
● CSS
● JavaScript
● React.js
● Material-UI
Back-end
Back-end web development represents the server, a centralized software that controls and
organizes users’ access to resources
Tools
4
● JavaScript
● Node.js
● Express.js
Database
The Database is software in which all the data related to the website is stored, it ensures
data remains coherent and non-repetitive. A well-organized database is mandatory for any
application to keep functioning properly as it scales
Tools
● MySQL
● MongoDB
System Administration
Once we have all of this software configured, we need to put our website on the internet.
And that is done by deploying this written software in a server that’s accessible online.
System Administration is about installing and setting up the server so that it hosts our
website
Tools
● Linux
● NGINX
● Docker
● Ansible
● JavaScript
APIs
Different software need to communicate with each other, and that happens through
Application Programming Interfaces, they are a set of conventions for making applications
communicate through different protocols
Tools
● HTTP
● WebSocket
Software Engineering
5
We know how to create software, but what is more important is creating software that is
scalable, reliable, and efficient in an efficient, fast, and mostly automatic way. It is
also, about knowing how to set up your software’s architecture in order for it to scale more
efficiently.
Mobile Development
Just like web applications, mobile applications are well-demanded, so it is important for a
web developer to know how to make these. Mobile development is quite similar to
front-end web development, as mobile applications get executed in the client’s device
Cybersecurity
If we just code our web applications like that, they will be prone to certain vulnerabilities.
Thereby we need to know the different risks that threaten our apps in order for us to
prevent them.
DevOps
During development, there are lots of repetitive tasks that really just slow down the
software development process. DevOps is about setting up a development and IT
operations pipeline that shortens the systems’ development lifecycle
Tools
● Docker/Podman
● Ansible
● Shell
● Git/GitHub
Web Optimization
Specifications
16. React.js
17. Server-side rendering with Next.js
18. Creating Components, documenting and publishing them
19. Version management and issue tracking with Git and GitHub
20. Teamworking in GitHub
Milestones
I. Technology: Is it food?
The participant should have a general view of all the IT stack and what are the
different roles within it. What each person is responsible for and how these
different roles interact with and relate to each other.
Course Content
● The different fields:
○ Electronics
8
○ Logical Circuits
○ Integrated circuits
○ Assembly
○ Operating System
○ IoT
○ Front-end Web
○ Back-end Web
○ Database
○ System
○ Network
○ DevOps
○ Cloud Computing
○ Data Analysis
○ Cybersecurity
○ Artificial Intelligence
○ Data Analysis
○ User Interface and User Experience
● What is the Web
● How the web works
○ Client-Server
○ HTTP Protocol
○ Client Languages
○ Server Languages
○ APIs
○ Frameworks
○ Databases
○ System Administration
○ Mobile Development
○ IP Addressing
○ DNS
Duration
3 hours in one session
Assessments
● Blogs
9
● E-Commerce
● Portfolio
● Online communities (Forums)
● Wiki
● Magazine
● Multisite networks
Duration
10 Hours - 4 sessions
Course content
● Developer’s toolset
○ Computer: Windows, Linux, or macOS
○ Text Editor: VSCode
○ Web Browser: Microsoft Edge / Google Chrome
○ Graphics Editor
■ GIMP
■ Figma
○ Version Control: Git and GitHub
○ Server Communication: SSH and SSH-keygen
○ Development Server: Node.js, Yarn, Serve
● Defining your website
○ What is your website about?
○ What information are you presenting?
○ What does your website look like?
○ Sketching your website
○ Choosing your assets
■ Text
■ Theme color
■ Images
■ Fonts
● HTML Basics
○ Document structure
○ Paragraph and Headers
○ Nesting elements
○ Images - Empty Element
10
○ Lists
○ Links (Anchors)
● CSS Basics
○ Inline styles
○ Adding CSS
○ Putting CSS in a separate file
○ CSS Anatomy
○ Selecting multiple elements
○ Fonts and text
○ Element inspector
○ Boxes: Margin and Padding
○ Inheritance
○ Flexbox
○ Grids
○ Responsive Design
● Javascript
○ Alert
○ Prompt
○ Accessing an element
○ Deleting an element
○ Listening for the click event on a button
Assessments
● Letter - HTML Only
● Portfolio
● Data Table
● Form
● Business Landing page
Duration
10 Hours - 4 sessions
Course content
● Data types
● Variables
11
● Operations
● Conditions
● Loops
● Functions
● Document Object Model (DOM)
● Object-Oriented Programming
● Events
● Recursive functions
● Asynchronous programming: Async/Await, Promises, Fetch / Axios
● MAP, FILTER, REDUCE, EVERY, SOME, FIND,
● Higher order functions
● Node.js
● Writing and reading files
● JSON
Assessments
● Guess the number game
● Map, Filter, Reduce exercise
● Fetching list of resources asynchronously
● Configurable document template
● Markdown document merger
Duration
20 Hours - 10 sessions
Course Content
● Introducing the Backend, Node.js, and packages
● Installing Node.js and yarn
● Package.json and dependencies
● Express.js
● Logging
● Templating with EJS
● Sessions
● Log in and Register
● Redirection
● Prepared Template to work with
12
Assignment
● Add values to a table
● File Server
● Single bank account management CRUD API with Login and Registration
backend
● Realtime chat app
Duration
48 hours - 16 sessions
Duration
16 hours - 5 sessions
VII. Once you say it you can’t take it back: Teamwork and Version Management
The participant should be able to use Git and GitHub for personal and team
projects. And be aware of the best practices when it comes to version management
● Kanban
● Scrum
● Version Management
● Git
○ Commits
○ Branches
○ Repositories
○ Submodules
● GitHub
○ Repositories
○ Issues
○ Milestones
○ Projects: Kanban
○ Pull Requests
Assignments
● Working on a small document as a team, exploring the different problems
encountered while working as a team
Duration
2 Hours - one session
Duration
20 Hours - 8 sessions
databases, notably MongoDB. They should also be able to know which database is most
suitable for a specific use case.
Course Content:
● SQL Limitations
● Key-Value based Databases
● Column-based Databases
● Document-based Databases
● Graph-based Databases
Assignments:
● Real-time storing and retrieving heterogeneous data
Duration
12 Hours - 4 sessions
Duration
2 Hours - one session
The participant should be able to make efficient use of the Linux shell, manage files
and permissions, packages, users, and storage
Course Content
● Installing Linux
● Command Line basics
● Files and Permissions
● Package Management
● Shells and Processes
● Virtualization and Containers
● Docker Compose
Duration
30 Hours - 15 sessions
XIII. Let the world see you: Deploying your application on the internet
The participant will learn how to deploy his website on a server so that it is
accessible from anywhere
Course Content
● DNS
● Firewall
● NGINX reverse proxy
Duration
4 Hours - 2 sessions
Duration
4 Hours - two sessions
Duration
16 Hours - 6 sessions
Duration
8 Hours - 4 sessions
18
Duration
4 Hours - 2 sessions
○ Podman
● Orchestrating containers
○ Docker Swarm
○ Kubernetes
Duration
20 Hours - 10 sessions