Skip to content

Commit

Permalink
Updated documentation links
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelgfeller committed Aug 15, 2024
1 parent 4f139c1 commit a98f961
Show file tree
Hide file tree
Showing 19 changed files with 71 additions and 71 deletions.
74 changes: 37 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@ structure and a variety of components and features.

The project applies current best practices and programming principles,
with a strong emphasis on the Single Responsibility Principle
([SRP](https://github.com/samuelgfeller/slim-example-project/wiki/Single-Responsibility-Principle-(SRP))).
([SRP](https://samuel-gfeller.ch/docs/Single-Responsibility-Principle-(SRP))).
External library dependencies
are [kept to a minimum](https://github.com/samuelgfeller/slim-example-project/wiki/Libraries-and-Framework)
are [kept to a minimum](https://samuel-gfeller.ch/docs/Libraries-and-Framework)
to facilitate maintenance and ensure long-term viability.

The [architecture](https://github.com/samuelgfeller/slim-example-project/wiki/Architecture)
The [architecture](https://samuel-gfeller.ch/docs/Architecture)
is inspired by the Domain Driven Design ([DDD](https://en.wikipedia.org/wiki/Domain-driven_design))
and the [Vertical Slice Architecture](https://www.youtube.com/watch?v=L2Wnq0ChAIA).

The base for this project was the official
[Slim-Skeleton](https://github.com/slimphp/Slim-Skeleton) and
the [slim4-skeleton](https://github.com/odan/slim4-skeleton).

A detailed [**documentation**](https://github.com/samuelgfeller/slim-example-project/wiki) explains how the project is
A detailed [**documentation**](https://samuel-gfeller.ch/docs) explains how the project is
built,
components, design choices and features.

Expand All @@ -33,7 +33,7 @@ templates.
With frontend [**slim-starter**](https://github.com/samuelgfeller/slim-starter) or just for an API:
[**slim-api-starter**](https://github.com/samuelgfeller/slim-api-starter).

Please read the [**installation guide**](https://github.com/samuelgfeller/slim-example-project/wiki/Installation-Guide)
Please read the [**installation guide**](https://samuel-gfeller.ch/docs/Installation-Guide)
to get started.

## Features
Expand All @@ -42,36 +42,36 @@ All the features were developed with an effort to ensure maximum user-friendline
The frontend, intuitive, aesthetically pleasing, minimalistic, and functional.
The backend, efficient and secure.

This project is currently designed for non-profit organizations or foundations that require a platform
to manage and maintain a record of communication through notes of people they help.

**Technologies:**

* [Slim 4 micro-framework](https://github.com/slimphp/Slim)
* [Dependency Injection](https://github.com/samuelgfeller/slim-example-project/wiki/Dependency-Injection) - [PHP-DI](https://php-di.org/)
* [Logging](https://github.com/samuelgfeller/slim-example-project/wiki/Logging) - [Monolog](https://github.com/Seldaek/monolog)
* [Validation](https://github.com/samuelgfeller/slim-example-project/wiki/Validation) - [cakephp/validation](https://book.cakephp.org/4/en/core-libraries/validation.html)
* [Database migrations](https://github.com/samuelgfeller/slim-example-project/wiki/Database-Migrations) - [Phinx](https://phinx.org/)
* [Template rendering](https://github.com/samuelgfeller/slim-example-project/wiki/Template-rendering) - [PHP-View](https://github.com/slimphp/PHP-View)
* [Mailing](https://github.com/samuelgfeller/slim-example-project/wiki/Mailing) - [Symfony Mailer](https://symfony.com/doc/current/mailer.html)
* [Localization](https://github.com/samuelgfeller/slim-example-project/wiki/Translations) - [gettext](https://www.gnu.org/software/gettext/)
* [Query Builder](https://github.com/samuelgfeller/slim-example-project/wiki/Repository-and-Query-Builder) - [cakephp/database](https://book.cakephp.org/5/en/orm/query-builder.html)
* [Integration / unit testing](https://github.com/samuelgfeller/slim-example-project/wiki/Writing-Tests) - [PHPUnit](https://github.com/sebastianbergmann/phpunit/) - [test-traits](https://github.com/samuelgfeller/test-traits)
* [Session and flash messages](https://github.com/samuelgfeller/slim-example-project/wiki/Session-and-Flash-messages) - [odan/session](https://github.com/odan/session)
* [Error handling](https://github.com/samuelgfeller/slim-example-project/wiki/Error-Handling) - [slim-error-renderer](https://github.com/samuelgfeller/slim-error-renderer)
* [GitHub Actions](https://github.com/samuelgfeller/slim-example-project/wiki/GitHub-Actions)
and [Scrutinizer](https://github.com/samuelgfeller/slim-example-project/wiki/How-to-set-up-Scrutinizer)
* [Coding standards fixer](https://github.com/samuelgfeller/slim-example-project/wiki/Coding-Standards-Fixer) - [PHP-CS-Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer)
* [Static code analysis](https://github.com/samuelgfeller/slim-example-project/wiki/PHPStan-Static-Code-Analysis) - [PHPStan](https://github.com/phpstan/phpstan)

**Functionalities demonstrating real-world features:**

* [Authentication](https://github.com/samuelgfeller/slim-example-project/wiki/Authentication) (login)
* [Authorization](https://github.com/samuelgfeller/slim-example-project/wiki/Authorization) (permissions)
* [Dependency Injection](https://samuel-gfeller.ch/docs/Dependency-Injection) - [PHP-DI](https://php-di.org/)
* [Logging](https://samuel-gfeller.ch/docs/Logging) - [Monolog](https://github.com/Seldaek/monolog)
* [Validation](https://samuel-gfeller.ch/docs/Validation) - [cakephp/validation](https://book.cakephp.org/4/en/core-libraries/validation.html)
* [Database migrations](https://samuel-gfeller.ch/docs/Database-Migrations) - [Phinx](https://phinx.org/)
* [Template rendering](https://samuel-gfeller.ch/docs/Template-Rendering) - [PHP-View](https://github.com/slimphp/PHP-View)
* [Mailing](https://samuel-gfeller.ch/docs/Mailing) - [Symfony Mailer](https://symfony.com/doc/current/mailer.html)
* [Localization](https://samuel-gfeller.ch/docs/Translations) - [gettext](https://www.gnu.org/software/gettext/)
* [Query Builder](https://samuel-gfeller.ch/docs/Repository-and-Query-Builder) - [cakephp/database](https://book.cakephp.org/5/en/orm/query-builder.html)
* [Integration / unit testing](https://samuel-gfeller.ch/docs/Writing-Tests) - [PHPUnit](https://github.com/sebastianbergmann/phpunit/) - [test-traits](https://github.com/samuelgfeller/test-traits)
* [Session and flash messages](https://samuel-gfeller.ch/docs/Session-and-Flash-messages) - [odan/session](https://github.com/odan/session)
* [Error handling](https://samuel-gfeller.ch/docs/Error-Handling) - [slim-error-renderer](https://github.com/samuelgfeller/slim-error-renderer)
* [GitHub Actions](https://samuel-gfeller.ch/docs/GitHub-Actions)
and [Scrutinizer](https://samuel-gfeller.ch/docs/How-to-set-up-Scrutinizer)
* [Coding standards fixer](https://samuel-gfeller.ch/docs/Coding-Standards-Fixer) - [PHP-CS-Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer)
* [Static code analysis](https://samuel-gfeller.ch/docs/PHPStan-Static-Code-Analysis) - [PHPStan](https://github.com/phpstan/phpstan)

**Functionalities demonstrating real-world features:**

This project is currently designed for non-profit organizations or foundations that require a platform
to manage and maintain a record of communication through notes of people they help.

* [Authentication](https://samuel-gfeller.ch/docs/Authentication) (login)
* [Authorization](https://samuel-gfeller.ch/docs/Authorization) (permissions)
* Account verification
and [password reset](https://github.com/samuelgfeller/slim-example-project/wiki/Authentication#password-forgotten)
and [password reset](https://samuel-gfeller.ch/docs/Authentication#password-forgotten)
via email link and token
* [Request throttling](https://github.com/samuelgfeller/slim-example-project/wiki/Security#request-throttling) -
* [Request throttling](https://samuel-gfeller.ch/docs/Security#request-throttling) -
protection against brute force and password spraying attacks
* User management for administrators
* 4 user roles and different permissions
Expand All @@ -81,7 +81,7 @@ to manage and maintain a record of communication through notes of people they he
* Note creation and mutation
* Hidden notes from unauthorized users
* Dashboard with panels
* [Dark / light theme](https://github.com/samuelgfeller/slim-example-project/wiki/Dark-Theme)
* [Dark / light theme](https://samuel-gfeller.ch/docs/Dark-Theme)

<details markdown="1">

Expand Down Expand Up @@ -114,11 +114,11 @@ explanations in the documentation.

But it's not just about the features.
Equally important
is the [architecture](https://github.com/samuelgfeller/slim-example-project/wiki/Architecture)
is the [architecture](https://samuel-gfeller.ch/docs/Architecture)
and how the components interact with each other, following modern principles such as the
[Single Responsibility Principle](https://github.com/samuelgfeller/slim-example-project/wiki/Single-Responsibility-Principle-(SRP))
[Single Responsibility Principle](https://samuel-gfeller.ch/docs/Single-Responsibility-Principle-(SRP))
and
[Dependency Injection](https://github.com/samuelgfeller/slim-example-project/wiki/Dependency-Injection).
[Dependency Injection](https://samuel-gfeller.ch/docs/Dependency-Injection).

Of course, there are big frameworks that have their own well-established set of programming conventions and
implementations of features.
Expand All @@ -130,7 +130,7 @@ I also dislike having to follow the propitiatory rules of a framework [which oft
follow best practices](https://www.reddit.com/r/PHP/comments/131t2k1/laravel_considered_harmful)
and
much prefer the freedom of a micro-framework and carefully
[choosing the libraries](https://github.com/samuelgfeller/slim-example-project/wiki/Libraries-and-Framework#choosing-the-right-libraries)
[choosing the libraries](https://samuel-gfeller.ch/docs/Libraries-and-Framework#choosing-the-right-libraries)
and structure
that make sense for the project.
This lets me stay in control of the codebase, keep it lightweight,
Expand All @@ -157,13 +157,13 @@ tech.
I worked closely with the software engineer and architect
[Daniel Opitz](https://odan.github.io/about.html), who also reviewed this project.
I learned a lot during
[our exchanges](https://github.com/samuelgfeller/slim-example-project/wiki/Sources-of-knowledge#discussions)
[our exchanges](https://samuel-gfeller.ch/docs/Sources-of-Knowledge#discussions)
and was inspired by his books, articles, tutorials and his slim
[skeleton-project](https://github.com/odan/slim4-skeleton).

## Support

Please read the [Support❤️](https://github.com/samuelgfeller/slim-example-project/wiki/Support❤️) page
Please read the [Support❤️](https://samuel-gfeller.ch/docs/Support❤️) page
if you value this project and its documentation and want to support it.

## License
Expand Down
2 changes: 1 addition & 1 deletion bin/console.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Execute a class function instantiated by the container with the command line.
* The first argument is the container key and the second the function name that should be called.
* Example: php bin/console.php SqlSchemaGenerator generateMySqlSchema
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Console-Commands
* Documentation: https://samuel-gfeller.ch/docs/Console-Commands
*/

// Boot the application
Expand Down
2 changes: 1 addition & 1 deletion config/bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/**
* Start up the Slim App.
*
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Web-Server-Config-and-Bootstrapping
* Documentation: https://samuel-gfeller.ch/docs/Web-Server-config-and-Slim-Bootstrapping#slim-bootstrapping
*/

use DI\ContainerBuilder;
Expand Down
10 changes: 5 additions & 5 deletions config/container.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/**
* Dependency Injection container configuration.
*
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Dependency-Injection.
* Documentation: https://samuel-gfeller.ch/docs/Dependency-Injection.
*/

use App\Infrastructure\Utility\Settings;
Expand Down Expand Up @@ -69,7 +69,7 @@
return new BasePathMiddleware($container->get(App::class));
},

// Logging: https://github.com/samuelgfeller/slim-example-project/wiki/Logging
// Logging: https://samuel-gfeller.ch/docs/Logging
LoggerInterface::class => function (ContainerInterface $container) {
$loggerSettings = $container->get('settings')['logger'];

Expand Down Expand Up @@ -143,7 +143,7 @@
return new Settings($container->get('settings'));
},

// Template renderer: https://github.com/samuelgfeller/slim-example-project/wiki/Template-rendering
// Template renderer: https://samuel-gfeller.ch/docs/Template-Rendering
PhpRenderer::class => function (ContainerInterface $container) {
$settings = $container->get('settings');
$rendererSettings = $settings['renderer'];
Expand All @@ -152,7 +152,7 @@
return new PhpRenderer($rendererSettings['path']);
},

// Sessions: https://github.com/samuelgfeller/slim-example-project/wiki/Session-and-Flash-messages
// Sessions: https://samuel-gfeller.ch/docs/Session-and-Flash-messages
SessionManagerInterface::class => function (ContainerInterface $container) {
return $container->get(SessionInterface::class);
},
Expand All @@ -162,7 +162,7 @@
return new PhpSession($options);
},

// Mailing: https://github.com/samuelgfeller/slim-example-project/wiki/Mailing
// Mailing: https://samuel-gfeller.ch/docs/Mailing
MailerInterface::class => function (ContainerInterface $container) {
$settings = $container->get('settings')['smtp'];
// smtp://user:[email protected]:25
Expand Down
24 changes: 12 additions & 12 deletions config/defaults.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* without the risk of overwriting something.
* The only file where the following is permitted: $settings['db'] = ['key' => 'val', 'nextKey' => 'nextVal'];
*
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Configuration.
* Documentation: https://samuel-gfeller.ch/docs/Configuration.
*/

// Timezone - time() is timezone independent https://stackoverflow.com/a/36390811/9013718
Expand All @@ -24,7 +24,7 @@
$settings['root_dir'] = dirname(__DIR__, 1);

// Error handling
// Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Error-Handling
// Documentation: https://samuel-gfeller.ch/docs/Error-Handling
$settings['error'] = [
// MUST be set to false in production.
// When set to true, it shows error details and throws an ErrorException for notices and warnings.
Expand All @@ -39,7 +39,7 @@
'version' => '1.0.0',
// When true, JsImportCacheBuster is enabled and goes through all js files and changes the version number
// from the imports. Should be disabled in env.prod.php.
// https://github.com/samuelgfeller/slim-example-project/wiki/Template-rendering#js-import-cache-busting
// https://samuel-gfeller.ch/docs/Template-Rendering#js-import-cache-busting
'update_js_imports_version' => false,
// Asset path required by the JsImportCacheBuster
'asset_path' => $settings['root_dir'] . '/public/assets',
Expand All @@ -54,7 +54,7 @@
],
];

// Translations: https://github.com/samuelgfeller/slim-example-project/wiki/Translations
// Translations: https://samuel-gfeller.ch/docs/Translations
$settings['locale'] = [
'translations_path' => $settings['root_dir'] . '/resources/translations',
// When adding new available locales, new translated email templates have to be added as well in their
Expand All @@ -64,7 +64,7 @@
];

// Protection against rapid fire and password spraying force attacks
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Security#request-throttling
// Docs: https://samuel-gfeller.ch/docs/Security#request-throttling
$settings['security'] = [
// Bool if login requests should be throttled
'throttle_login' => true,
Expand All @@ -89,7 +89,7 @@
];

// Database
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Repository-and-Query-Builder
// Docs: https://samuel-gfeller.ch/docs/Repository-and-Query-Builder
$settings['db'] = [
'host' => '127.0.0.1',
'database' => 'slim_example_project',
Expand Down Expand Up @@ -118,14 +118,14 @@
];

// API endpoint settings
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/API-Endpoint
// Docs: https://samuel-gfeller.ch/docs/API-Endpoint
$settings['api'] = [
// Url that is allowed to make api calls to this app
'allowed_origin' => null,
];

// Phinx database migrations settings
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Database-Migrations
// Docs: https://samuel-gfeller.ch/docs/Database-Migrations
$settings['phinx'] = [
'paths' => [
'migrations' => $settings['root_dir'] . '/resources/migrations',
Expand All @@ -145,14 +145,14 @@
];

// Template renderer settings
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Template-rendering
// Docs: https://samuel-gfeller.ch/docs/Template-Rendering
$settings['renderer'] = [
// Template path
'path' => $settings['root_dir'] . '/templates',
];

// Session
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Session-and-Flash-messages
// Docs: https://samuel-gfeller.ch/docs/Session-and-Flash-messages
$settings['session'] = [
'name' => 'slim-example-project',
// 5h session lifetime
Expand All @@ -165,7 +165,7 @@
];

// Logger
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Logging
// Docs: https://samuel-gfeller.ch/docs/Logging
$settings['logger'] = [
// Log file location
'path' => $settings['root_dir'] . '/logs',
Expand All @@ -174,7 +174,7 @@
];

// Email settings
// Docs: https://github.com/samuelgfeller/slim-example-project/wiki/Mailing
// Docs: https://samuel-gfeller.ch/docs/Mailing
$settings['smtp'] = [
// use type 'null' for the null adapter
'type' => 'smtp',
Expand Down
2 changes: 1 addition & 1 deletion config/env/env.dev.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
/**
* Development-specific configuration values.
* Configuration documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Configuration.
* Configuration documentation: https://samuel-gfeller.ch/docs/Configuration.
*
* Every key must be set by its own to not overwrite the entire array.
* Correct: $settings['db]['key'] = 'val'; $settings['db]['nextKey'] = 'nextVal';
Expand Down
2 changes: 1 addition & 1 deletion config/env/env.phinx.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Migrate command: vendor/bin/phinx migrate -c config/env/env.phinx.php --ansi -vvv
* Generate migration: phinx-migrations generate --overwrite -c config/env/env.phinx.php --ansi
*
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Database-Migrations
* Documentation: https://samuel-gfeller.ch/docs/Database-Migrations
*/

use Cake\Core\Configure;
Expand Down
2 changes: 1 addition & 1 deletion config/env/env.scrutinizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Environment settings for Scrutinizer CI.
* These values are relevant for the .scrutinizer.yml file.
*
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/How-to-set-up-Scrutinizer
* Documentation: https://samuel-gfeller.ch/docs/How-to-set-up-Scrutinizer
*/

// Include testing configuration. Must be "require" and not require_once
Expand Down
2 changes: 1 addition & 1 deletion config/functions.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
/**
* Autoload functions available everywhere across the application.
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Composer#autoload.
* Documentation: https://samuel-gfeller.ch/docs/Composer#autoload.
*
* @param ?string $text
*/
Expand Down
2 changes: 1 addition & 1 deletion config/middleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
use SlimErrorRenderer\Middleware\NonFatalErrorHandlingMiddleware;

// Slim middlewares are LIFO (last in, first out) so when responding, the order is backwards
// https://github.com/samuelgfeller/slim-example-project/wiki/Middleware#order-of-execution
// https://samuel-gfeller.ch/docs/Slim-Middleware#order-of-execution
return function (App $app) {
$app->addBodyParsingMiddleware();

Expand Down
2 changes: 1 addition & 1 deletion config/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/**
* Routes configuration.
*
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Routing
* Documentation: https://samuel-gfeller.ch/docs/Slim-Routing
*/

use App\Application\Middleware\UserAuthenticationMiddleware;
Expand Down
2 changes: 1 addition & 1 deletion config/settings.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
/**
* This file loads the default and environment-specific settings.
* Documentation: https://github.com/samuelgfeller/slim-example-project/wiki/Configuration.
* Documentation: https://samuel-gfeller.ch/docs/Configuration.
*/

// Load default settings
Expand Down
Loading

0 comments on commit a98f961

Please sign in to comment.