Personal Inventory Management System
Go to file
2025-12-06 21:49:26 -06:00
app Initial commit of existing project 2025-12-06 21:49:26 -06:00
bootstrap Initial commit of existing project 2025-12-06 21:49:26 -06:00
config Initial commit of existing project 2025-12-06 21:49:26 -06:00
database Initial commit of existing project 2025-12-06 21:49:26 -06:00
public Initial commit of existing project 2025-12-06 21:49:26 -06:00
resources Initial commit of existing project 2025-12-06 21:49:26 -06:00
routes Initial commit of existing project 2025-12-06 21:49:26 -06:00
storage Initial commit of existing project 2025-12-06 21:49:26 -06:00
tests Initial commit of existing project 2025-12-06 21:49:26 -06:00
.editorconfig Initial commit of existing project 2025-12-06 21:49:26 -06:00
.env.example Initial commit of existing project 2025-12-06 21:49:26 -06:00
.gitattributes Initial commit of existing project 2025-12-06 21:49:26 -06:00
.gitignore Initial commit of existing project 2025-12-06 21:49:26 -06:00
.prettierignore Initial commit of existing project 2025-12-06 21:49:26 -06:00
.prettierrc Initial commit of existing project 2025-12-06 21:49:26 -06:00
artisan Initial commit of existing project 2025-12-06 21:49:26 -06:00
components.json Initial commit of existing project 2025-12-06 21:49:26 -06:00
composer.json Initial commit of existing project 2025-12-06 21:49:26 -06:00
composer.lock Initial commit of existing project 2025-12-06 21:49:26 -06:00
eslint.config.js Initial commit of existing project 2025-12-06 21:49:26 -06:00
package-lock.json Initial commit of existing project 2025-12-06 21:49:26 -06:00
package.json Initial commit of existing project 2025-12-06 21:49:26 -06:00
phpunit.xml Initial commit of existing project 2025-12-06 21:49:26 -06:00
README.md Initial commit of existing project 2025-12-06 21:49:26 -06:00
tsconfig.json Initial commit of existing project 2025-12-06 21:49:26 -06:00
vite.config.ts Initial commit of existing project 2025-12-06 21:49:26 -06:00

PIMS — Personal Inventory Management System

PIMS is a Laravel + Inertia.js + Vue 3 application intended to manage personal inventory. This repository is a modern Laravel 12 starter that pairs a PHP backend with a TypeScript/Vue frontend, bundled via Vite and styled with Tailwind CSS.

Note: This README was updated to reflect the current codebase. Where details are unclear in the repository, TODOs are explicitly noted for maintainers to fill in.

Overview

  • Backend: Laravel Framework ^12.0 (PHP ^8.2)
  • Inertia.js (server: inertiajs/inertia-laravel ^2.x)
  • Frontend: Vue 3, TypeScript, Vite 7, Tailwind CSS 4
  • Auth: Laravel Fortify
  • Dev tooling: Laravel Boost, Pail (logs), Pint (code style), ESLint, Prettier
  • Package managers: Composer (PHP) and npm (Node)
  • Default entry point: public/index.php

Requirements

  • PHP 8.2+
  • Composer 2.x
  • Node.js 18+ (recommended LTS) and npm 9+
  • SQLite (default on first-run) or another database supported by Laravel
    • The project creates database/database.sqlite on project creation and runs migrations automatically in some script flows.

Getting Started

1) Clone and configure

git clone <YOUR_REPO_URL> pims
cd pims

Create your environment file and app key, install dependencies, run migrations, and build assets. The Composer setup script automates these steps:

composer run setup

What composer run setup does:

  • composer install
  • Copy .env.example to .env if it does not exist
  • php artisan key:generate
  • php artisan migrate --force
  • npm install
  • npm run build

If you prefer to do these manually:

cp .env.example .env   # if .env.example is populated; see TODO below
php artisan key:generate
composer install
php artisan migrate
npm install
npm run dev             # or npm run build

2) Run the app in development

Option A — Single terminal processes:

php artisan serve
php artisan queue:listen --tries=1   # optional if you use queues
php artisan pail --timeout=0         # optional live log viewer
npm run dev                          # Vite dev server for assets

Option B — Use the combined dev script (runs server, queue, logs, and Vite together):

composer run dev

