Skip to main content

Project Overview

The Linux C++ Backend Development Playground is structured into four progressive phases, each designed to build upon the previous one and introduce increasingly complex concepts and challenges.

Project Structure

The project follows this organized structure:

cpp-linux-playground/
├── CMakeLists.txt # Root CMake configuration managing all sub-projects
├── phase1/ # Phase 1: Syntax and Tool Familiarization
│ ├── cli-tools/ # Command-line tools (ls, grep, wc)
│ ├── json-parser/ # JSON parsing library
│ └── logger/ # Multi-threaded logging system
├── phase2/ # Phase 2: System Programming
│ ├── memory-pool/ # Custom memory allocator
│ ├── process-manager/ # Process management tools
│ └── threaded-downloader/ # Multi-threaded download system
├── phase3/ # Phase 3: Network Programming
│ ├── tcp-chat-room/ # Multi-threaded TCP chat application
│ ├── http-server/ # HTTP static file server
│ └── tcp-file-transfer/ # TCP file transfer protocol
├── phase4/ # Phase 4: Comprehensive Practice
│ ├── crawler/ # High-concurrency web crawler
│ ├── mini-redis/ # Redis-like key-value store
│ └── mini-search/ # Search engine implementation
├── docker/ # Docker configuration files
├── scripts/ # Automation scripts
└── docs/ # Additional documentation

Phase Progression

Phase 1: Syntax and Tool Familiarization

Focuses on mastering fundamental C++20 syntax and common command-line tools:

  • Implement simplified versions of Linux command-line utilities (ls, grep, wc)
  • Build a JSON parser library
  • Develop a multi-threaded logger system

Phase 2: System Programming

Delves into Linux system calls and low-level programming:

  • Create a multi-threaded downloader application
  • Build a process management tool (similar to ps/top)
  • Implement a custom memory pool allocator

Phase 3: Network Programming

Covers networking fundamentals and protocols:

  • Implement a TCP multi-threaded chat room
  • Build an HTTP static file server
  • Create a TCP file transfer server

Phase 4: Comprehensive Practice

Combines all learned skills in complex, real-world projects:

  • Build a mini-Redis key-value storage system
  • Implement a mini-search engine
  • Develop a high-concurrency web crawler

Development Standards

Throughout the project, you'll follow industry-standard practices:

  • Code Style: Consistent formatting using clang-format
  • Testing: Comprehensive unit testing with Google Test
  • Documentation: Clear, descriptive comments and documentation
  • Git Workflow: Structured commit messages and branching strategies
  • Build Systems: CMake for cross-platform builds

Next Steps

Explore the individual phases to get started with specific learning modules: