Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0ff19ae

Browse files
committed
feat: initial version
0 parents  commit 0ff19ae

25 files changed

+17710
-0
lines changed

.gitignore

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Dependencies
2+
/node_modules
3+
4+
# Production
5+
/build
6+
7+
# Generated files
8+
.docusaurus
9+
.cache-loader
10+
.cursor
11+
12+
# Misc
13+
.DS_Store
14+
.env.local
15+
.env.development.local
16+
.env.test.local
17+
.env.production.local
18+
19+
npm-debug.log*
20+
yarn-debug.log*
21+
yarn-error.log*

.prettierignore

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Dependencies
2+
node_modules/
3+
4+
# Docusaurus build outputs
5+
build/
6+
.docusaurus/
7+
8+
# Lock files
9+
package-lock.json
10+
bun.lockb
11+
12+
# Logs
13+
*.log
14+
15+
# OS files
16+
.DS_Store
17+
18+
# Static assets (if you don't want to format them)
19+
# static/

.prettierrc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"arrowParens": "always",
3+
"bracketSpacing": false,
4+
"bracketSameLine": true,
5+
"printWidth": 80,
6+
"proseWrap": "never",
7+
"singleQuote": true,
8+
"trailingComma": "all"
9+
}

LICENSE

Lines changed: 427 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Website
2+
3+
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
4+
5+
## Installation
6+
7+
```bash
8+
yarn
9+
```
10+
11+
## Local Development
12+
13+
```bash
14+
yarn start
15+
```
16+
17+
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18+
19+
## Build
20+
21+
```bash
22+
yarn build
23+
```
24+
25+
This command generates static content into the `build` directory and can be served using any static contents hosting service.
26+
27+
## Deployment
28+
29+
Using SSH:
30+
31+
```bash
32+
USE_SSH=true yarn deploy
33+
```
34+
35+
Not using SSH:
36+
37+
```bash
38+
GIT_USER=<Your GitHub username> yarn deploy
39+
```
40+
41+
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

bun.lockb

498 KB
Binary file not shown.

