{"id":50247248,"url":"https://github.com/sooraj-sky/improving-everyday","last_synced_at":"2026-05-26T23:34:05.734Z","repository":{"id":357733653,"uuid":"1237862278","full_name":"sooraj-sky/improving-everyday","owner":"sooraj-sky","description":"Zero to Hero self-paced learning platform for DevOps engineers.","archived":false,"fork":false,"pushed_at":"2026-05-26T11:48:06.000Z","size":3366,"stargazers_count":34,"open_issues_count":1,"forks_count":25,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T13:31:30.469Z","etag":null,"topics":["devops","devops-platform","lms"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sooraj-sky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-13T15:22:40.000Z","updated_at":"2026-05-26T11:48:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sooraj-sky/improving-everyday","commit_stats":null,"previous_names":["sooraj-sky/improving-everyday"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sooraj-sky/improving-everyday","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sooraj-sky%2Fimproving-everyday","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sooraj-sky%2Fimproving-everyday/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sooraj-sky%2Fimproving-everyday/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sooraj-sky%2Fimproving-everyday/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sooraj-sky","download_url":"https://codeload.github.com/sooraj-sky/improving-everyday/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sooraj-sky%2Fimproving-everyday/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33543973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","devops-platform","lms"],"created_at":"2026-05-26T23:34:01.871Z","updated_at":"2026-05-26T23:34:05.725Z","avatar_url":"https://github.com/sooraj-sky.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DevOps Learn\n\nA 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.\n\n---\n\n## Features\n\n- **20 learning tracks** organized from beginner to advanced, with modules and individual lessons\n- **Progress tracking** — lesson completion state saved automatically per profile\n- **Profile system** — create multiple learner profiles, each with their own progress\n- **Module exams** — quiz-style assessments at the end of each module\n- **Notes** — attach personal notes to any lesson\n- **Full-text search** — search across all 20 tracks, modules, and lessons instantly\n- **Light / Dark mode** — toggle between themes from the top nav bar\n- **Lesson navigation** — prev/next lesson links within a track, breadcrumb navigation\n- **No backend required** — all data is stored in your browser (localStorage)\n\n---\n\n## Learning Tracks\n\n| # | Track | Level | Topics |\n|---|-------|-------|--------|\n| 01 | **Linux** | Beginner → Advanced | File system, permissions, process management, shell scripting, security hardening |\n| 02 | **Linux Networking** | Beginner → Advanced | TCP/IP, DNS, firewalls, network troubleshooting, VPNs |\n| 03 | **Scripting \u0026 Automation** | Beginner → Intermediate | Bash scripting, cron, automation patterns |\n| 04 | **SSH \u0026 Network Protocols** | Beginner → Intermediate | SSH keys, tunneling, port forwarding, SCP/SFTP |\n| 05 | **Git** | Beginner → Advanced | Branching, merging, rebasing, hooks, workflows |\n| 06 | **GitHub Actions** | Beginner → Advanced | Workflows, runners, secrets, matrix builds, reusable workflows |\n| 07 | **GitLab CI/CD** | Beginner → Advanced | Pipelines, runners, templates, environments, Container Registry, security scanning |\n| 08 | **Python** | Beginner → Advanced | Core Python, scripting, automation, APIs, testing |\n| 09 | **Docker** | Beginner → Advanced | Images, containers, volumes, networking, Docker Compose, security |\n| 10 | **Databases** | Beginner → Intermediate | SQL, PostgreSQL, Redis, backups, connection pooling |\n| 11 | **Web Technology** | Beginner → Intermediate | HTTP, TLS, reverse proxies, load balancing, CDNs |\n| 12 | **SDLC** | Beginner → Intermediate | Agile, Scrum, Kanban, release management, SLOs |\n| 13 | **Go Programming** | Beginner → Intermediate | Go fundamentals, concurrency, CLI tools, Docker/Kubernetes SDKs |\n| 14 | **Terraform** | Beginner → Advanced | HCL, providers, modules, workspaces, remote state, advanced patterns |\n| 15 | **AWS** | Beginner → Advanced | EC2, S3, VPC, IAM, RDS, EKS, Lambda, CloudFormation |\n| 16 | **Kubernetes** | Intermediate → Advanced | Pods, deployments, services, ingress, RBAC, Helm, operators |\n| 17 | **DevSecOps** | Intermediate → Advanced | Threat modeling, SAST/DAST, secret scanning, supply chain security |\n| 18 | **Troubleshooting** | Intermediate → Advanced | Systematic debugging, observability, incident response, postmortems |\n| 19 | **Compliance** | Intermediate → Advanced | SOC 2, ISO 27001, GDPR, audit trails, policy as code |\n| 20 | **Prompt Engineering** | Beginner → Advanced | LLM fundamentals, prompt patterns, AI-assisted DevOps workflows |\n\n---\n\n## Screenshots\n\n### Dashboard\n![Dashboard](public/screenshots/dashboard.png)\n\n### Track Page\n![Track Page](public/screenshots/track.png)\n\n### Lesson Viewer\n![Lesson Viewer](public/screenshots/lesson.png)\n\n---\n\n## Running Locally\n\n### What you need first\n\nBefore you start, make sure you have the following installed on your computer:\n\n- **Node.js v18 or higher** — download from [nodejs.org](https://nodejs.org). Choose the \"LTS\" version if you're unsure.\n  - To check if you already have it: open a terminal and run `node -v`\n- **Git** — download from [git-scm.com](https://git-scm.com)\n  - To check if you already have it: run `git --version`\n\n### Step-by-step setup\n\n**1. Clone the repository**\n\nThis downloads the project code to your computer.\n\n```bash\ngit clone https://github.com/\u003cyour-username\u003e/devops-lms.git\n```\n\n**2. Enter the project folder**\n\n```bash\ncd devops-lms\n```\n\n**3. Install dependencies**\n\nThis installs all the libraries the project needs. It may take a minute.\n\n```bash\nnpm install\n```\n\n**4. Start the development server**\n\n```bash\nnpm run dev\n```\n\n**5. Open the app**\n\nOpen your browser and go to: [http://localhost:3000](http://localhost:3000)\n\nYou'll be asked to create a learner profile on first launch. Enter any name and click **Get Started**.\n\n\u003e **Tip:** The development server has hot reload — any changes you make to the code will appear in the browser instantly without needing to restart.\n\n---\n\n## Running with Docker\n\nDocker lets you run the app in a container without installing Node.js. This is the recommended way to run it in production.\n\n### What you need\n\n- **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).\n\n### Option 1 — Pull the pre-built image from GitHub Container Registry\n\nIf the project has been pushed to GitHub, you can pull the ready-made image directly:\n\n```bash\ndocker pull ghcr.io/\u003cgithub-username\u003e/\u003crepo-name\u003e:latest\ndocker run -p 3000:3000 ghcr.io/\u003cgithub-username\u003e/\u003crepo-name\u003e:latest\n```\n\nThen open [http://localhost:3000](http://localhost:3000).\n\n### Option 2 — Build the image yourself\n\nIf you've cloned the repository and want to build locally:\n\n```bash\n# Build the image (this takes a few minutes the first time)\ndocker build -t devops-lms .\n\n# Run the container\ndocker run -p 3000:3000 devops-lms\n```\n\nThen open [http://localhost:3000](http://localhost:3000).\n\nTo stop the container, press `Ctrl + C` in the terminal.\n\n### Run in the background (detached mode)\n\nIf you want the container to keep running after you close the terminal:\n\n```bash\ndocker run -d -p 3000:3000 --name devops-lms devops-lms\n```\n\nTo stop it later:\n\n```bash\ndocker stop devops-lms\n```\n\n---\n\n## Building using Docker Compose (Self Hosting)\n## Docker Compose\n\n```bash\ndocker compose up -d\n```\n\nExample compose file:\n\n```yaml\nservices:\n  improving-everyday:\n    image: ghcr.io/sooraj-sky/improving-everyday:latest\n    container_name: devops-local-book\n\n    ports:\n      - \"3000:3000\"\n\n    environment:\n      NODE_ENV: production\n      PORT: 3000\n      HOSTNAME: 0.0.0.0\n\n    restart: unless-stopped\n```\n\n## Building for Production (without Docker)\n\nIf you want to run the optimised production build directly with Node.js:\n\n```bash\n# Build the app\nnpm run build\n\n# Start the production server\nnpm start\n```\n\nThe app will be available at [http://localhost:3000](http://localhost:3000). The production build is faster and uses less memory than the development server.\n\n---\n\n## Tech Stack\n\n| Technology | Purpose |\n|-----------|---------|\n| [Next.js](https://nextjs.org) | React framework (App Router) |\n| TypeScript | Type-safe JavaScript |\n| Tailwind CSS | Styling |\n| localStorage | All data storage — no database needed |\n| React Context | State management for profiles and progress |\n| Lucide React | Icons |\n\n---\n\n## Project Structure\n\n```\ndevops-lms/\n├── app/                  # Pages and routes (Next.js App Router)\n├── components/\n│   ├── layout/           # Sidebar, top nav, app shell\n│   ├── lesson/           # Lesson viewer, code blocks, quizzes\n│   └── ui/               # Reusable UI primitives (buttons, dialogs, etc.)\n├── lib/\n│   ├── content/          # All 20 learning tracks as TypeScript files\n│   └── hooks/            # React hooks (useProfile, useProgress, useNotes, useTheme)\n└── public/               # Static assets and screenshots\n```\n\n---\n\n## Adding a New Track\n\nEach learning track is a single TypeScript file. To add your own:\n\n1. Create `lib/content/my-topic.ts` — copy the structure from any existing file like `lib/content/linux.ts`\n2. Import and add it to the `tracks` array in `lib/content/index.ts`\n3. Add a gradient colour class for the track card in `app/globals.css`\n\n---\n\n## Troubleshooting\n\n**`npm install` fails**\nMake 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).\n\n**Port 3000 is already in use**\nAnother app is using port 3000. Either stop that app, or run the dev server on a different port:\n```bash\nnpm run dev -- -p 3001\n```\nThen open [http://localhost:3001](http://localhost:3001).\n\n**Docker build fails with \"Cannot connect to the Docker daemon\"**\nDocker 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.\n\n**Changes I make to the code don't appear**\nMake 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsooraj-sky%2Fimproving-everyday","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsooraj-sky%2Fimproving-everyday","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsooraj-sky%2Fimproving-everyday/lists"}