An open API service indexing awesome lists of open source software.

https://github.com/sooraj-sky/improving-everyday

Zero to Hero self-paced learning platform for DevOps engineers.
https://github.com/sooraj-sky/improving-everyday

devops devops-platform lms

Last synced: 5 days ago
JSON representation

Zero to Hero self-paced learning platform for DevOps engineers.

Awesome Lists containing this project

README

          

# DevOps Learn

A modern, self-paced learning platform for DevOps engineers. 20 structured tracks covering Linux, cloud, containers, CI/CD, security, and more — all running locally in the browser with no backend required.

---

## Features

- **20 learning tracks** organized from beginner to advanced, with modules and individual lessons
- **Progress tracking** — lesson completion state saved automatically per profile
- **Profile system** — create multiple learner profiles, each with their own progress
- **Module exams** — quiz-style assessments at the end of each module
- **Notes** — attach personal notes to any lesson
- **Full-text search** — search across all 20 tracks, modules, and lessons instantly
- **Light / Dark mode** — toggle between themes from the top nav bar
- **Lesson navigation** — prev/next lesson links within a track, breadcrumb navigation
- **No backend required** — all data is stored in your browser (localStorage)

---

## Learning Tracks

| # | Track | Level | Topics |
|---|-------|-------|--------|
| 01 | **Linux** | Beginner → Advanced | File system, permissions, process management, shell scripting, security hardening |
| 02 | **Linux Networking** | Beginner → Advanced | TCP/IP, DNS, firewalls, network troubleshooting, VPNs |
| 03 | **Scripting & Automation** | Beginner → Intermediate | Bash scripting, cron, automation patterns |
| 04 | **SSH & Network Protocols** | Beginner → Intermediate | SSH keys, tunneling, port forwarding, SCP/SFTP |
| 05 | **Git** | Beginner → Advanced | Branching, merging, rebasing, hooks, workflows |
| 06 | **GitHub Actions** | Beginner → Advanced | Workflows, runners, secrets, matrix builds, reusable workflows |
| 07 | **GitLab CI/CD** | Beginner → Advanced | Pipelines, runners, templates, environments, Container Registry, security scanning |
| 08 | **Python** | Beginner → Advanced | Core Python, scripting, automation, APIs, testing |
| 09 | **Docker** | Beginner → Advanced | Images, containers, volumes, networking, Docker Compose, security |
| 10 | **Databases** | Beginner → Intermediate | SQL, PostgreSQL, Redis, backups, connection pooling |
| 11 | **Web Technology** | Beginner → Intermediate | HTTP, TLS, reverse proxies, load balancing, CDNs |
| 12 | **SDLC** | Beginner → Intermediate | Agile, Scrum, Kanban, release management, SLOs |
| 13 | **Go Programming** | Beginner → Intermediate | Go fundamentals, concurrency, CLI tools, Docker/Kubernetes SDKs |
| 14 | **Terraform** | Beginner → Advanced | HCL, providers, modules, workspaces, remote state, advanced patterns |
| 15 | **AWS** | Beginner → Advanced | EC2, S3, VPC, IAM, RDS, EKS, Lambda, CloudFormation |
| 16 | **Kubernetes** | Intermediate → Advanced | Pods, deployments, services, ingress, RBAC, Helm, operators |
| 17 | **DevSecOps** | Intermediate → Advanced | Threat modeling, SAST/DAST, secret scanning, supply chain security |
| 18 | **Troubleshooting** | Intermediate → Advanced | Systematic debugging, observability, incident response, postmortems |
| 19 | **Compliance** | Intermediate → Advanced | SOC 2, ISO 27001, GDPR, audit trails, policy as code |
| 20 | **Prompt Engineering** | Beginner → Advanced | LLM fundamentals, prompt patterns, AI-assisted DevOps workflows |

---

## Screenshots

### Dashboard
![Dashboard](public/screenshots/dashboard.png)

### Track Page
![Track Page](public/screenshots/track.png)

### Lesson Viewer
![Lesson Viewer](public/screenshots/lesson.png)

---

## Running Locally

### What you need first

Before you start, make sure you have the following installed on your computer:

