diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..6d62fef
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,28 @@
+{
+ "name": "provm/publivia",
+ "descripcion": "Pagina web para PubliVia",
+ "type": "project",
+ "require": {
+ "slim/slim": "^4",
+ "nyholm/psr7": "^1",
+ "nyholm/psr7-server": "^1",
+ "php-di/slim-bridge": "^3",
+ "rubellum/slim-blade-view": "^0",
+ "nesbot/carbon": "^2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8",
+ "kint-php/kint": "^3"
+ },
+ "authors": [
+ {
+ "name": "Aldarien",
+ "email": "aldarien85@gmail.com"
+ }
+ ],
+ "autoload": {
+ "psr-4": {
+ "ProVM\\Publivia\\Common\\": "common"
+ }
+ }
+}
\ No newline at end of file
diff --git a/public/.htaccess b/public/.htaccess
new file mode 100644
index 0000000..11b28de
--- /dev/null
+++ b/public/.htaccess
@@ -0,0 +1,4 @@
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule ^ index.php [QSA,L]
\ No newline at end of file
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..c52dc2c
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,8 @@
+run();
diff --git a/resources/routes/router.php b/resources/routes/router.php
new file mode 100644
index 0000000..6d0c56f
--- /dev/null
+++ b/resources/routes/router.php
@@ -0,0 +1,2 @@
+isDir()) {
+ continue;
+ }
+ include_once $file->getRealPath();
+ }
+}
\ No newline at end of file
diff --git a/resources/views/layout/base.blade.php b/resources/views/layout/base.blade.php
new file mode 100644
index 0000000..9deb8c1
--- /dev/null
+++ b/resources/views/layout/base.blade.php
@@ -0,0 +1,5 @@
+
+
+@include('layout.head')
+@include('layout.body')
+
diff --git a/resources/views/layout/body.blade.php b/resources/views/layout/body.blade.php
new file mode 100644
index 0000000..08e95ae
--- /dev/null
+++ b/resources/views/layout/body.blade.php
@@ -0,0 +1,9 @@
+
+ @include('layout.header')
+
+
+ @yield('page_content')
+
+
+ @include('layout.footer')
+
diff --git a/resources/views/layout/footer.blade.php b/resources/views/layout/footer.blade.php
new file mode 100644
index 0000000..5ee59a8
--- /dev/null
+++ b/resources/views/layout/footer.blade.php
@@ -0,0 +1 @@
+@include('layout.scripts')
\ No newline at end of file
diff --git a/resources/views/layout/head.blade.php b/resources/views/layout/head.blade.php
new file mode 100644
index 0000000..d11d32b
--- /dev/null
+++ b/resources/views/layout/head.blade.php
@@ -0,0 +1,5 @@
+
+
+ @yield('page_title')
+ @include('layout.styles')
+
diff --git a/resources/views/layout/header.blade.php b/resources/views/layout/header.blade.php
new file mode 100644
index 0000000..5afb243
--- /dev/null
+++ b/resources/views/layout/header.blade.php
@@ -0,0 +1,3 @@
+
+ @include('layout.menu')
+
diff --git a/resources/views/layout/menu.blade.php b/resources/views/layout/menu.blade.php
new file mode 100644
index 0000000..6c698bc
--- /dev/null
+++ b/resources/views/layout/menu.blade.php
@@ -0,0 +1,4 @@
+
diff --git a/resources/views/layout/scripts.blade.php b/resources/views/layout/scripts.blade.php
new file mode 100644
index 0000000..b6b604c
--- /dev/null
+++ b/resources/views/layout/scripts.blade.php
@@ -0,0 +1,13 @@
+@if (isset($assets->scripts))
+ @foreach ($assets->scripts as $script)
+
+ @endforeach
+@endif
+
+
+
+@stack('scripts')
diff --git a/resources/views/layout/styles.blade.php b/resources/views/layout/styles.blade.php
new file mode 100644
index 0000000..2eb95dc
--- /dev/null
+++ b/resources/views/layout/styles.blade.php
@@ -0,0 +1,16 @@
+@if (isset($assets->styles))
+ @foreach ($assets->styles as $style)
+
+ @endforeach
+@endif
+@if (isset($assets->fonts))
+ @foreach ($assets->fonts as $font)
+
+ @endforeach
+@endif
+
+@stack('styles')
+
+
diff --git a/setup/app.php b/setup/app.php
new file mode 100644
index 0000000..9a83de4
--- /dev/null
+++ b/setup/app.php
@@ -0,0 +1,60 @@
+addDefinitions($filename);
+ }
+ }
+}
+
+$container = $builder->build();
+$app = Bridge::create($container);
+try {
+ $app->setBasePath($container->get('base_url'));
+} catch (Exception $e) {
+}
+
+foreach ($folders as $folder) {
+ $filename = implode(DIRECTORY_SEPARATOR, [
+ __DIR__,
+ $folder,
+ 'middleware.php'
+ ]);
+ if (file_exists($filename)) {
+ include_once $filename;
+ }
+}
+
+$filename = implode(DIRECTORY_SEPARATOR, [
+ $container->get('folders')->routes,
+ 'router.php'
+]);
+if (!file_exists($filename)) {
+ throw new Exception('Missing router file.');
+}
+include_once $filename;
\ No newline at end of file
diff --git a/setup/common/config.php b/setup/common/config.php
new file mode 100644
index 0000000..f858904
--- /dev/null
+++ b/setup/common/config.php
@@ -0,0 +1,22 @@
+ dirname(__DIR__),
+ 'urls' => function() {
+ $arr = [];
+ $arr['base'] = '/provm/demos/provm';
+ return (object) $arr;
+ },
+ 'folders' => function() {
+ $arr = [];
+ $arr['base'] = dirname(__DIR__, 2);
+ $arr['resources'] = implode(DIRECTORY_SEPARATOR, [
+ $arr['base'],
+ 'resources'
+ ]);
+ $arr['routes'] = implode(DIRECTORY_SEPARATOR, [
+ $arr['resources'],
+ 'routes'
+ ]);
+ return (object) $arr;
+ }
+];
\ No newline at end of file
diff --git a/setup/composer.php b/setup/composer.php
new file mode 100644
index 0000000..b27e3a8
--- /dev/null
+++ b/setup/composer.php
@@ -0,0 +1,10 @@
+ DI\decorate(function($prev, Container $c) {
+ $arr = (array) $prev;
+ $arr['templates'] = implode(DIRECTORY_SEPARATOR, [
+ $prev->resources,
+ 'views'
+ ]);
+ $arr['cache'] = implode(DIRECTORY_SEPARATOR, [
+ $prev->base,
+ 'cache'
+ ]);
+ return (object) $arr;
+ }),
+ 'assets' => (object) [
+ 'styles' => [
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/semantic.min.css'
+ ],
+ 'scripts' => [
+ 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js',
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/semantic.min.js'
+ ],
+ 'fonts' => [
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/brand-icons.woff',
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/brand-icons.woff2',
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/icons.woff',
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/icons.woff2',
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/outline-icons.woff',
+ 'https://cdnjs.cloudflare.com/ajax/libs/fomantic-ui/2.8.6/themes/default/assets/fonts/outline-icons.woff2'
+ ]
+ ]
+];
\ No newline at end of file
diff --git a/setup/web/setup.php b/setup/web/setup.php
new file mode 100644
index 0000000..dddca7e
--- /dev/null
+++ b/setup/web/setup.php
@@ -0,0 +1,16 @@
+ function(Container $c) {
+ return new ProVM\Common\Define\View(
+ $c->get('folders')->templates,
+ $c->get('folders')->cache,
+ null,
+ [
+ 'urls' => $c->get('urls'),
+ 'assets' => $c->get('assets')
+ ]
+ );
+ }
+];
\ No newline at end of file