Web Inventory System
Internal Website Inventory and Monitoring Platform
Digital Innovation Center (DIC), University of the Philippines Baños
Table of Contents
- Private System Notice
- Author and Institutional Context
- System Overview
- Technology Stack
- Repository Structure
- Prerequisites
- Local Setup
- Application Access
- Operations and Monitoring
- Quality Gates
- Pre-commit Workflow
- Internal Documentation
- Policy Documents
- Disclaimer
Private System Notice
This repository is proprietary and private.
| Scope | Policy |
|---|---|
| Source code | Not open for public contribution or redistribution |
| Access | Limited to authorized DIC team members |
| Rights | All rights reserved by the author/owner |
See LICENSE, CONTRIBUTING.md, SECURITY.md, and CODE_OF_CONDUCT.md for internal policies.
Author and Institutional Context
Privately developed by Mhar Andrei Macapallag for his intern organization, the Digital Innovation Center (DIC), University of the Philippines Baños.
| Identity | Value |
|---|---|
| GitHub | @VoxDroid |
| Alias | VoxDroid |
System Overview
Web Inventory centralizes website records for UPLB units and provides operational tooling for monitoring and governance.
- Website registry with office ownership and content manager assignment
- Automated status checks and status logs
- Manual website logs with reusable tags
- Office/content manager/user management
- Role and permission controls (
super_admin,user) - Dashboard and exports (CSV, Excel, JSON, PDF)
Technology Stack
| Layer | Tools |
|---|---|
| Backend | PHP ^8.2, Laravel ^12.0 |
| Admin UI | Filament ^3.0, Livewire, Alpine.js |
| Frontend build | Vite ^7.0.7, Tailwind CSS ^4.0.0 |
| Database | MySQL (default in .env.example) |
| Authorization | Spatie Permission ^6.24, Filament Shield ^3.9 |
| Observability | Spatie Activity Log ^4.12 |
| Monitoring | Guzzle ^7.10 (status checks) |
Current lockfile snapshot: Laravel v12.53.0, Filament v3.3.49, Filament Shield 3.9.10, Vite 7.3.1, Tailwind CSS 4.2.1, Pest v4.4.1.
Repository Structure
app/ Application code (models, services, jobs, Filament resources/pages)
config/ Application and feature configuration
database/ Migrations, factories, seeders
docs/ Internal docs and checklists
public/ Public assets and entrypoint
resources/ Frontend sources and Blade views
routes/ Web and console routes/scheduling
scripts/ Utility setup/seed scripts
tests/ Pest feature and unit tests
Prerequisites
- PHP 8.2+ with common Laravel extensions (
pdo,pdo_mysql,mbstring,openssl,bcmath,ctype,json,tokenizer,xml) - Composer 2+
- Node.js 20+ and npm
- MySQL 8+
- Git
Local Setup
- Clone the repository and enter the project directory.
git clone <private-repo-url> Web-Inventory
cd Web-Inventory
- Install dependencies.
composer install
npm install
- Configure environment.
cp .env.example .env
php artisan key:generate
- Verify database settings in
.env.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=web_inventory
DB_USERNAME=root
DB_PASSWORD=
- Create the database.
Option A: use helper script in scripts/.
php scripts/database_setup.php
Option B: create the database manually in MySQL, then continue.
- Run migrations and seeders.
php artisan migrate:fresh --seed
migrate:fresh drops all tables before re-running migrations. Use it for local/dev reset workflows.
- Build frontend assets.
npm run build
- Start development services.
composer run dev
This starts Laravel server, queue listener, log tailing (pail), and Vite dev server concurrently.
Application Access
| Surface | URL |
|---|---|
| Public landing page | http://localhost:8000/ |
| Admin panel | http://localhost:8000/admin |
Default accounts seeded by DefaultSuperAdminSeeder:
admin@dic.uplb.edu.ph/passworduser@dic.uplb.edu.ph/password
Change default credentials immediately in non-local environments.
Operations and Monitoring
Script Utilities
| Script | Purpose | Command |
|---|---|---|
scripts/database_setup.php | Creates DB from .env values without full Laravel bootstrap | php scripts/database_setup.php |
scripts/setup-defaults.php | Fresh local reset and essential defaults | php scripts/setup-defaults.php |
scripts/seed-test-data.php | Seeds demo/testing entities | php scripts/seed-test-data.php |
scripts/setup-defaults.php runs these actions:
php artisan key:generate --quietphp artisan migrate:fresh --forcephp artisan db:seed --class=RolesAndPermissionsSeeder --forcephp artisan db:seed --class=DefaultSuperAdminSeeder --force
Website Status Checks
Manual run:
php artisan websites:check-status
Scheduler is registered in routes/console.php and runs every five minutes using:
everyFiveMinutes()withoutOverlapping()runInBackground()
Configuration in config/web-inventory.php and environment values:
WEBSITE_CHECK_INTERVAL=5
WEBSITE_CHECK_TIMEOUT=10
WEBSITE_ALERT_EMAIL=alerts@example.com
WEBSITE_CHECK_CONCURRENCY=5
Queue and Scheduler (Production)
- Queue worker example:
php artisan queue:work --tries=1 --timeout=0 - Scheduler cron:
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
Quality Gates
Run test suite:
composer test
Run Pest directly:
php artisan test
Run static analysis:
vendor/bin/phpstan analyse
Run formatter:
vendor/bin/pint
Pre-commit Workflow
Install and run pre-commit checks using a local Python virtual environment:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit run --all-files
Optional one-time hook installation:
pre-commit install
Internal Documentation
docs/project_overview.mddocs/checklist.mddocs/test_checklist.md
Policy Documents
- Contribution policy:
CONTRIBUTING.md - Security policy:
SECURITY.md - Team conduct policy:
CODE_OF_CONDUCT.md - Licensing terms:
LICENSE - Support channels:
SUPPORT.md
Disclaimer
This project is intended for private institutional operations. External use, redistribution, sublicensing, or publication is not permitted without explicit written permission from the owner.
