Skip to content

meistro57/DrawingFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DrawingFlow

image

Steel fabrication drawing workflow system built with Laravel 12, Inertia, and Vue 3.

image

Tech Stack

  • PHP ^8.2
  • Laravel ^12.0
  • Inertia Laravel ^2.0
  • Vue ^3.5
  • Vite ^7
  • Tailwind CSS ^4
  • Laravel MCP ^0.6
  • Laravel Boost ^2.2 (dev)
  • MySQL 8, Redis 7, Meilisearch, Mailhog (via Docker Compose)

Repository Layout

app/
  Http/
  Models/
  Providers/
  Services/
bootstrap/
config/
database/
  factories/
  migrations/
  seeders/
resources/
  css/
  js/
routes/
tests/
docker/

Quick Start

Option A: Composer setup script

composer setup

This installs PHP and Node dependencies, creates .env if needed, generates app key, runs migrations, and builds frontend assets.

Option B: Docker Compose

cp .env.example .env
docker compose up -d
docker compose exec app composer install
docker compose exec app php artisan key:generate
docker compose exec app php artisan migrate --seed --force
npm install
npm run dev

Docker + Sail commands

This project includes Laravel Sail (vendor/bin/sail), but the Docker app service is named app (not laravel.test). If you use Sail, set the service explicitly:

SAIL_SERVICE=app vendor/bin/sail artisan about

Or use direct Docker commands:

docker compose exec -T app php artisan about

HTTPS (self-signed or official certificate)

cp .env.example .env
# Optional: set APP_URL=https://<lan-host-or-ip> and FORCE_HTTPS=true
# Optional: set TLS_CERT_CN and TLS_CERT_SAN for your LAN hostname/IP SAN entries

docker compose up -d --build nginx
  • If docker/nginx/certs/tls.crt and docker/nginx/certs/tls.key exist, nginx uses them (works with official CA certs).
  • If they do not exist, nginx auto-generates a self-signed certificate at startup.
  • FORCE_HTTPS_REDIRECT=1 redirects HTTP (:80) to HTTPS (:443); set 0 to keep HTTP available for devices that cannot trust your self-signed cert.

Local Development Commands

Composer

composer dev
composer test
composer lint
composer lint:fix
composer analyse

Artisan (Docker app container)

docker compose exec app php artisan list
docker compose exec app php artisan test
docker compose exec app php artisan pail

Frontend

npm run dev
npm run build
npm run lint
npm run lint:check
npm run format
npm run format:check

Testing

docker compose exec app php artisan test
docker compose exec app php artisan test --testsuite=Feature
docker compose exec app php artisan test --testsuite=Unit
docker compose exec app php artisan test tests/Feature/Profile/ProfileManagementTest.php

Data Import and Backup

docker compose exec app php artisan data:import-legacy-csv

The importer reads:

  • Shop Drawing Request.csv
  • Drawing Submittal Log.csv
  • Fabrication Drawing Log.csv

Admin users can create, restore, and download JSON backups from the Admin > Data Backup page.

phpunit.xml uses:

  • APP_ENV=testing
  • DB_CONNECTION=sqlite
  • DB_DATABASE=:memory:

Docker Services

From docker-compose.yml:

  • App (nginx HTTP): http://localhost (redirects to HTTPS)
  • App (nginx HTTPS): https://localhost
  • Mailhog UI: http://localhost:8025
  • MySQL: localhost:3306
  • Redis: localhost:6379
  • Meilisearch: localhost:7700

Default Seeded Users

From database/seeders/DatabaseSeeder.php:

  • mark@drawingflow.local / password
  • detailer@drawingflow.local / password

Domain Notes

  • Drawing request numbers are generated as DR-YYYY-####.
  • Submittal numbers are generated as SUB-YYYY-####.
  • Fab queue numbers are generated as FAB-YYYY-####.
  • Main workflow pages are under resources/js/Pages/.
  • Web routes are in routes/web.php.

MCP + Boost

This app has first-party MCP support and Boost installed.

  • Project MCP config: .mcp.json
  • Boost config: boost.json
  • Start Boost MCP (inside container):
docker compose exec -T -e APP_ENV=local -e APP_DEBUG=true app php artisan boost:mcp

Note: Boost only registers in local/debug contexts. The command above overrides env vars only for that process.

  • Health check MCP with Inspector:
docker compose exec -T app php artisan mcp:inspector

Recent Feature Updates

  • Admin backup/restore page is available at admin.backups.index for JSON backups, restore upload, and backup download.
  • Backups are now integrity-protected with schema_version metadata and HMAC signatures; restore rejects unsigned/tampered files.
  • Legacy CSV import command php artisan data:import-legacy-csv imports shop drawing requests, submittals, and fabrication queue records from the provided legacy CSV files.
  • Fab Queue detail page now includes a built-in document viewer for submittal files and latest project attachments with inline PDF preview and download.
  • Fab Queue and Submittals tables now match the richer Customers table UX with quick table filters and density controls.
  • Phase 3 PDF workspace on submittals now supports viewer + markups (circle, arrow, text, highlight, stamp).
  • Markup export endpoint provides a JSON export for saved markups.
  • Revision comparison is available with side-by-side PDF viewing in the submittal workspace.
  • Markup history is shown in the workspace with author and timestamp.
  • Notification center now uses short-lived unread-count caching and visibility-aware polling to reduce repeated requests.
  • Authentication endpoints now include login and registration rate limiting.
  • Internal submittal notes are now available on submittal detail pages for team communication.
  • Customer imports now include a downloadable CSV template directly on the Customers index page.
  • State fields on customer/project create & edit forms are dropdowns (US abbreviations) with backend validation.
  • Project attachments now support deletion from the project detail page.
  • Boost admin workspace includes MCP activity indicator + live log viewer with reset action and event-log retention pruning.
  • Drawing request, submittal, and fab queue numbers now retry generation on unique-collision conflicts.
  • Dashboard/notification query indexes were added for queue and unread-count paths.
  • Drawing request detail job number now links directly to the related project page.

Additional Project Context

  • See AGENTS.md for agent-oriented implementation notes and project conventions.

About

A standalone Laravel module for managing steel fabrication shop drawings from request through approval to fab handoff - built to replace Microsoft Lists chaos.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors