This document describes the design patterns and components used to create a C-shell. The shell uses a reactor pattern to run a main loop that takes user input and sends it to a parser. The parser splits the input into commands and passes them to a job factory to create processes using the builder pattern. Jobs set up piping between processes as needed. Each process is forked and executed in its own process object. The shell itself follows the singleton pattern to provide global access to variables. Basic commands like ls, cd, and help are included, along with notes on challenges in implementing piping and parsing special characters.