<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zheus Leiandre Codez Cajote</title>
    <description>The latest articles on DEV Community by Zheus Leiandre Codez Cajote (@zheyuse).</description>
    <link>https://dev.to/zheyuse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3866688%2F40838dd4-cd3d-450f-8bb9-0fb7583ee737.jpeg</url>
      <title>DEV Community: Zheus Leiandre Codez Cajote</title>
      <link>https://dev.to/zheyuse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zheyuse"/>
    <language>en</language>
    <item>
      <title>ML CLI - M LHUILLIER FILE GENERATOR</title>
      <dc:creator>Zheus Leiandre Codez Cajote</dc:creator>
      <pubDate>Mon, 13 Apr 2026 06:17:40 +0000</pubDate>
      <link>https://dev.to/zheyuse/ml-cli-m-lhuillier-file-generator-40ao</link>
      <guid>https://dev.to/zheyuse/ml-cli-m-lhuillier-file-generator-40ao</guid>
      <description>&lt;h2&gt;
  
  
  GITHUB REPO
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ZheyUse" rel="noopener noreferrer"&gt;
        ZheyUse
      &lt;/a&gt; / &lt;a href="https://github.com/ZheyUse/mlhuillier" rel="noopener noreferrer"&gt;
        mlhuillier
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ML CLI (M Lhuillier)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;ML CLI is a Windows-first PHP command-line toolkit for scaffolding projects, managing a shared user database, and automating common local development workflows.&lt;/p&gt;
&lt;p&gt;It is designed for teams building multiple PHP apps (typically under XAMPP) that need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fast project bootstrap&lt;/li&gt;
&lt;li&gt;consistent folder/file structure&lt;/li&gt;
&lt;li&gt;centralized user account storage&lt;/li&gt;
&lt;li&gt;quick RBAC/PBAC table provisioning&lt;/li&gt;
&lt;li&gt;repeatable backup and update workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What This System Does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;ML CLI provides one command surface (&lt;code&gt;ml&lt;/code&gt;) for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating starter PHP project structures&lt;/li&gt;
&lt;li&gt;Navigating quickly between projects under &lt;code&gt;C:\xampp\htdocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Opening projects in browser (&lt;code&gt;http://localhost/&amp;lt;project&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Importing and testing a shared &lt;code&gt;userdb&lt;/code&gt; schema&lt;/li&gt;
&lt;li&gt;Creating user accounts from terminal prompts&lt;/li&gt;
&lt;li&gt;Creating project-specific RBAC and PBAC tables in &lt;code&gt;userdb&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Configuring and running MySQL schema backups via &lt;code&gt;mysqldump&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Checking and applying CLI updates from GitHub&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core Purpose&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This repository solves repetitive setup work for local PHP development on Windows.&lt;/p&gt;
&lt;p&gt;Instead of manually creating files, wiring auth tables, and…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ZheyUse/mlhuillier" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  DOCUMENTATIONS
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://zheyuse.github.io/mlhuillier/documentation/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;zheyuse.github.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h1&gt;
  
  
  ML CLI (M Lhuillier)
&lt;/h1&gt;

&lt;p&gt;ML CLI is a Windows-first PHP command-line toolkit for scaffolding projects, managing a shared user database, and automating common local development workflows.&lt;/p&gt;

&lt;p&gt;It is designed for teams building multiple PHP apps (typically under XAMPP) that need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fast project bootstrap&lt;/li&gt;
&lt;li&gt;consistent folder/file structure&lt;/li&gt;
&lt;li&gt;centralized user account storage&lt;/li&gt;
&lt;li&gt;quick RBAC/PBAC table provisioning&lt;/li&gt;
&lt;li&gt;repeatable backup and update workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What This System Does
&lt;/h2&gt;

&lt;p&gt;ML CLI provides one command surface (&lt;code&gt;ml&lt;/code&gt;) for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating starter PHP project structures&lt;/li&gt;
&lt;li&gt;Navigating quickly between projects under &lt;code&gt;C:\xampp\htdocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Opening projects in browser (&lt;code&gt;http://localhost/&amp;lt;project&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Importing and testing a shared &lt;code&gt;userdb&lt;/code&gt; schema&lt;/li&gt;
&lt;li&gt;Creating user accounts from terminal prompts&lt;/li&gt;
&lt;li&gt;Creating project-specific RBAC and PBAC tables in &lt;code&gt;userdb&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Configuring and running MySQL schema backups via &lt;code&gt;mysqldump&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Checking and applying CLI updates from GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core Purpose
&lt;/h2&gt;

&lt;p&gt;This repository solves repetitive setup work for local PHP development on Windows.&lt;/p&gt;

&lt;p&gt;Instead of manually creating files, wiring auth tables, and writing one-off DB scripts for every project, you can run a small set of &lt;code&gt;ml&lt;/code&gt; commands and start building features immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Windows (PowerShell / CMD)&lt;/li&gt;
&lt;li&gt;PHP CLI installed (XAMPP &lt;code&gt;C:\xampp\php\php.exe&lt;/code&gt; is auto-detected)&lt;/li&gt;
&lt;li&gt;MySQL/MariaDB access&lt;/li&gt;
&lt;li&gt;Internet access for remote helper downloads/updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Optional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js (only for rebuilding docs JSON)&lt;/li&gt;
&lt;li&gt;VS Code CLI (&lt;code&gt;code&lt;/code&gt;) for &lt;code&gt;ml nav&lt;/code&gt; open-in-editor flow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option A: Standard Installer (recommended)
&lt;/h3&gt;

&lt;p&gt;From the repository root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;install&lt;/span&gt;&lt;span class="na"&gt;-ml&lt;/span&gt;.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;installs CLI runtime to &lt;code&gt;C:\ML CLI\Tools&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;copies shell wrapper(s)&lt;/li&gt;
&lt;li&gt;updates user PATH&lt;/li&gt;
&lt;li&gt;installs version metadata (&lt;code&gt;VERSION&lt;/code&gt;, &lt;code&gt;version.txt&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After install, open a new terminal and verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="na"&gt;--v
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option B: Local Developer Install
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;php&lt;/span&gt; &lt;span class="kd"&gt;ml&lt;/span&gt;&lt;span class="na"&gt;-local&lt;/span&gt;.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also pass a custom destination:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;php&lt;/span&gt; &lt;span class="kd"&gt;ml&lt;/span&gt;&lt;span class="na"&gt;-local&lt;/span&gt;.php &lt;span class="s2"&gt;"C:\Some\Path"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  PowerShell Wrapper Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\install-wrappers.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This installs wrappers to &lt;code&gt;%USERPROFILE%\bin&lt;/code&gt; and updates your PowerShell profile/PATH behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create project
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;create&lt;/span&gt; &lt;span class="kd"&gt;my&lt;/span&gt;&lt;span class="na"&gt;-project
&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="kd"&gt;my&lt;/span&gt;&lt;span class="na"&gt;-project
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Set DB values in &lt;code&gt;.env&lt;/code&gt; (especially &lt;code&gt;USERDB_NAME&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Import and test shared user database&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="kd"&gt;userdb&lt;/span&gt;
&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;test&lt;/span&gt; &lt;span class="kd"&gt;userdb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create access-control tables for this project
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;create&lt;/span&gt; &lt;span class="na"&gt;--rbac &lt;/span&gt;&lt;span class="kd"&gt;my_project&lt;/span&gt;
&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;create&lt;/span&gt; &lt;span class="na"&gt;--pbac &lt;/span&gt;&lt;span class="kd"&gt;my_project&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create first account
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;create&lt;/span&gt; &lt;span class="na"&gt;--a
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Open app in browser
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;serve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Command Reference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  General
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ml --h&lt;/code&gt; : show help&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml --v&lt;/code&gt; : show installed version&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml --c&lt;/code&gt; : check remote version&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml update&lt;/code&gt; : update installed CLI files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml --d&lt;/code&gt; : download installer helper&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml doc&lt;/code&gt; / &lt;code&gt;ml docs&lt;/code&gt; : open hosted docs site&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project / Workflow
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ml create &amp;lt;project_name&amp;gt;&lt;/code&gt; : scaffold a new project&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml nav&lt;/code&gt; : interactive navigation under &lt;code&gt;C:\xampp\htdocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml nav --&amp;lt;project_name&amp;gt;&lt;/code&gt; : jump directly to project&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml nav --new&lt;/code&gt; : jump to &lt;code&gt;C:\xampp\htdocs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml serve [project_name]&lt;/code&gt; : open project URL in browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database / UserDB
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ml test &amp;lt;database&amp;gt;&lt;/code&gt; : test DB connection&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml test userdb&lt;/code&gt; : userdb-specific connectivity check&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml add userdb&lt;/code&gt; : import userdb schema SQL&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml create --config&lt;/code&gt; : create backup config JSON&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml --b [schema|all]&lt;/code&gt; : backup one/all schemas&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Account / Access Control
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ml create --a&lt;/code&gt; : interactive account creation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml create --rbac &amp;lt;project_name&amp;gt;&lt;/code&gt; : create &lt;code&gt;&amp;lt;project_name&amp;gt;_rbac&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml create --pbac &amp;lt;project_name&amp;gt;&lt;/code&gt; : create &lt;code&gt;&amp;lt;project_name&amp;gt;_pbac&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Generated Project Scaffold
&lt;/h2&gt;

&lt;p&gt;The scaffolder (&lt;code&gt;generate-file-structure.php&lt;/code&gt;) creates a complete starter app including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;src/config&lt;/code&gt; (env/db/auth/session/csrf/middleware/error helpers)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/controllers&lt;/code&gt;, &lt;code&gt;src/models&lt;/code&gt;, &lt;code&gt;src/pages&lt;/code&gt;, &lt;code&gt;src/modals&lt;/code&gt;, &lt;code&gt;src/templates&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;public&lt;/code&gt;, &lt;code&gt;public/api&lt;/code&gt;, &lt;code&gt;public/components&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;starter UI/layout files (&lt;code&gt;index.php&lt;/code&gt;, CSS templates, modal/components)&lt;/li&gt;
&lt;li&gt;project &lt;code&gt;.env&lt;/code&gt; and starter &lt;code&gt;README.md&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database Model
&lt;/h2&gt;

&lt;p&gt;Main shared database: &lt;code&gt;userdb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Included migrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;migration/userdb/userdb_users.sql&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;migration/userdb/userdb_userlogs.sql&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;users&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Important columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;id_number&lt;/code&gt; (unique)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;username&lt;/code&gt; (unique)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;firstname&lt;/code&gt;, &lt;code&gt;middlename&lt;/code&gt;, &lt;code&gt;lastname&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;role&lt;/code&gt; (default &lt;code&gt;Public&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;password&lt;/code&gt; (hashed)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dateCreated&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;userlogs&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Important columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;log_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;id_number&lt;/code&gt; (FK -&amp;gt; &lt;code&gt;users.id_number&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;last_online&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dateModified&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project RBAC Table
&lt;/h3&gt;

&lt;p&gt;Created by &lt;code&gt;ml create --rbac &amp;lt;project_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;table name: &lt;code&gt;&amp;lt;project_name&amp;gt;_rbac&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PK: &lt;code&gt;&amp;lt;project_name&amp;gt;_no&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;includes &lt;code&gt;id_number&lt;/code&gt; FK and &lt;code&gt;user_role&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project PBAC Table
&lt;/h3&gt;

&lt;p&gt;Created by &lt;code&gt;ml create --pbac &amp;lt;project_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;table name: &lt;code&gt;&amp;lt;project_name&amp;gt;_pbac&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PK: &lt;code&gt;&amp;lt;project_name&amp;gt;_no&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;includes &lt;code&gt;id_number&lt;/code&gt; FK, &lt;code&gt;access_level&lt;/code&gt;, &lt;code&gt;permissions&lt;/code&gt; (text/JSON-style payload)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Account Creation Behavior
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;account-insert.php&lt;/code&gt; / &lt;code&gt;ml create --a&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reads nearest &lt;code&gt;.env&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;requires valid &lt;code&gt;USERDB_NAME&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;prompts for ID, first/last name, role&lt;/li&gt;
&lt;li&gt;generates username from last name + ID&lt;/li&gt;
&lt;li&gt;stores password as a hash (&lt;code&gt;password_hash&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;inserts default user log status&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Backup Workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Configure backup settings:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="kd"&gt;create&lt;/span&gt; &lt;span class="na"&gt;--config
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This writes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;C:\ML CLI\Tools\mlcli-config.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Run backup:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="na"&gt;--b
&lt;/span&gt;&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="na"&gt;--b &lt;/span&gt;&lt;span class="kd"&gt;userdb&lt;/span&gt;
&lt;span class="kd"&gt;ml&lt;/span&gt; &lt;span class="na"&gt;--b &lt;/span&gt;&lt;span class="kd"&gt;all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Backups are written under:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;C:\ML CLI\Backup\BACKUP_MM-DD-YY\&amp;lt;schema&amp;gt;\&amp;lt;schema&amp;gt;.sql&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Update and Versioning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Local version source: &lt;code&gt;VERSION&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;CLI constant in &lt;code&gt;ml.bat&lt;/code&gt;: &lt;code&gt;ML_VERSION&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check remote: &lt;code&gt;ml --c&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Apply update: &lt;code&gt;ml update&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Batch version bump helper (repo maintenance):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;php&lt;/span&gt; &lt;span class="kd"&gt;v&lt;/span&gt;.php &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;new&lt;/span&gt;&lt;span class="na"&gt;-version&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;v.php&lt;/code&gt; updates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ml.bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;install-ml.bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uninstall-ml.bat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VERSION&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Uninstall
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;uninstall&lt;/span&gt;&lt;span class="na"&gt;-ml&lt;/span&gt;.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uninstaller removes installed runtime (&lt;code&gt;C:\ML CLI\Tools&lt;/code&gt;), PATH entries, and wrapper/profile artifacts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation Site
&lt;/h2&gt;

&lt;p&gt;This repo includes a static docs app in &lt;code&gt;documentation/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Build command metadata JSON from &lt;code&gt;ml.bat&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run docs:build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Watch mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run docs:watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;documentation/assets/data/commands.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open docs page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;documentation/index.html&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repository Structure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ml.bat&lt;/code&gt;, &lt;code&gt;ml.cmd&lt;/code&gt;, &lt;code&gt;ml.ps1&lt;/code&gt; : command entry points/wrappers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate-file-structure.php&lt;/code&gt; : main scaffolder&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate-file-remote.php&lt;/code&gt; : remote loader stub&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ml-nav.php&lt;/code&gt;, &lt;code&gt;ml-serve.php&lt;/code&gt;, &lt;code&gt;ml-update.php&lt;/code&gt; : workflow helpers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;account-insert.php&lt;/code&gt;, &lt;code&gt;userdb-import.php&lt;/code&gt;, &lt;code&gt;userdb-con-test.php&lt;/code&gt; : DB/account utilities&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rbac/&lt;/code&gt;, &lt;code&gt;pbac/&lt;/code&gt; : access-control table generators&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;backup-cli/&lt;/code&gt;, &lt;code&gt;db-config/&lt;/code&gt; : backup tooling&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;migration/&lt;/code&gt; : SQL sources&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;documentation/&lt;/code&gt; : docs website assets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scripts/&lt;/code&gt; : docs/template extraction tooling&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.env&lt;/code&gt; and &lt;code&gt;mlcli-config.json&lt;/code&gt; can contain plaintext DB credentials&lt;/li&gt;
&lt;li&gt;keep these files out of version control&lt;/li&gt;
&lt;li&gt;use least-privilege DB users where possible&lt;/li&gt;
&lt;li&gt;rotate and protect SQL backup files&lt;/li&gt;
&lt;li&gt;review generated auth/permission logic before production use&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;ml&lt;/code&gt; command not recognized
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;reopen terminal after install&lt;/li&gt;
&lt;li&gt;verify PATH contains &lt;code&gt;C:\ML CLI\Tools&lt;/code&gt; and/or &lt;code&gt;%USERPROFILE%\bin&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;re-run &lt;code&gt;install-ml.bat&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DB connection failures
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;run &lt;code&gt;ml test userdb&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;verify &lt;code&gt;.env&lt;/code&gt; values (&lt;code&gt;DB_*&lt;/code&gt;, &lt;code&gt;USERDB_*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;ensure MySQL is running and reachable&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backup errors (&lt;code&gt;mysqldump not found&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;run &lt;code&gt;ml create --config&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;set valid full path to &lt;code&gt;mysqldump.exe&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Remote fetch/update errors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;check internet/proxy/firewall for GitHub raw/API endpoints&lt;/li&gt;
&lt;li&gt;retry command&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This toolchain is primarily Windows-oriented.&lt;/li&gt;
&lt;li&gt;Many helper flows fetch the latest scripts from GitHub at runtime.&lt;/li&gt;
&lt;li&gt;For stable offline behavior, keep local script copies and avoid remote dependency paths where needed.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cli</category>
      <category>bat</category>
      <category>php</category>
      <category>ps1</category>
    </item>
    <item>
      <title>CameraFool</title>
      <dc:creator>Zheus Leiandre Codez Cajote</dc:creator>
      <pubDate>Mon, 13 Apr 2026 02:21:20 +0000</pubDate>
      <link>https://dev.to/zheyuse/project-name-camerafool-1180</link>
      <guid>https://dev.to/zheyuse/project-name-camerafool-1180</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;CameraFool is a revolutionary, cutting-edge, AI-powered mirror experience… that literally just opens your device camera.&lt;/p&gt;

&lt;p&gt;Yes. That’s it.&lt;/p&gt;

&lt;p&gt;In a world where your phone already has a camera app one tap away, CameraFool bravely asks:&lt;br&gt;
“What if… we made it harder?”&lt;/p&gt;

&lt;p&gt;Instead of simply opening your camera like a normal person, users must:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit a website&lt;/li&gt;
&lt;li&gt;Click a dramatic “Open Mirror” button&lt;/li&gt;
&lt;li&gt;Select their preferred mirror device (very important)&lt;/li&gt;
&lt;li&gt;Then… we open the exact same camera anyway&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Innovation.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://zheyuse.github.io/camerafool/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;zheyuse.github.io&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ZheyUse" rel="noopener noreferrer"&gt;
        ZheyUse
      &lt;/a&gt; / &lt;a href="https://github.com/ZheyUse/camerafool" rel="noopener noreferrer"&gt;
        camerafool
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CameraFool&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;"The Future of Reflection Technology" - a premium-looking prank app that adds dramatic steps before opening a camera flow.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Intro&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;CameraFool is intentionally overdesigned and funny:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;User visits a beautiful landing page.&lt;/li&gt;
&lt;li&gt;User clicks &lt;strong&gt;Open Mirror&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;User sees a fake permission modal (&lt;strong&gt;Allow&lt;/strong&gt; / &lt;strong&gt;Definitely Allow&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;User gets dramatic startup text and fake calibration.&lt;/li&gt;
&lt;li&gt;Then CameraFool launches camera behavior (native-device flow attempt first).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It looks like a $49/month AI product. It mostly opens a camera.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How It Works&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Main flow&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open Mirror&lt;/strong&gt; -&amp;gt; opens fake permission modal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow&lt;/strong&gt; / &lt;strong&gt;Definitely Allow&lt;/strong&gt; -&amp;gt; runs dramatic loading sequence.&lt;/li&gt;
&lt;li&gt;After loading:
&lt;ul&gt;
&lt;li&gt;On Windows, it attempts to launch native Camera app via &lt;code&gt;microsoft.windows.camera:&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On other devices, it triggers native capture intent (&lt;code&gt;input capture&lt;/code&gt;) where supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If no camera is detected, it shows a &lt;strong&gt;No Camera Detected&lt;/strong&gt; modal.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Demo flow&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Try Demo Mode&lt;/strong&gt; bypasses the fake permission modal…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ZheyUse/camerafool" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;TechStack: HTML, JS, CSS&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;I’m going for Best Google AI Usage because this project uses AI in the most powerful way possible… by making everything feel smart while doing absolutely nothing new 😭&lt;/p&gt;

&lt;p&gt;We added “AI-powered reflection enhancement”, smart mirror selection, and dramatic loading like it’s about to scan your soul… but in the end it just opens your camera like usual.&lt;/p&gt;

&lt;p&gt;It’s basically a tribute to every product that says “AI-powered” just to sound cool.&lt;/p&gt;

&lt;p&gt;So technically, the AI is working… just not in the way you expect 😏&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
