public function build()
    {
        $this->appDir = $this->rootDir . '/app';
        $siteDir = $this->appDir . '/data/' . $this->siteName;
        $siteConfigDir = $siteDir . '/config';
        $pagesDir = $siteDir . '/pages/pages';
        $rolesDir = $siteDir . '/roles';
        $slotsDir = $siteDir . '/slots';
        $usersDir = $siteDir . '/users';

        $folders = array(
            $siteConfigDir,
            $pagesDir,
            $rolesDir,
            $slotsDir,
            $usersDir,
        );

        $this->filesystem->mkdir($folders);

        $this->createConfiguration($siteDir);
        $this->createSite($siteDir);
        $this->createRoles($rolesDir);
        $this->createUsers($usersDir);

        $this->filesystem->touch($siteDir . '/incomplete.json');

        return $this;
    }