Dev Portal is a local developer dashboard built with Laravel, Vanilla CSS, and modern JavaScript. It allows developers to browse, search, configure, and manage local development directories (projects) across multiple watch locations and categories on their machine.
-
Dashboard Home View:
-
Recently Updated: Displays the last
$x$ modified projects, sorted dynamically. -
Most Active (30 Days): Displays the top
$x$ projects sorted by their Git commit counts in the last 30 days. - Limit configurations can be customized in the portal settings.
-
Recently Updated: Displays the last
-
Multi-Category Project Scanning:
- Automatically scans allowlisted watch directories for subfolders categorized as
Active,Archive, orSandbox. - Caches scanning results to maximize page loading speeds (fully customizable TTL).
- Automatically scans allowlisted watch directories for subfolders categorized as
-
Rich Metadata Extraction:
- Framework version: Detects composer.json declarations (e.g. Laravel versions) and version tags.
-
Production version: Automatically inspects
package.json,composer.json, git tags, andCHANGELOG.mdversion headers. -
Changelog preview: Displays logs from
CHANGELOG.md(filtering out[Unreleased]sections). - Timestamps: Identifies folder creation (birth) dates using macOS native stat parameters alongside last modified timestamps.
-
Key Features checklist: Scrapes list items listed under a
Featuresheader inside the project's README. - Dependencies mapping: Compiles dependency packages into organized tabs for NPM and Composer (grouped by standard vs dev requirements).
- Git Integration: Retrieves the active Git branch name, count of modified/untracked files (dirty state), and lists the last 5 commits (author, message, hash, and relative dates).
-
Location-Aware Moving:
- Allows relocating project directories to different watch locations and categories via simple dropdown selection.
- Automatically handles directory creation and collision check routines.
-
Secure Project Deletion:
- Permanent project directory removal directly from the portal UI.
- Guarded by a double-confirmation prompt to prevent accidental loss.
-
Strict Security Verification: The backend strictly validates that the project is nested exactly at
{allowlisted_path}/{category}/{projectName}. System roots and directories outside allowlisted paths are mathematically shielded from execution.
-
Configurable Domain Extension:
- Set the local TLD suffix (e.g.,
.test,.local, or.localhost) under portal settings. - The "Open Site" buttons automatically compile to use your configured suffix.
- Set the local TLD suffix (e.g.,
Once the Dev Portal is running, click the Settings icon in the top right header to customize your environment:
- Scan Locations:
- Add one or more watch directories on your local drive (e.g.,
/Users/username/Sitesor/Users/username/Code). - Inside each watch directory, Dev Portal expects three category subfolders:
Active/,Archive/, andSandbox/.
- Add one or more watch directories on your local drive (e.g.,
- Local Domain:
- Set the local domain extension (TLD) corresponding to your local server setup (e.g.
testfor Laravel Valet/Herd,local, orlocalhost).
- Set the local domain extension (TLD) corresponding to your local server setup (e.g.
- Scanning Cache:
- Toggle directory scanner results caching to optimize dashboard load performance.
- Customize the cache TTL (Time to Live) value in seconds.
- Dashboard Widgets:
- Adjust limits for the "Recently Updated" and "Most Active (Git)" dashboard widgets.
- Backend Framework: Laravel 11/12+
- PHP Version: PHP 8.5+ strictly typed (typed properties, constructor promotion, match expressions)
- Frontend Layer: Semantic HTML5 & Vanilla Javascript (Vite build pipeline)
- Styles: Custom CSS variables with HSL color-scheme pairing (native dark mode support)
- Database: SQLite (local settings persistence)
- Package Managers: Composer,
pnpm - Test Runner: Pest PHP
- PHP 8.5+
- Composer
pnpm(Node.js)
Clone the repository, enter the directory, and install dependencies:
composer install
pnpm installCopy .env.example to .env and set up database parameters:
cp .env.example .env
php artisan key:generateRun migrations to initialize settings tables:
php artisan migrateCompile stylesheets and javascript bundles:
pnpm run buildStart the local server:
php artisan serveOpen http://localhost:8000 in your web browser.
Pest PHP is configured for all unit and feature tests:
./vendor/bin/pestWe enforce strict style checks using Laravel Pint:
./vendor/bin/pintThis project is open-source and licensed under the MIT License. Feel free to use, modify, and distribute it as-is.