Server will be available at the host/port shown in php artisan serve output (typically http://127.0.0.1:8000). The default route / renders an Inertia page Welcome. The dashboard route is protected by auth and verified middleware.

Optional: Inertia SSR (Server-Side Rendering)

This project includes scripts to build SSR bundles and start the Inertia SSR server.

composer run dev:ssr      # will run php server, queue, logs, and the Inertia SSR server

Or build SSR assets without starting the SSR process:

npm run build:ssr

Scripts

Composer:

  • composer run setup — Full setup: install PHP deps, ensure .env, generate key, migrate, install Node deps, build assets
  • composer run dev — Concurrent dev processes (server, queue worker, logs, Vite)
  • composer run dev:ssr — Build SSR assets and run server + queue + logs + Inertia SSR
  • composer run test — Clear config cache and run tests via php artisan test

npm:

  • npm run dev — Vite dev server
  • npm run build — Build production assets
  • npm run build:ssr — Build production assets and SSR bundle
  • npm run lint — ESLint with auto-fix
  • npm run format — Prettier write on resources/
  • npm run format:check — Prettier check

Environment Variables

  • The repository contains an .env.example file, but it is currently empty.
  • TODO: Populate .env.example with the required variables for this app (e.g., APP_NAME, APP_ENV, APP_KEY, database config, mail config, etc.).
  • On first setup, the scripts will generate APP_KEY automatically.
  • Database: the projects Composer post-create hook creates database/database.sqlite and runs migrations; you can continue with SQLite (set DB_CONNECTION=sqlite) or configure MySQL/PostgreSQL/etc. in .env.

Project Structure

High-level directories of interest:

  • app/ — Laravel application code (models, jobs, controllers, etc.)
  • bootstrap/ — Laravel bootstrapping
  • config/ — Configuration files
  • database/ — Migrations, seeders; SQLite file may live here (database.sqlite)
  • public/ — Web server document root; main PHP entry point is public/index.php
  • resources/ — Frontend assets (Vue, TypeScript, styles)
  • routes/ — Route definitions (e.g., web.php renders Inertia pages)
  • storage/ — Framework storage (logs, cache, sessions)
  • tests/ — Test suite (Pest + Laravel plugin)
  • vite.config.ts — Vite build configuration
  • composer.json — PHP dependencies and Composer scripts
  • package.json — Node dependencies and npm scripts

Modules

This application is organized to support feature modules under app/Modules/ (e.g., Movies, Books, Games, Collectibles). Each module owns its domain logic and ships with its own README.md documenting endpoints, data models, services/contracts, environment variables, and development notes.

  • Current module(s):
    • Movies — see app/Modules/Movies/README.md for detailed documentation.

As additional modules are added (Books, Games, Collectibles, etc.), refer to their respective app/Modules/<Module>/README.md files for module-specific guidance.

Running Tests

You can run tests with either Composer or Artisan directly:

composer run test
# or
php artisan test

The project is configured for Pest with pestphp/pest and pest-plugin-laravel in require-dev.

Database & Migrations

Run pending migrations:

php artisan migrate

Seeders/factories are available under database/ if defined.

Default behavior suggests SQLite can be used out of the box. To switch to another DB, update your .env accordingly and re-run migrations.

Linting & Formatting

npm run lint            # ESLint
npm run format          # Prettier write
npm run format:check    # Prettier check

PHP code style is managed by Laravel Pint (installed as a dev dependency). You can run it via:

./vendor/bin/pint

Development Notes

  • Logs: php artisan pail --timeout=0 starts a live log viewer.
  • Queues: php artisan queue:listen --tries=1 is used in the dev script.
  • Docker: Laravel Sail is present as a dev dependency, but the repo does not include a Sail config section here.
    • TODO: Confirm whether Sail should be the preferred local environment and document the ./vendor/bin/sail workflow if applicable.

Deployment

General Laravel deployment notes:

  1. Ensure environment variables are configured and APP_KEY is set.
  2. Run migrations: php artisan migrate --force.
  3. Build assets: npm ci && npm run build.
  4. Cache optimizations (optional):
    • php artisan config:cache
    • php artisan route:cache
    • php artisan view:cache

TODO: Add specific deployment instructions (hosting provider, CI/CD, SSR process, queue workers, scheduler) once decided.

License

This project is licensed under the MIT License (per composer.json).

TODO: If a LICENSE file is missing in the repository root, add one with the MIT license text.