feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run

- Base: wintercms/winter branch 1.2 (full framework)
- Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS
- Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication
- Partials: hero (offline-first), features, modes (offline/nube toggle),
  screenshots, pricing (3 planes), comparison, FAQ, CTA
- Plugin VivesPOS.Site with ContactForm
- Dockerfile: PHP 8.2 Apache, port 80, healthcheck
- Added winter/wn-pages, blog, sitemap, seo plugins
- Active theme set to vivespos
This commit is contained in:
2026-08-21 19:29:00 -06:00
commit 1f72193a64
3266 changed files with 531480 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateAuthorsTable extends Migration
{
public function up()
{
Schema::create('database_tester_authors', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('user_id')->unsigned()->index()->nullable();
$table->integer('country_id')->unsigned()->index()->nullable();
$table->string('name')->nullable();
$table->string('email')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('database_tester_authors');
}
}

View File

@@ -0,0 +1,46 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateCategoriesTable extends Migration
{
public function up()
{
Schema::create('database_tester_categories', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('parent_id')->nullable();
$table->string('name')->nullable();
$table->string('slug')->nullable()->index()->unique();
$table->string('description')->nullable();
$table->integer('company_id')->unsigned()->nullable();
$table->string('language', 3)->nullable();
$table->timestamps();
$table->softDeletes();
});
Schema::create('database_tester_categories_nested', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('parent_id')->nullable();
$table->integer('nest_left')->nullable();
$table->integer('nest_right')->nullable();
$table->integer('nest_depth')->nullable();
$table->string('name')->nullable();
$table->string('slug')->nullable()->index()->unique();
$table->string('description')->nullable();
$table->integer('company_id')->unsigned()->nullable();
$table->string('language', 3)->nullable();
$table->timestamps();
$table->softDeletes();
});
}
public function down()
{
Schema::dropIfExists('database_tester_categories');
Schema::dropIfExists('database_tester_categories_nested');
}
}

View File

@@ -0,0 +1,23 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateCountriesTable extends Migration
{
public function up()
{
Schema::create('database_tester_countries', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('database_tester_countries');
}
}

View File

@@ -0,0 +1,26 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateEventLogTable extends Migration
{
public function up()
{
Schema::create('database_tester_event_log', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('action', 30)->nullable();
$table->string('related_id')->index()->nullable();
$table->string('related_type')->index()->nullable();
$table->softDeletes();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('database_tester_event_log');
}
}

View File

@@ -0,0 +1,30 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateMetaTable extends Migration
{
public function up()
{
Schema::create('database_tester_meta', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id')->unsigned();
$table->integer('taggable_id')->unsigned()->index()->nullable();
$table->string('taggable_type')->nullable();
$table->string('meta_title')->nullable();
$table->string('meta_description')->nullable();
$table->string('meta_keywords')->nullable();
$table->string('canonical_url')->nullable();
$table->string('redirect_url')->nullable();
$table->string('robot_index')->nullable();
$table->string('robot_follow')->nullable();
});
}
public function down()
{
Schema::dropIfExists('database_tester_meta');
}
}

View File

@@ -0,0 +1,24 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreatePhonesTable extends Migration
{
public function up()
{
Schema::create('database_tester_phones', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('number')->nullable();
$table->integer('author_id')->unsigned()->index()->nullable();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('database_tester_phones');
}
}

View File

@@ -0,0 +1,41 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreatePostsTable extends Migration
{
public function up()
{
Schema::create('database_tester_posts', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('title')->nullable();
$table->string('slug')->nullable()->index();
$table->text('long_slug')->nullable();
$table->text('description')->nullable();
$table->boolean('is_published')->default(false);
$table->timestamp('published_at')->nullable();
$table->integer('author_id')->unsigned()->index()->nullable();
$table->string('author_nickname')->default('Winter')->nullable();
$table->softDeletes();
$table->timestamps();
});
Schema::create('database_tester_categories_posts', function ($table) {
$table->engine = 'InnoDB';
$table->integer('category_id')->unsigned();
$table->integer('post_id')->unsigned();
$table->primary(['category_id', 'post_id']);
$table->string('category_name')->nullable();
$table->string('post_name')->nullable();
});
}
public function down()
{
Schema::dropIfExists('database_tester_categories_posts');
Schema::dropIfExists('database_tester_posts');
}
}

View File

@@ -0,0 +1,34 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateRolesTable extends Migration
{
public function up()
{
Schema::create('database_tester_roles', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name')->nullable();
$table->text('description')->nullable();
$table->timestamps();
});
Schema::create('database_tester_authors_roles', function ($table) {
$table->engine = 'InnoDB';
$table->integer('author_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->primary(['author_id', 'role_id']);
$table->string('clearance_level')->nullable();
$table->boolean('is_executive')->default(false);
});
}
public function down()
{
Schema::dropIfExists('database_tester_roles');
Schema::dropIfExists('database_tester_authors_roles');
}
}

View File

@@ -0,0 +1,31 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateTagsTable extends Migration
{
public function up()
{
Schema::create('database_tester_tags', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name');
$table->timestamps();
});
Schema::create('database_tester_taggables', function ($table) {
$table->engine = 'InnoDB';
$table->unsignedInteger('tag_id');
$table->morphs('taggable', 'testings_taggable');
$table->unsignedInteger('added_by')->nullable();
});
}
public function down()
{
Schema::dropIfExists('database_tester_taggables');
Schema::dropIfExists('database_tester_tags');
}
}

View File

@@ -0,0 +1,25 @@
<?php namespace Database\Tester\Updates;
use Schema;
use Winter\Storm\Database\Updates\Migration;
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('database_tester_users', function ($table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name')->nullable();
$table->string('email')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('database_tester_users');
}
}

View File

@@ -0,0 +1,13 @@
1.0.1: First version of Tester
1.0.2:
- Create tables
- create_posts_table.php
- create_authors_table.php
- create_phones_table.php
- create_categories_table.php
- create_roles_table.php
- create_users_table.php
- create_event_log_table.php
- create_meta_table.php
- create_countries_table.php
- create_tags_table.php