diff --git a/assets/sass/_elements.scss b/assets/sass/_elements.scss
index 7f21c80..ab54b77 100644
--- a/assets/sass/_elements.scss
+++ b/assets/sass/_elements.scss
@@ -1,5 +1,5 @@
body {
- font: "DejaVu Sans Mono", "Menlo", "Consolas", monospace;
+ font-family: var(--font-family-default);
background: --color-background;
color: --color-foreground;
@@ -10,6 +10,10 @@ body {
h1 {
color: var(--color-blue-dark);
+ font-family: var(--font-family-headlines);
+ font-weight: 300;
+ letter-spacing: .14em;
+ word-spacing: .3em;
}
a {
diff --git a/assets/sass/_layout.scss b/assets/sass/_layout.scss
new file mode 100644
index 0000000..dd8217a
--- /dev/null
+++ b/assets/sass/_layout.scss
@@ -0,0 +1,4 @@
+body > main {
+ display: grid;
+ grid-template-columns: var(--width-sidebar-max) 100%;
+}
diff --git a/assets/sass/_variables.scss b/assets/sass/_variables.scss
index 2792e2a..367c61f 100644
--- a/assets/sass/_variables.scss
+++ b/assets/sass/_variables.scss
@@ -12,5 +12,8 @@
--width-border-default: 0.2rem;
- --width-sidebar-max: 10rem;
+ --width-sidebar-max: 15rem;
+
+ --font-family-default: "DejaVu Sans Mono", "Menlo", "Consolas", monospace;
+ --font-family-headlines: "Montserrat", "Avenir", "Roboto", sans-serif;
}
diff --git a/assets/sass/components/_content.scss b/assets/sass/components/_content.scss
new file mode 100644
index 0000000..ba016b1
--- /dev/null
+++ b/assets/sass/components/_content.scss
@@ -0,0 +1,7 @@
+body > main > section {
+ padding: var(--spacing-elements);
+
+ header h1 {
+ margin: 0;
+ }
+}
diff --git a/assets/sass/components/_sidebar.scss b/assets/sass/components/_sidebar.scss
index 1c9c64b..5963dfc 100644
--- a/assets/sass/components/_sidebar.scss
+++ b/assets/sass/components/_sidebar.scss
@@ -1,5 +1,4 @@
-body > nav {
- max-width: var(--width-sidebar-max);
+body > main > nav {
border: {
right: var(--color-blue-light) solid var(--width-border-default);
}
diff --git a/assets/sass/index.scss b/assets/sass/index.scss
index dea2c91..0c3b2f1 100644
--- a/assets/sass/index.scss
+++ b/assets/sass/index.scss
@@ -2,4 +2,6 @@
@import 'elements';
@import 'components/header';
@import 'components/sidebar';
+@import 'components/content';
@import 'components/footer';
+@import 'layout';
diff --git a/composer.json b/composer.json
index 1b58a1a..20980e0 100644
--- a/composer.json
+++ b/composer.json
@@ -5,6 +5,7 @@
"php": "^7.2.5",
"ext-ctype": "*",
"ext-iconv": "*",
+ "sensio/framework-extra-bundle": "^5.5",
"symfony/asset": "5.0.*",
"symfony/console": "5.0.*",
"symfony/dotenv": "5.0.*",
@@ -15,6 +16,9 @@
"symfony/yaml": "5.0.*"
},
"require-dev": {
+ "doctrine/doctrine-fixtures-bundle": "^3.3",
+ "symfony/maker-bundle": "^1.18",
+ "symfony/profiler-pack": "^1.0"
},
"config": {
"preferred-install": {
diff --git a/composer.lock b/composer.lock
index 7a09235..807a5c2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "f28137780ed4bbe2e8ff224340449ea7",
+ "content-hash": "e758c06757d10ff8c2fbac8950b983a3",
"packages": [
{
"name": "doctrine/annotations",
@@ -1629,6 +1629,79 @@
],
"time": "2020-03-23T09:12:05+00:00"
},
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v5.5.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "c76bb1c5c67840ecb6d9be8e9d8d7036e375e317"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/c76bb1c5c67840ecb6d9be8e9d8d7036e375e317",
+ "reference": "c76bb1c5c67840ecb6d9be8e9d8d7036e375e317",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "php": ">=7.1.3",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0"
+ },
+ "conflict": {
+ "doctrine/doctrine-cache-bundle": "<1.3.1"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "^1.11|^2.0",
+ "doctrine/orm": "^2.5",
+ "nyholm/psr7": "^1.1",
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/dom-crawler": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/monolog-bridge": "^4.0|^5.0",
+ "symfony/monolog-bundle": "^3.2",
+ "symfony/phpunit-bridge": "^4.3.5|^5.0",
+ "symfony/psr-http-message-bridge": "^1.1",
+ "symfony/security-bundle": "^4.4|^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0",
+ "twig/twig": "^1.34|^2.4|^3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/"
+ },
+ "exclude-from-classmap": [
+ "/tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2020-05-06T12:12:33+00:00"
+ },
{
"name": "symfony/asset",
"version": "v5.0.8",
@@ -4307,7 +4380,639 @@
"time": "2018-04-25T15:33:34+00:00"
}
],
- "packages-dev": [],
+ "packages-dev": [
+ {
+ "name": "doctrine/data-fixtures",
+ "version": "1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/data-fixtures.git",
+ "reference": "7ebac50901eb4516816ac39100dba1759d843943"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7ebac50901eb4516816ac39100dba1759d843943",
+ "reference": "7ebac50901eb4516816ac39100dba1759d843943",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "^2.11",
+ "doctrine/persistence": "^1.3.3",
+ "php": "^7.2 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/phpcr-odm": "<1.3.0"
+ },
+ "require-dev": {
+ "alcaeus/mongo-php-adapter": "^1.1",
+ "doctrine/coding-standard": "^6.0",
+ "doctrine/dbal": "^2.5.4",
+ "doctrine/mongodb-odm": "^1.3.0",
+ "doctrine/orm": "^2.7.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7",
+ "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
+ "doctrine/orm": "For loading ORM fixtures",
+ "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Data Fixtures for all Doctrine Object Managers",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database"
+ ],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-25T19:45:03+00:00"
+ },
+ {
+ "name": "doctrine/doctrine-fixtures-bundle",
+ "version": "3.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
+ "reference": "39defca57ee0949e1475c46177b30b6d1b732e8f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/39defca57ee0949e1475c46177b30b6d1b732e8f",
+ "reference": "39defca57ee0949e1475c46177b30b6d1b732e8f",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/data-fixtures": "^1.3",
+ "doctrine/doctrine-bundle": "^1.11|^2.0",
+ "doctrine/orm": "^2.6.0",
+ "doctrine/persistence": "^1.3",
+ "php": "^7.1",
+ "symfony/config": "^3.4|^4.3|^5.0",
+ "symfony/console": "^3.4|^4.3|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.3|^5.0",
+ "symfony/doctrine-bridge": "^3.4|^4.1|^5.0",
+ "symfony/http-kernel": "^3.4|^4.3|^5.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpunit/phpunit": "^7.4",
+ "symfony/phpunit-bridge": "^4.1|^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\FixturesBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DoctrineFixturesBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "Fixture",
+ "persistence"
+ ],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-04-02T16:40:37+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120",
+ "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "0.0.5",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2020-04-10T16:34:50+00:00"
+ },
+ {
+ "name": "symfony/maker-bundle",
+ "version": "v1.18.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/maker-bundle.git",
+ "reference": "b38c75be880b152ab55cef6cd52bf882d2b6518e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/b38c75be880b152ab55cef6cd52bf882d2b6518e",
+ "reference": "b38c75be880b152ab55cef6cd52bf882d2b6518e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^1.2",
+ "nikic/php-parser": "^4.0",
+ "php": "^7.1.3",
+ "symfony/config": "^3.4|^4.0|^5.0",
+ "symfony/console": "^3.4|^4.0|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+ "symfony/filesystem": "^3.4|^4.0|^5.0",
+ "symfony/finder": "^3.4|^4.0|^5.0",
+ "symfony/framework-bundle": "^3.4|^4.0|^5.0",
+ "symfony/http-kernel": "^3.4|^4.0|^5.0"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "^1.8|^2.0",
+ "doctrine/orm": "^2.3",
+ "friendsofphp/php-cs-fixer": "^2.8",
+ "friendsoftwig/twigcs": "^3.1.2",
+ "symfony/http-client": "^4.3|^5.0",
+ "symfony/phpunit-bridge": "^4.3|^5.0",
+ "symfony/process": "^3.4|^4.0|^5.0",
+ "symfony/security-core": "^3.4|^4.0|^5.0",
+ "symfony/yaml": "^3.4|^4.0|^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MakerBundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
+ "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
+ "keywords": [
+ "code generator",
+ "generator",
+ "scaffold",
+ "scaffolding"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-15T18:51:23+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.17.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "e094b0770f7833fdf257e6ba4775be4e258230b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e094b0770f7833fdf257e6ba4775be4e258230b2",
+ "reference": "e094b0770f7833fdf257e6ba4775be4e258230b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.17-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-12T16:47:27+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.17.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "1357b1d168eb7f68ad6a134838e46b0b159444a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/1357b1d168eb7f68ad6a134838e46b0b159444a9",
+ "reference": "1357b1d168eb7f68ad6a134838e46b0b159444a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.17-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-12T16:14:59+00:00"
+ },
+ {
+ "name": "symfony/profiler-pack",
+ "version": "v1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/profiler-pack.git",
+ "reference": "99c4370632c2a59bb0444852f92140074ef02209"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/99c4370632c2a59bb0444852f92140074ef02209",
+ "reference": "99c4370632c2a59bb0444852f92140074ef02209",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "symfony/stopwatch": "*",
+ "symfony/twig-bundle": "*",
+ "symfony/web-profiler-bundle": "*"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for the Symfony web profiler",
+ "time": "2018-12-10T12:11:44+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "48a2f4b3597514e6c885c0ddb22d3bbdb60517d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/48a2f4b3597514e6c885c0ddb22d3bbdb60517d0",
+ "reference": "48a2f4b3597514e6c885c0ddb22d3bbdb60517d0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^1.1|^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony String component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-03-16T13:02:39+00:00"
+ },
+ {
+ "name": "symfony/web-profiler-bundle",
+ "version": "v5.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/web-profiler-bundle.git",
+ "reference": "67fc2302ba7ca3d917decea6d3accdbd055398d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/67fc2302ba7ca3d917decea6d3accdbd055398d1",
+ "reference": "67fc2302ba7ca3d917decea6d3accdbd055398d1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/twig-bundle": "^4.4|^5.0",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "conflict": {
+ "symfony/form": "<4.4",
+ "symfony/messenger": "<4.4"
+ },
+ "require-dev": {
+ "symfony/browser-kit": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/css-selector": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/stopwatch": "^4.4|^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\WebProfilerBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony WebProfilerBundle",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-04-28T17:58:55+00:00"
+ }
+ ],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
diff --git a/config/bundles.php b/config/bundles.php
index 9cf791c..cdc47d3 100644
--- a/config/bundles.php
+++ b/config/bundles.php
@@ -6,4 +6,8 @@ return [
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
+ Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
+ Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
+ Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
+ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
];
diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml
new file mode 100644
index 0000000..e92166a
--- /dev/null
+++ b/config/packages/dev/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: true
+ intercept_redirects: false
+
+framework:
+ profiler: { only_exceptions: false }
diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml
new file mode 100644
index 0000000..1821ccc
--- /dev/null
+++ b/config/packages/sensio_framework_extra.yaml
@@ -0,0 +1,3 @@
+sensio_framework_extra:
+ router:
+ annotations: false
diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml
new file mode 100644
index 0000000..03752de
--- /dev/null
+++ b/config/packages/test/web_profiler.yaml
@@ -0,0 +1,6 @@
+web_profiler:
+ toolbar: false
+ intercept_redirects: false
+
+framework:
+ profiler: { collect: false }
diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml
index 747b309..a159146 100644
--- a/config/packages/twig.yaml
+++ b/config/packages/twig.yaml
@@ -2,3 +2,4 @@ twig:
default_path: '%kernel.project_dir%/templates'
globals:
app_name: RSS Reader
+ buckets: '@App\Repository\BucketRepository'
diff --git a/config/routes.yaml b/config/routes.yaml
index 14a7559..40e54b5 100644
--- a/config/routes.yaml
+++ b/config/routes.yaml
@@ -4,3 +4,7 @@ start:
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
defaults:
template: 'static/start.html.twig'
+
+bucket:
+ path: /bucket/{slug}
+ controller: App\Controller\BucketController::show
diff --git a/config/routes/annotations.yaml b/config/routes/annotations.yaml
deleted file mode 100644
index e92efc5..0000000
--- a/config/routes/annotations.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-controllers:
- resource: ../../src/Controller/
- type: annotation
-
-kernel:
- resource: ../../src/Kernel.php
- type: annotation
diff --git a/config/routes/dev/web_profiler.yaml b/config/routes/dev/web_profiler.yaml
new file mode 100644
index 0000000..c82beff
--- /dev/null
+++ b/config/routes/dev/web_profiler.yaml
@@ -0,0 +1,7 @@
+web_profiler_wdt:
+ resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
+ prefix: /_wdt
+
+web_profiler_profiler:
+ resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
+ prefix: /_profiler
diff --git a/config/services.yaml b/config/services.yaml
index 5c4b417..ff7ddf6 100644
--- a/config/services.yaml
+++ b/config/services.yaml
@@ -22,6 +22,3 @@ services:
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
-
- # add more service definitions when explicit configuration is needed
- # please note that last definitions always *replace* previous ones
diff --git a/public/css/style.css b/public/css/style.css
index f080c96..e3cf2a4 100644
--- a/public/css/style.css
+++ b/public/css/style.css
@@ -9,17 +9,23 @@
--color-white-dark: #B0B0B0;
--spacing-elements: 1rem;
--width-border-default: 0.2rem;
- --width-sidebar-max: 10rem; }
+ --width-sidebar-max: 15rem;
+ --font-family-default: "DejaVu Sans Mono", "Menlo", "Consolas", monospace;
+ --font-family-headlines: "Montserrat", "Avenir", "Roboto", sans-serif; }
body {
- font: "DejaVu Sans Mono", "Menlo", "Consolas", monospace;
+ font-family: var(--font-family-default);
background: --color-background;
color: --color-foreground;
margin: 0;
padding: 0; }
h1 {
- color: var(--color-blue-dark); }
+ color: var(--color-blue-dark);
+ font-family: var(--font-family-headlines);
+ font-weight: 300;
+ letter-spacing: .14em;
+ word-spacing: .3em; }
a {
color: var(--color-wihte-light);
@@ -36,13 +42,21 @@ body > header {
body > header h1 {
margin: 0; }
-body > nav {
- max-width: var(--width-sidebar-max);
+body > main > nav {
border-right: var(--color-blue-light) solid var(--width-border-default); }
- body > nav a {
+ body > main > nav a {
display: block;
padding: var(--spacing-elements); }
+body > main > section {
+ padding: var(--spacing-elements); }
+ body > main > section header h1 {
+ margin: 0; }
+
body > footer {
padding: var(--spacing-elements);
border-top: var(--color-blue-light) solid var(--width-border-default); }
+
+body > main {
+ display: grid;
+ grid-template-columns: var(--width-sidebar-max) 100%; }
diff --git a/src/Controller/BucketController.php b/src/Controller/BucketController.php
new file mode 100644
index 0000000..1041dfb
--- /dev/null
+++ b/src/Controller/BucketController.php
@@ -0,0 +1,16 @@
+render('bucket/index.html.twig', [
+ 'bucket' => $bucket,
+ ]);
+ }
+}
diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php
new file mode 100644
index 0000000..c714cc1
--- /dev/null
+++ b/src/DataFixtures/AppFixtures.php
@@ -0,0 +1,52 @@
+slugger = $slugger;
+ }
+
+ public function load(ObjectManager $manager)
+ {
+ $buckets = [
+ 'TYPO3 (official)',
+ 'TYPO3 (related)',
+ 'Updates',
+ 'Linux',
+ 'Work',
+ 'New',
+ 'tech',
+ 'Random',
+ 'Music',
+ 'Sport',
+ 'Games',
+ 'Coding',
+ 'Vim',
+ 'Magazine',
+ 'Podcasts',
+ ];
+
+ foreach ($buckets as $bucketName) {
+ $bucket = new Bucket(
+ $bucketName,
+ strtolower($this->slugger->slug($bucketName))
+ );
+ $manager->persist($bucket);
+ }
+
+ $manager->flush();
+ }
+}
diff --git a/src/Entity/Bucket.php b/src/Entity/Bucket.php
new file mode 100644
index 0000000..8d7db3e
--- /dev/null
+++ b/src/Entity/Bucket.php
@@ -0,0 +1,53 @@
+name = $name;
+ $this->slug = $slug;
+ }
+
+ public function getId(): int
+ {
+ return $this->id;
+ }
+
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ public function getSlug(): string
+ {
+ return $this->slug;
+ }
+}
diff --git a/src/Migrations/Version20200526101712.php b/src/Migrations/Version20200526101712.php
new file mode 100644
index 0000000..ca9dcf8
--- /dev/null
+++ b/src/Migrations/Version20200526101712.php
@@ -0,0 +1,36 @@
+abortIf($this->connection->getDatabasePlatform()->getName() !== 'sqlite', 'Migration can only be executed safely on \'sqlite\'.');
+
+ $this->addSql('CREATE TABLE bucket (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255) NOT NULL, slug VARCHAR(255) NOT NULL)');
+ $this->addSql('CREATE UNIQUE INDEX bucket_routing ON bucket (slug)');
+ }
+
+ public function down(Schema $schema) : void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'sqlite', 'Migration can only be executed safely on \'sqlite\'.');
+
+ $this->addSql('DROP TABLE bucket');
+ }
+}
diff --git a/src/Repository/BucketRepository.php b/src/Repository/BucketRepository.php
new file mode 100644
index 0000000..28ad12a
--- /dev/null
+++ b/src/Repository/BucketRepository.php
@@ -0,0 +1,21 @@
+{{ app_name }}
-
+
+
- {% block body %}{% endblock %}
+
+ {% block body %}{% endblock %}
+
+