docs/ci-cd.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# CI/CD
2+
3+
You know about CI/CD pipelines, but your current team does manual deployments. One person runs tests, builds the app, and pushes to production. It's slow but manageable for your small team. But as teams grow and deployment frequency increases, manual processes become too difficult and lead to mistakes. You realize that while manual deployments work for small teams, most professional environments expect automated pipelines.
4+
5+
Backend developers especially benefit from mastering CI/CD since they often manage server deployments, database migrations, and infrastructure changes. However, understanding these concepts helps all developers work more effectively in team environments. It's time to embrace CI/CD.
6+
7+
- **Continuous Integration (CI):** The practice of regularly merging code changes into a shared repository, typically the main branch. Each merge triggers an automated build and test process to identify integration issues early.
8+
9+
- **Continuous Delivery (CD):** The practice of automatically preparing code for release after successful integration. This includes packaging the application, deploying to a staging environment, and running additional tests to ensure the build is always production-ready.
10+
11+
- **Continuous Deployment (also CD):** The practice of automatically deploying code to production once it passes all previous stages. No manual intervention is required.
12+
13+
## Why It Matters
14+
15+
Owning your part in CI/CD isn't just about following company processes — it directly improves your day-to-day experience.
16+
17+
- **Faster Feedback:** Your pipeline alerts you within minutes if something breaks, helping you catch issues early instead of finding out hours (or worse, days) later.
18+
- **Less Risk, Less Stress:** Automated deployments take the pressure off "release day" and remove the chance of last-minute mistakes.
19+
- **Real Ownership:** With the "you build it, you run it" mindset, you get to see how your code behaves in the real world — and you gain more control over the quality of what you deliver.
20+
21+
CI/CD isn't a box to check. It's a workflow that helps you and your team build and ship better software, faster. The more you understand your role in it, the more confident and capable you become.
22+
23+
## What's expected from you
24+
25+
You don't have to be an expert in CI/CD, but you should be able to understand the basics and be able to use the tools. The goal is to be comfortable with the fundamental concepts and workflows that enable your team to deploy safely and efficiently.
26+
27+
### Continuous Integration (CI)
28+
29+
This is where you have the most direct impact. Your main goal is to ensure the `main` branch is always stable and green.
30+
31+
- **Fixing the Build is Priority #1:** If your commit breaks the build in the `main` branch, you have broken it for _everyone_. Drop what you're doing. Fixing the build is now your most important task. A broken pipeline blocks the entire team from delivering value.
32+
- **Your Tests are the Pipeline's Backbone:** The pipeline relies entirely on your unit and integration tests to validate your changes. If your tests are unreliable or incomplete, the pipeline provides a false sense of security. Quality tests are a requirement for effective CI.
33+
- **Commit Small and Often:** Large pull requests are a nightmare for CI. They are difficult to review, and if they break the build, it's hard to find the cause. Small commits that represent a single logical change make the process smoother and debugging easier.
34+
- **Understand Your Service's Build Process:** You don't need to be an expert, but you should understand how your application is built, tested, and packaged. Know where your dependencies are defined (`pom.xml`, `package.json`) and how to run the build script locally to diagnose issues.
35+
36+
### Continuous Delivery/Deployment (CD)
37+
38+
Your responsibility extends beyond just passing tests. You need to write code that can be deployed and operated safely and automatically.
39+
40+
- **Embrace Feature Flags:** Feature flags (or feature toggles) allow you to deploy code to production without releasing it to users. This separates deployment from release, greatly reducing the risk of a new feature causing an outage. Merging dark code is a standard, expected practice.
41+
42+
- **Write Deployment-Ready Code:** Your code should be ready to deploy at any time. This means:
43+
- **Configuration Management:** Use environment variables for configuration, not hardcoded values.
44+
- **Database Migrations:** Write backward-compatible database changes that can be deployed without downtime.
45+
- **Graceful Shutdowns:** Handle termination signals properly so your application can shut down cleanly during deployments.
46+
47+
- **Monitor Your Deployments:** You're responsible for knowing if your deployment succeeded or failed. Learn to read deployment logs and understand the metrics that matter for your application. For more information about monitoring and observability, see the [Observability](./observability.md) section.
48+
49+
## Start Simple
50+
51+
If you're new to CI/CD, begin with something easy like [GitHub Actions](https://github.com/features/actions). It combines both CI and CD in one place, making it simpler to understand without needing many tools. You can create basic setups that test your code and put it online on simple platforms. As you get more comfortable, you can add more advanced features.
52+
53+
## Resources
54+
55+
### English Resources
56+
57+
- [🎥 What is Continuous Integration?](https://youtu.be/1er2cjUq1UI?si=Rqc8pEP4wqV1l8US)
58+
- [🎥 What is Continuous Delivery?](https://youtu.be/2TTU5BB-k9U?si=LTpV3mEZdiHtXOfg)
59+
- [🎥 What are Feature Flags?](https://youtu.be/AJa2B-twtG4?si=6yMfLVnIZdUIeJyJ)
60+
- [🎥 CI/CD Explained: The DevOps Skill That Makes You 10x More Valuable](https://youtu.be/AknbizcLq4w?si=wL8jrOa-ygigDNfr)
61+
- [🎥 Deployment Pipelines](https://youtube.com/playlist?list=PLwLLcwQlnXBzhxIXSbtDPX78zYTgvST0B&si=JEi_UGWOvRIjAtU_)
62+
- [📚 GitLab CI/CD Documentation](https://about.gitlab.com/topics/ci-cd/)
63+
- [📚 What is CI/CD? by Github](https://github.com/resources/articles/devops/ci-cd)
64+
65+
### Arabic Resources
66+
67+
- [🎥 GitLab CI/CD from zero to hero (Arabic)](https://youtu.be/S-kpjjeDZGw?si=9IuyOqulI3BQqZoy)
68+
- [🎥 GitHub Actions full course Arabic](https://youtu.be/7gJFHjXscr8?si=JXHkVi82At4UO27q)
69+
- [🎥 شرح مفصل (CI/CD) Continuous Integration و continuous delivery و continuous deployment](https://youtu.be/l_ih7lVHBII?si=dXTSeLXWujCtJ3fu)
70+
- [🎥 ما هو التكامل المستمر والنشر المستمر CI/CD](https://youtu.be/hFzSG9qNWWs?si=D2QAfu9NEgfy5hnq)
71+
- [🎥 أكاديمية ترميز - CI/CD](https://youtu.be/XdaW-gVzsXo?si=xsjUUngAX9_Vu5pU)
72+
- [📚 مقالات اقرأ-تك](https://eqraatech.com/tag/ci-cd/)

docs/containerization.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Containerization
2+
3+
You've heard about Docker and containers, but your current setup is simple—you develop locally and deploy to a single server that the DevOps person manages. It works fine for your current project. But as soon as you need to scale, work with multiple environments, or collaborate with larger teams, environment consistency becomes important. You realize that while you can avoid containers in simple environments, most modern development teams use them. It's time to learn containerization.
4+
5+
## Why It Matters
6+
7+
By solving the environment problem, containers provide powerful advantages that improve the entire software development process. For you and your team, this translates to real benefits:
8+
9+
- **Consistency and Reliability:** The container creates a single source of truth for your application's environment. This removes the "it works on my machine" problem, leading to fewer bugs and more reliable deployments.
10+
- **True Portability:** A container built on your laptop will run the same way on a testing server, a production server, or any cloud provider (AWS, Azure, Google Cloud). You can move your application without changing its code or configuration.
11+
- **Efficiency and Scalability:** Containers are lightweight and start up quickly because they share the host machine's OS kernel. This allows you to run more containers on the same hardware compared to VMs, making it easier and cheaper to scale your application up or down based on demand.
12+
- **Simplified Collaboration:** When your entire team uses the same containerized environment, everyone—from developers to QA testers—is on the same page. This reduces friction and time wasted on environment setup and debugging.
13+
14+
## What's expected from you
15+
16+
As a modern developer, you should be comfortable with the basic concepts of containerization. This doesn't mean you need to be a DevOps expert, but you should understand how to package your own applications into containers and how to run them. The goal is to be able to create a reliable and portable version of your software that can be handed off for deployment or used in a larger automated workflow.
17+
18+
### Docker
19+
20+
While other containerization tools exist (like Podman), **[Docker](https://www.docker.com/)** has become the most popular industry standard. Its widespread adoption means you'll see it everywhere in tutorials, open-source projects, and job requirements. Learning Docker is your most important first step into the world of containers.
21+
22+
- **Dockerfile**: This is a simple text file you create that acts as a blueprint for your container. It lists all the instructions needed to build your application's environment, such as specifying a base OS, copying your code, installing dependencies, and defining the startup command.
23+
- **Image and Container**: Using the `Dockerfile`, you build an **Image**, which is a small, independent, and runnable package. When you run an Image, it becomes a **Container**—an active, running version of your application.
24+
- **Core Commands**: You'll need to get comfortable with a few essential commands to build images from your Dockerfile, run containers from those images, and list which containers are currently active.
25+
- **Docker Compose**: For applications that require multiple services to run at once (like a backend API, a database, and a frontend), you will use **[Docker Compose](https://docs.docker.com/compose/)**. It lets you define and manage your entire multi-container application with a single YAML configuration file.
26+
27+
### Container Orchestration
28+
29+
While building and running containers on your own machine is a skill for every developer, managing them in a live production environment is primarily a task for backend and DevOps engineers. However, understanding the core concepts of **container orchestration** is valuable for everyone on a development team. It helps you understand how your application will ultimately be deployed, scaled, and maintained.
30+
31+
Orchestration tools become necessary when you move beyond running a few containers on a single machine. They solve the complex problem of managing maybe hundreds or thousands of containers across many servers. These tools automate the deployment, management, scaling, and networking of your applications. The most popular orchestration tool today is **[Kubernetes (K8s)](https://kubernetes.io/)**. Kubernetes groups containers into logical units called **Pods** and manages their lifecycle automatically. It handles complex tasks like:
32+
33+
- **Service Discovery & Load Balancing:** Distributing network traffic to ensure your application is stable.
34+
- **Automated Rollouts & Rollbacks:** Slowly deploying new versions of your app and rolling back if something goes wrong.
35+
- **Self-Healing:** Restarting containers that fail, replacing them, and killing containers that don't respond to health checks.
36+
37+
While you aren't expected to be a Kubernetes administrator, you should understand its basic concepts (like Pods, Services, and Deployments). This knowledge is important when working with cloud platforms like AWS, Google Cloud, or Azure, as they all offer managed Kubernetes services (EKS, GKE, AKS) that simplify its setup and operation.
38+
39+
For simpler use cases, **[Docker Swarm](https://docs.docker.com/engine/swarm/)** is an easier-to-learn alternative that is built into Docker itself. It offers basic orchestration features and is a good first step before diving into the complexities of Kubernetes.
40+
41+
## Resources
42+
43+
### English Resources
44+
45+
- [🎥 Containerization Explained](https://youtu.be/0qotVMX-J5s?si=bujRV-XPYrP90PXo)
46+
- [🎥 Virtual Machine (VM) vs Docker](https://youtu.be/a1M_thDTqmU?si=Ea-jIGFbzPFQyHHi)
47+
- [🎥 Kubernetes vs. Docker: It's Not an Either/Or Question](https://youtu.be/2vMEQ5zs1ko?si=nn2Q5rSq8c8a4apb)
48+
- [🎥 Docker Tutorial for Beginners](https://youtube.com/playlist?list=PLy7NrYWoggjzfAHlUusx2wuDwfCrmJYcs&si=WgrtQworBys__gfT)
49+
- [🎥 Container Orchestration Explained](https://youtu.be/kBF6Bvth0zw?si=QQ1udy7DhjE9kWGm)
50+
- [🎥 Complete Kubernetes Tutorial for Beginners](https://youtube.com/playlist?list=PLy7NrYWoggjziYQIDorlXjTvvwweTYoNC&si=wH7baSjI0icY6mLK)
51+
52+
### Arabic Resources
53+
54+
- [🎥 قصة الكونتينر .. Container story](https://youtu.be/jPzJVH1ab-4?si=qr0UIRRSrld8RVnQ)
55+
- [🎥 Docker Crash Course - كورس Docker للمبتدئين](https://youtu.be/9yoe8dBvAZ0?si=TSTdBGCoqOob5ZIz)
56+
- [🎥Docker سلسلة تعلم - by Codographia](https://youtube.com/playlist?list=PLX1bW_GeBRhDkTf_jbdvBbkHs2LCWVeXZ&si=WzaUxanOe8awl1aZ)
57+
- [🎥 Kubernetes بالعربي](https://youtu.be/7gJFHjXscr8?si=JXHkVi82At4UO27q)
58+
- [🎥 Kubernetes 101](https://youtu.be/KYhcpHIrjtE?si=uKH9vL4M2NyToPsr)
59+
- **[📚 مقالات اقرأ-تك](https://eqraatech.com/tag/docker/)**

docs/getting-started.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
sidebar_position: 1
3+
slug: /
4+
---
5+
6+
# Getting Started
7+
8+
## What is Dev Rebase?
9+
10+
Dev Rebase is a collection of short guides designed to help developers learn about modern software development practices. These guides cover essential topics that are commonly expected in today's tech industry, especially when working at international companies or applying for remote positions.
11+
12+
## Why I created this website?
13+
14+
### My personal journey
15+
16+
I'm [Mohammad Ghanem](https://www.linkedin.com/in/ghanem-mhd/), a software engineer who moved from Syria to Germany. As someone from Syria, I experienced firsthand how software development practices can vary significantly between different regions and markets...
17+
18+
This became very clear when I moved to Germany and started working at different companies. I quickly realized there were many practices and approaches that most companies expected me to know as a developer. I had to actively learn these topics to bridge the gap in my knowledge and meet industry standards.
19+
20+
### Coaching experience that inspired this project
21+
22+
About a year ago, I started volunteering with the [Imagine Foundation](https://www.joinimagine.com/) as a technical coach. I began conducting technical coaching sessions for developers who were trying to enter the European job market. Over the course of this work, I completed dozens of sessions, numbering in the high double digits, with people at different skill levels.
23+
24+
I loved every single session and had the pleasure of meeting many wonderful people. During these sessions, I noticed that most fellows (we call them fellows because that's the name of the program at Imagine) faced similar knowledge gaps. This happened for the same reasons I experienced - their work environments implemented fewer modern practices, and the expectations were lower.
25+
26+
This gap in knowledge and skills could affect their chances when applying for remote jobs or positions that require relocation. After seeing this pattern repeat many times, I realized it would be valuable to collect these practices and topics in one place and share them with my fellows and anyone else who might find them useful.
27+
28+
## For who?
29+
30+
This guide is **not** a roadmap to learn programming or start in the tech world. Instead, it targets:
31+
32+
- Developers who already know how to program.
33+
- Computer Science graduates with programming knowledge.
34+
- People already working in the industry as frontend, backend, or mobile engineers.
35+
- Anyone looking to understand modern development practices used in international companies.
36+
37+
If you can already program and build applications, but want to learn about industry practices, tools, and methodologies, this guide is for you.
38+
39+
## How to use this guide?
40+
41+
The topics are presented in an order that makes logical sense, but **you can read them in any order** that works for you. Each guide is designed to be self-contained, so feel free to jump to topics that interest you most or that you need to learn for your current work. At the end of each topic, there a list of resources in English and Arabic. These resources are not exhaustive and don't the topic in depth, but they are a good starting point to learn more.
42+
43+
## What topics are covered?
44+
45+
**Core Skills** - Essential technical skills that every developer needs to work effectively in modern development environments.
46+
47+
- [Web Development](/web)
48+
- [Git](/git)
49+
- [Testing](/testing)
50+
51+
**Deployment & Production** - Tools and practices for deploying applications and maintaining them in production environments.
52+
53+
- [Containerization](/containerization)
54+
- [CI/CD](/ci-cd)
55+
- [Observability](/observability)
56+
57+
**Learn by Doing** - Practical ways to apply your skills and build real-world experience while contributing to the developer community.
58+
59+
- [Open Source](/open-source)
60+
61+
**Learn from Others** - Resources for connecting with experienced developers and communities that can accelerate your growth.
62+
63+
- [Mentorship](/mentorship)
64+
- [Global Communities](/global-communities)
65+
66+
## How to contribute?
67+
68+
This is an open source project, and **anyone is welcome to contribute**! If you find a topic that is missing, contains errors, or could be improved, please feel free to open an issue or submit a pull request at [dev-rebase/dev-rebase.github.io](https://github.com/dev-rebase/dev-rebase.github.io). Also, if there's a specific topic you'd like to see part of this guide, please create an issue to request it.

0 commit comments

Comments
 (0)