Single-page microframework

This short example will show you how to use Nette & Latte in a single-page website.

First, create project:

mkdir microframework
cd microframework
composer require "nette/nette"
mkdir temp
mkdir log
mkdir data
chmod o+w {temp,log,data}

Second, create index.php:

?php
if (empty($template)) {
    // autoload.php @generated by Composer
    require_once __DIR__ . '/vendor/' . '/autoload.php';

    // create configurator
    $configurator = new Nette\Configurator;
    // Enable Nette Debugger for error visualisation & logging
    $configurator->enableDebugger(__DIR__ . '/log');
    $configurator->setTempDirectory(__DIR__ . '/temp');
    // Create Dependency Injection container from config.neon file
    $container = $configurator->createContainer();

    // set arbitrary data
    $connection= new Nette\Database\Connection('sqlite:data/ps.sdb');
    $context = new Nette\Database\Context(
        $connection,
        new Nette\Database\Structure($connection, $container->getService('cache.storage'))
    );
    $params['db'] = $context;

    // render
    $latte = $container->getService('latte.latteFactory')->create();
    $latte->setLoader(new Latte\Loaders\StringLoader());
    $latte->render(file_get_contents(__FILE__), $params);
    exit;
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>

<body>
    <div n:foreach="$db->table(events)->order(date) as $event">
        <h4>{$event->name}</h4>
        <p>{$event->date|date:"j. n. Y"}</p>
    </div>
    ...

</body>
</html>