- **Node.js v18 or higher** — download from [nodejs.org](https://nodejs.org). Choose the "LTS" version if you're unsure.
- To check if you already have it: open a terminal and run `node -v`
- **Git** — download from [git-scm.com](https://git-scm.com)
- To check if you already have it: run `git --version`

### Step-by-step setup

**1. Clone the repository**

This downloads the project code to your computer.

```bash
git clone https://github.com//devops-lms.git
```

**2. Enter the project folder**

```bash
cd devops-lms
```

**3. Install dependencies**

This installs all the libraries the project needs. It may take a minute.

```bash
npm install
```

**4. Start the development server**

```bash
npm run dev
```

**5. Open the app**

Open your browser and go to: [http://localhost:3000](http://localhost:3000)

You'll be asked to create a learner profile on first launch. Enter any name and click **Get Started**.

> **Tip:** The development server has hot reload — any changes you make to the code will appear in the browser instantly without needing to restart.

---

## Running with Docker

Docker lets you run the app in a container without installing Node.js. This is the recommended way to run it in production.

### What you need

- **Docker Desktop** — download from [docker.com](https://www.docker.com/products/docker-desktop). Install it and make sure it's running (you'll see the Docker icon in your taskbar/menu bar).

### Option 1 — Pull the pre-built image from GitHub Container Registry

If the project has been pushed to GitHub, you can pull the ready-made image directly:

```bash
docker pull ghcr.io//:latest
docker run -p 3000:3000 ghcr.io//:latest
```

Then open [http://localhost:3000](http://localhost:3000).

### Option 2 — Build the image yourself

If you've cloned the repository and want to build locally:

```bash
# Build the image (this takes a few minutes the first time)
docker build -t devops-lms .

# Run the container
docker run -p 3000:3000 devops-lms
```

Then open [http://localhost:3000](http://localhost:3000).

To stop the container, press `Ctrl + C` in the terminal.

### Run in the background (detached mode)

If you want the container to keep running after you close the terminal:

```bash
docker run -d -p 3000:3000 --name devops-lms devops-lms
```

To stop it later:

```bash
docker stop devops-lms
```

---

## Building using Docker Compose (Self Hosting)
## Docker Compose

```bash
docker compose up -d
```

Example compose file:

```yaml
services:
improving-everyday:
image: ghcr.io/sooraj-sky/improving-everyday:latest
container_name: devops-local-book

ports:
- "3000:3000"

environment:
NODE_ENV: production
PORT: 3000
HOSTNAME: 0.0.0.0

restart: unless-stopped
```

## Building for Production (without Docker)

If you want to run the optimised production build directly with Node.js:

```bash
# Build the app
npm run build

# Start the production server
npm start
```

The app will be available at [http://localhost:3000](http://localhost:3000). The production build is faster and uses less memory than the development server.

---

## Tech Stack

| Technology | Purpose |
|-----------|---------|
| [Next.js](https://nextjs.org) | React framework (App Router) |
| TypeScript | Type-safe JavaScript |
| Tailwind CSS | Styling |
| localStorage | All data storage — no database needed |
| React Context | State management for profiles and progress |
| Lucide React | Icons |

---

## Project Structure

```
devops-lms/
├── app/ # Pages and routes (Next.js App Router)
├── components/
│ ├── layout/ # Sidebar, top nav, app shell
│ ├── lesson/ # Lesson viewer, code blocks, quizzes
│ └── ui/ # Reusable UI primitives (buttons, dialogs, etc.)
├── lib/
│ ├── content/ # All 20 learning tracks as TypeScript files
│ └── hooks/ # React hooks (useProfile, useProgress, useNotes, useTheme)
└── public/ # Static assets and screenshots
```

---

## Adding a New Track

Each learning track is a single TypeScript file. To add your own:

1. Create `lib/content/my-topic.ts` — copy the structure from any existing file like `lib/content/linux.ts`
2. Import and add it to the `tracks` array in `lib/content/index.ts`
3. Add a gradient colour class for the track card in `app/globals.css`

---

## Troubleshooting

**`npm install` fails**
Make sure you have Node.js v18 or higher. Run `node -v` to check. If the version is lower, download the latest LTS from [nodejs.org](https://nodejs.org).

**Port 3000 is already in use**
Another app is using port 3000. Either stop that app, or run the dev server on a different port:
```bash
npm run dev -- -p 3001
```
Then open [http://localhost:3001](http://localhost:3001).

**Docker build fails with "Cannot connect to the Docker daemon"**
Docker Desktop is not running. Open it from your Applications folder (Mac) or Start menu (Windows) and wait for it to fully start before running the build command again.

**Changes I make to the code don't appear**
Make sure the development server (`npm run dev`) is running. If it is, try refreshing the browser. If the issue persists, stop the server with `Ctrl + C` and start it again.