FAIMS Architecture Atlas · developer training
← → sheets · P play
Fisheries & Aquaculture Information Management System

How FAIMS is built, wired and shipped

Laravel 11 · PHP 8.3 MySQL 8 Sanctum tokens Quasar 2 · Vue 3.5 Capacitor 7 · Android IndexedDB offline Docker · ./pajamas Claude · report writer
01

The whole system

request / response queued or scheduled work
02

Life of a request

03

Domain modules

Route statements per file · routes/
04

Who sees what

How a permission is born
system_menus → permissions → permission_role → Gate::define → Policy
05

Field to dashboard

Offline queue · try it
offline_data offline
06

Background work

Queues

Scheduler · app/Console/Kernel.php
    07

    AI report builder

    Failed section? The reason is on its ai_report_sections row, not in laravel.log.

    08

    Translations

    One key, four languages · language_data.php

    Missing key shows the raw key. Use tt('Key', 'Fallback'), then yarn translations:audit.

    09

    Integrations

    10

    Deployment · install_docker.py

    sudo python3 install_docker.py
      After install · ./pajamas
      Every web container start · docker/web/entrypoint.sh
      Mobile release

      The installer wipes the database on every run. Update with git pull && ./pajamas up.

      Bare-metal alternative: public/python/install.py

      11

      Code to server