Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
251 commits
Select commit Hold shift + click to select a range
b40a385
Include JavaScript and CSS assets for asset build
ilumos Aug 26, 2024
0857302
Replace Laravel Mix with Vite
ilumos Aug 26, 2024
ff3de9c
Upgrade to Bootstrap 5.3
ilumos Aug 26, 2024
0c9160a
Move image assets from `public` to `resources` folder for versioning …
ilumos Aug 26, 2024
d56fe04
Remove assets compiled by Laravel Mix
ilumos Aug 26, 2024
09beb18
Set up Vite and Bootstrap 5.3
ilumos Aug 26, 2024
1e6303b
Update HTML markup for Bootstrap 5.3
ilumos Aug 26, 2024
dda94d0
Update HTML markup for Bootstrap 5.3
ilumos Aug 26, 2024
cae9504
Add Docker image stage to build Vite assets
ilumos Aug 26, 2024
61652cb
Migrate icons from OpenIconic to Font Awesome
ilumos Aug 26, 2024
ed18725
Remove Laravel Mix config file
ilumos Aug 26, 2024
f08d6d0
Install `@eonasdan/tempus-dominus`
ilumos Aug 26, 2024
6560b48
Update LAN form to use `@eonasdan/tempus-dominus` v6
ilumos Aug 26, 2024
3943f86
Group related lines together
ilumos Aug 26, 2024
5670e09
Group related lines together
ilumos Aug 27, 2024
58f1fa0
Update slide form to use `@eonasdan/tempus-dominus` v6
ilumos Aug 27, 2024
f373a69
Update event form to use `@eonasdan/tempus-dominus` v6
ilumos Aug 27, 2024
c6f1bfa
Prevent choosing an end date and time earlier than the start
ilumos Aug 27, 2024
69d5947
Prevent choosing a signup open date and time after the event start
ilumos Aug 27, 2024
6df2b52
Prevent choosing a signup close date and time before the signups open
ilumos Aug 27, 2024
ad3e624
Install `vue` v3.4.38 and ``@vitejs/plugin-vue` v5.1.2
ilumos Aug 27, 2024
629f339
Add `vue` alias to Vite config
ilumos Aug 27, 2024
2c8970b
Only mount Vue if there is an element with the ID "app"
ilumos Aug 28, 2024
4df2793
Remove API token as axios sends the request with cookies for auth
ilumos Aug 30, 2024
d689805
Add base URL for axios
ilumos Aug 30, 2024
6d3ab29
Move Vue loading for active games page to dedicated entry point
ilumos Aug 30, 2024
b9a73f1
Update Vue components for active games to Vue 3 composition API
ilumos Aug 30, 2024
4326f9f
Install Moment v2.30.1
ilumos Sep 1, 2024
f6aade3
Update components for fullscreen events list to Vue 3 composition API
ilumos Sep 1, 2024
47491c8
Update components for slides player list to Vue 3 composition API
ilumos Sep 3, 2024
87242e9
Update component for single slide preview to Vue 3 composition API
ilumos Sep 5, 2024
6678a80
Update schedule page to use Vue 3 composition API & FullCalendar v6
ilumos Sep 7, 2024
b59aa3a
Remove styling for external links
ilumos Sep 7, 2024
d48fa83
Re-add copy to clipboard
ilumos Sep 8, 2024
64ad782
Re-add JavaScript for submitting delete forms via link
ilumos Sep 8, 2024
9e13760
Rename deletion JavaScript and add confirmation alert
ilumos Sep 8, 2024
75a80a6
Update fullscreen button component to use Vue 3 composition API
ilumos Sep 8, 2024
0d2d9a8
Add language translations to JavaScript components
ilumos Sep 8, 2024
758cee8
Fix using translations outside of Vue components
ilumos Sep 8, 2024
5a14996
Move imports to top of file
ilumos Sep 8, 2024
861e68f
Move scheduled commands to `routes/console.php`
ilumos Sep 8, 2024
8cf8091
Remove JQuery from achievement image upload
ilumos Sep 10, 2024
d02cff6
Move to `DatabaseTruncation` trait
ilumos Sep 15, 2024
05d85e3
Use `seed` property instead of function and `Artisan` call
ilumos Sep 15, 2024
5701459
Fix deletion confirmation on button partial
ilumos Sep 15, 2024
b55754a
Fix deletion confirmation on button partial
ilumos Sep 15, 2024
d7b5b6a
Remove old deletion confirmation class from forms
ilumos Sep 15, 2024
fcc9ecd
Fix event signup badge classes
ilumos Sep 15, 2024
da48e39
Fix image tests
ilumos Sep 15, 2024
5970df4
Specify port for `chromedriver-linux` for Dusk tests
ilumos Sep 15, 2024
865dbef
Build Vite assets in Dusk GitHub action
ilumos Sep 15, 2024
2fa05ae
Build Vite assets in Dusk GitHub action
ilumos Sep 15, 2024
e99114f
Empty database before creating test data
ilumos Sep 15, 2024
fb29b5e
Revert footer to non-sticky
ilumos Sep 15, 2024
8cd7b8f
Fix navbar toggling on small screens
ilumos Sep 15, 2024
5bca847
Upload page source on Dusk failure
ilumos Sep 15, 2024
014ca2a
Fix artifact name
ilumos Sep 15, 2024
71c0f6e
Save page source for all tests
ilumos Sep 15, 2024
548f195
Use Docker's preferred compose filenames
ilumos Sep 17, 2024
c3edc57
Explicitly set avatar width and height
ilumos Sep 17, 2024
767d81c
Use `switch` instead of `match`
ilumos Sep 17, 2024
ef16c32
Improve date format for games history
ilumos Sep 18, 2024
1e5f683
Include free-to-play games when getting a user's games library
ilumos Sep 18, 2024
caa5b0b
Move profile status to lang strings
ilumos Sep 18, 2024
e8621f8
Remove profile status from attendee list
ilumos Sep 18, 2024
ecc55f9
Remove alert that user is not attending current LAN
ilumos Sep 18, 2024
61e291d
Move LANs attended to profile header
ilumos Sep 18, 2024
6d8473e
Show "status unknown" by avatar if last update was over 3 minutes ago
ilumos Sep 18, 2024
4859ab0
Remove unused 'description' column from LANs table
ilumos Sep 19, 2024
760e8d5
Add detailed timing info to view event page
ilumos Sep 19, 2024
d69fa48
Show "today" and "tomorrow" when possible
ilumos Sep 19, 2024
df62443
Only show published LANs on user profile
ilumos Sep 20, 2024
2bc035e
Change page title divider to ndash (–) for better readability
ilumos Sep 20, 2024
8702a33
Check if `profile_update_at` is not null before comparing
ilumos Sep 20, 2024
952e86f
Make LAN game vote row match avatar height
ilumos Sep 20, 2024
0df404c
Clarify gameplay history title
ilumos Sep 20, 2024
c5df212
Move script to bottom of form
ilumos Sep 20, 2024
105f183
Change event form to horizontal
ilumos Sep 20, 2024
d2e6430
Change event form to horizontal
ilumos Sep 20, 2024
e945074
Add missing closing div
ilumos Sep 20, 2024
6b07b5c
Move script to end of component
ilumos Sep 20, 2024
fece1c4
Move label for published to left column
ilumos Sep 20, 2024
bb35396
Change LAN form to horizontal
ilumos Sep 20, 2024
75ab8e7
Change LAN form to horizontal
ilumos Sep 20, 2024
2fa52ef
Change achievement form to horizontal
ilumos Sep 20, 2024
b956dbc
Move achievement image below description
ilumos Sep 20, 2024
6e0d0f7
Move fields into reusable components
ilumos Sep 20, 2024
b5bf214
Move javascript into separate file
ilumos Sep 20, 2024
043c1aa
Use reusable components in LAN form
ilumos Sep 20, 2024
b48a079
Move LAN form javascript to separate file
ilumos Sep 20, 2024
d2c6b62
Remove seconds from placeholder on forms
ilumos Sep 20, 2024
2b4f21c
Make allowed IP range form horizontal
ilumos Sep 20, 2024
d676f50
Make guide form horizontal
ilumos Sep 20, 2024
ec26f87
Use wide submit button on navigation link form
ilumos Sep 20, 2024
ec4a790
Move slide form Javascript to separate file
ilumos Sep 20, 2024
70b30ad
Make slide form horizontal
ilumos Sep 20, 2024
a7478d2
Make venue form horizontal
ilumos Sep 20, 2024
df91a68
Make edit image form horizontal
ilumos Sep 20, 2024
fa6a0b1
Remove unused view partial
ilumos Sep 20, 2024
fbc6d4c
Remove unnecessary div around signup button
ilumos Sep 20, 2024
22d3a0e
Change confirmation prompt text
ilumos Sep 20, 2024
1d69c75
Replace role assignment action dropdown with delete button
ilumos Sep 20, 2024
7c9bc1f
Fix Markdown help URL
ilumos Sep 20, 2024
8d3693c
Merge remote-tracking branch 'origin/stable' into develop
ilumos Jan 17, 2026
749f9ff
Add required dev setup steps.
ilumos Jan 17, 2026
19cd9c1
Update PHP extension versions to 8.3.15
ilumos Jan 27, 2026
ee6e70d
Update Composer version to 2.9
ilumos Jan 27, 2026
780570c
WIP: Move from `syntax/steam-api` to `astrotomic/steam-sdk`
ilumos Jan 28, 2026
d174952
Update `zeropingheroes/steam-sdk`. Remove `league/csv`.
ilumos Jan 29, 2026
2ccd412
Update PHP Codesniffer & Code beautifier URL
ilumos Jan 29, 2026
216b0c0
Remove Steam app `type` column. Increase `name` length to 512 charact…
ilumos Jan 29, 2026
71ea812
Move from `syntax/steam-api` to `astrotomic/steam-sdk`
ilumos Jan 29, 2026
7753dbe
Code style
ilumos Jan 29, 2026
9eefd42
Show games even if they are only owned/recently played by 1 user.
ilumos Jan 29, 2026
dff2b74
Order games by playtime before ordering by number of users
ilumos Jan 29, 2026
c079ba0
Use pagination when getting Steam app list
ilumos Jan 31, 2026
6f456c9
Fix argument order
ilumos Jan 31, 2026
bcd12c1
If app name is null, use app ID
ilumos Jan 31, 2026
cdfa305
Update ZPH fork of `Astrotomic/steam-sdk`
ilumos Jan 31, 2026
a448a5b
Fix error "Unable to locate file in Vite manifest"
ilumos Feb 1, 2026
98b2296
Remove LAN description field from factory
ilumos Feb 1, 2026
6342de3
Options dropdown replaced by delete button
ilumos Feb 1, 2026
afce908
Fix race conditions in tests
ilumos Feb 2, 2026
21d6f07
Code style
ilumos Feb 2, 2026
69e71f9
Fix random filename
ilumos Feb 2, 2026
717af40
Fix "stale element reference" error
ilumos Feb 2, 2026
5d4956a
Update Composer packages
ilumos Feb 3, 2026
4a7ad58
Update Node packages
ilumos Feb 3, 2026
78b3365
Update to PHP 8.4 and update Composer packages
ilumos Feb 3, 2026
c9aaeaf
Update Dusk test CI job to PHP 8.4
ilumos Feb 3, 2026
8e62836
Update to Laravel 12
ilumos Feb 3, 2026
ad16440
Update Node packages
ilumos Feb 3, 2026
eff9101
Update Vite config from Laravel 12
ilumos Feb 3, 2026
3871a5c
Update Laravel Dusk CI job to use `actions/setup-node@v6`
ilumos Feb 3, 2026
26656ac
Upload images via web instead of copying to storage directory
ilumos Feb 7, 2026
d3909ec
Wait for checkbox to load
ilumos Feb 7, 2026
6a1be36
Update copyright notices
ilumos Feb 7, 2026
a5708ae
Update `zeropingheroes/steam-sdk` (fork)
ilumos Feb 10, 2026
66758cc
Prepare to cache Steam app image URLs in DB
ilumos Feb 10, 2026
ab43d1f
WIP: Cache Steam app image URLs in DB
ilumos Feb 10, 2026
990d5da
Use app logo from database
ilumos Feb 11, 2026
b4ba7da
If no logo in database, display default Steam app logo overlaid with …
ilumos Feb 11, 2026
7c5d46c
Allow limiting number of apps to update
ilumos Feb 11, 2026
55b0690
Print successful and failed updates
ilumos Feb 11, 2026
9d3bc2e
Fix counting processed apps
ilumos Feb 11, 2026
45531d1
Add `created_at` and `updated_at` timestamps to steam_apps table
ilumos Feb 11, 2026
14415d3
Order apps by last updated (oldest first) and ID (smallest first) to …
ilumos Feb 11, 2026
0cf8062
Fix code style
ilumos Feb 15, 2026
289f9ec
Move to fork of Steam API package
ilumos Feb 26, 2026
d4c6f9d
Respect Steam Store API rate limits
ilumos Mar 5, 2026
d84e2a7
Update to `zeropingheroes/steam-apis` v3
ilumos Mar 5, 2026
93fb1c6
Remove emoji from terminal output
ilumos Mar 5, 2026
01952f1
Increment successful app count
ilumos Mar 5, 2026
2abc135
Change terminal output from error to warning
ilumos Mar 5, 2026
aa919d8
Move text to lang file
ilumos Mar 5, 2026
e93010c
Clarify Steam API rate limits that apply to scheduled commands
ilumos Mar 5, 2026
a16932d
Schedule `UpdateSteamUserAppImages` command
ilumos Mar 5, 2026
ec0d427
If updating images for at least 1 app was successful, return exit code 0
ilumos Mar 5, 2026
b1261d3
Move to FrankenPHP
ilumos Mar 5, 2026
94e4be0
Fix FrankenPHP configuration with Laravel Octane
ilumos Mar 7, 2026
cc16c05
Ignore `steam-api` dir used for API rate limit tracking files
ilumos Mar 7, 2026
f0f059c
Update `.dockerignore`
ilumos Mar 7, 2026
1e8b1e3
Make image rootless. Use custom `entrypoint.sh`.
ilumos Mar 7, 2026
b62fec0
Move `public/storage` symlink creation from entrypoint to Dockerfile
ilumos Mar 7, 2026
aa10baa
Remove `frankenphp-worker.php` from `gitignore`
ilumos Mar 8, 2026
c823589
Simplify setup steps
ilumos Mar 8, 2026
0e0a8ee
Add update steps
ilumos Mar 8, 2026
1bb43a3
Clarify troubleshooting command
ilumos Mar 8, 2026
f1f534f
Add step to back up
ilumos Mar 8, 2026
dcd040d
Add step to back up
ilumos Mar 8, 2026
8ac6a86
Add upgrade steps
ilumos Mar 8, 2026
f431fc0
Move issue reporting steps to bug report issue template
ilumos Mar 8, 2026
e2bc7b6
Add container name
ilumos Mar 8, 2026
db0da30
Remove troubleshooting section
ilumos Mar 8, 2026
609732c
Simplify key generation. Move environment variables into table.
ilumos Mar 8, 2026
fc5c878
Use "Select" instead of "Click"
ilumos Mar 8, 2026
5ea62c6
Remove pre-commit as `digitalpulp/pre-commit-php` is abandoned
ilumos Mar 22, 2026
d4cbda1
Install Laravel Pint for code style checking and linting
ilumos Mar 22, 2026
210f29f
Remove StyleCI badges and links
ilumos Mar 22, 2026
6d14d4c
Fix code style with Laravel Pint
ilumos Mar 22, 2026
826256c
Consistently name GitHub actions and jobs
ilumos Mar 22, 2026
1c144b1
Install `larastan/larastan` for code analysis
ilumos Mar 22, 2026
4dcb6f7
Replace `Carbon::maxValue()` with `CarbonImmutable::endOfTime()`
ilumos Mar 22, 2026
098f782
Use new model creation syntax
ilumos Mar 22, 2026
9a49c5b
Cast limit to integer
ilumos Mar 22, 2026
1f4495c
Pluck in query instead of collection
ilumos Mar 22, 2026
8d968af
Explicitly split query to get user
ilumos Mar 22, 2026
5fd50d9
Remove legacy code from Game resource
ilumos Mar 22, 2026
8cfe894
Remove redundant check
ilumos Mar 22, 2026
a8df917
If no user model then return
ilumos Mar 22, 2026
6bbf49b
Move from `barryvdh/laravel-debugbar` to `fruitcake/laravel-debugbar`
ilumos Mar 22, 2026
ab84608
Fix validation result inversion
ilumos Mar 22, 2026
e2fad1c
Only check if nav link is its own parent for existing nav links
ilumos Mar 22, 2026
d60e3c1
Simplify validation result inversion
ilumos Mar 22, 2026
7cb33df
Remove redundant empty check
ilumos Mar 22, 2026
60c79e9
Initialise arrays
ilumos Mar 22, 2026
ee8f011
Remove unsupported eager loading of Steam app sessions
ilumos Mar 22, 2026
25e52a2
Move avatar URL logic to resource class
ilumos Mar 22, 2026
274b612
Remove redundant indent size for YAML
ilumos Mar 22, 2026
10d6b3a
Install Rector
ilumos Mar 22, 2026
e41f8e7
Add void return type to closures
ilumos Mar 22, 2026
ba09cf9
Use class name instead of string
ilumos Mar 22, 2026
5c83d4c
Change closures to arrow functions
ilumos Mar 22, 2026
f956060
Use shorter null coalescing operator
ilumos Mar 22, 2026
9a38d36
Remove unused exception variable
ilumos Mar 22, 2026
0a7ce7b
Move class properties to constructor
ilumos Mar 22, 2026
7fbba7f
Change null to strict string-defined function call args
ilumos Mar 22, 2026
8cf87be
Upgrade string callback function to first class callable
ilumos Mar 22, 2026
9b921b9
Update test badge
ilumos Mar 22, 2026
cc1a723
Add override attribute to overridden methods
ilumos Mar 22, 2026
1785d03
Remove duplicate array key
ilumos Mar 22, 2026
fb5e85c
Remove recasting of the same type
ilumos Mar 22, 2026
d09029f
Remove initialization with null value from property declaration
ilumos Mar 22, 2026
858d23c
Make if conditions more explicit
ilumos Mar 23, 2026
b680fd3
Use identical comparison for variables of same type
ilumos Mar 23, 2026
5180a7f
Always provide array of Steam IDs
ilumos Mar 23, 2026
a691559
Add empty new line after different-type statements to improve code re…
ilumos Mar 23, 2026
05c0aa4
Use double quotes when string contains single quotes (and vice versa)
ilumos Mar 23, 2026
55d224b
Add new line between new variable assignments
ilumos Mar 23, 2026
4a207b4
Set in_array strict to true when defined on similar type
ilumos Mar 23, 2026
353beee
Rename variables to match class name
ilumos Mar 23, 2026
d896a04
Move statements from else blocks to after if statement
ilumos Mar 23, 2026
8928ee6
Refactor if statement to return statement
ilumos Mar 23, 2026
06ac2d1
Add empty new line after different-type statements to improve code re…
ilumos Mar 23, 2026
c285823
Check if authUser is an instance of user class
ilumos Mar 23, 2026
99669cc
Add model mixins in resource classes
ilumos Mar 23, 2026
a823687
Rename resource classes to have "Resource" suffix
ilumos Mar 24, 2026
47b2ab7
Fix incorrect property case
ilumos Mar 24, 2026
6c00964
Move slide visibility query to scope on model
ilumos Mar 25, 2026
cd4d2f1
Cast published property to bool to match return type
ilumos Mar 25, 2026
7a20b77
Query Steam metadata directly from model
ilumos Mar 25, 2026
e80ea4e
Drop ID property and cast from User model
ilumos Mar 25, 2026
abda1d0
Use array instead of property
ilumos Mar 25, 2026
8e1e015
Add DocBlocks to models for IDEs and PHPStan
ilumos Mar 25, 2026
7a94cbd
Update composer dependencies
ilumos Mar 25, 2026
90db553
Add database, config, and routes directories to PHPStan paths
ilumos Mar 25, 2026
e339332
Update rector configuration
ilumos Mar 25, 2026
bac4acf
Rename parameter to match type
ilumos Mar 25, 2026
a4a73a6
Revert controller variable names to match Laravel route binding
ilumos Apr 6, 2026
0a0fd40
Re-add `config/logging.php` to always log to the configured `LOG_CHAN…
ilumos Apr 6, 2026
1553f0a
Remove `.env.example` as we configure the environment in `zeropingher…
ilumos Apr 6, 2026
8fdd301
Align host and container port to simplify local testing
ilumos Apr 6, 2026
159ffea
Use `docker compose` instead of `docker-compose`
ilumos Apr 6, 2026
71d7480
Add healthcheck to Dockerfile to monitor app availability
ilumos Apr 8, 2026
e3da1f2
Add default avatar for users without an avatar
ilumos Apr 17, 2026
f09516a
Fix extra underline styling with avatar-username component
ilumos Apr 17, 2026
e7f8d82
Remove `ottaviano/faker-gravatar`
ilumos Apr 17, 2026
c078410
Update composer dependencies
ilumos Apr 17, 2026
3e0c9f3
Only update Steam app images daily, as the command takes a long time …
ilumos Apr 17, 2026
97ee900
Fix users showing as playing games even if they have no active sessions
ilumos Apr 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
46 changes: 19 additions & 27 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
/.dockerignore
/.editorconfig
/.env*
/public/storage
/.git*
/.idea*
/.phpstorm.meta.php
/.pre-commit-config.yaml
/.styleci.yml
/.travis.yml
/_ide_helper.php
/Dockerfile
/node_modules
/package-*.json
/phpunit.xml
/phpunit.dusk.xml
/resources/js
/resources/sass
/server.php
/storage/debugbar/*
/storage/framework/cache/data/*
/storage/framework/sessions/*
/storage/framework/testing/*
/storage/framework/views/*
/tests/
/vendor/
/webpack.mix.js
.dockerignore
.editorconfig
.env*
.git*
.idea*
.pre-commit-config.yaml
.styleci.yml
Dockerfile
node_modules
phpunit.dusk.xml
phpunit.xml
public/hot
public/storage
server.php
README.md
CONTRIBUTING.md
storage/*
tests
vendor
2 changes: 0 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,3 @@ trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 4
69 changes: 0 additions & 69 deletions .env.example

This file was deleted.

3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ assignees: ''
<!-- Run `docker images zeropingheroes/lanager` and paste the output -->
<!-- You must be using the LANager Docker image to receive support. -->

**Docker logs**
<!-- Run `docker logs lanager` and paste the output -->

**Bug description**
<!-- Describe the issue you are experiencing -->

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Laravel Dusk
name: Browser Tests

on:
push:
Expand All @@ -11,7 +11,7 @@ on:

jobs:
dusk:
name: Test with Laravel Dusk
name: Run Laravel Dusk
runs-on: ubuntu-latest
env:
APP_NAME: LANager
Expand Down Expand Up @@ -48,13 +48,22 @@ jobs:
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
php-version: '8.4'
extensions: xmlwriter, zip, pdo, pdo_mysql, tokenizer, simplexml, bcmath, fileinfo
ini-values: error_reporting=22527

- name: Install Composer dependencies
run: composer install --optimize-autoloader --no-interaction --no-progress --no-scripts

- name: Setup Node
uses: actions/setup-node@v6

- name: Install Node dependencies
run: npm ci

- name: Build project
run: npm run build

- name: Link Laravel storage directory
run: php artisan storage:link

Expand All @@ -68,7 +77,7 @@ jobs:
run: php artisan dusk:chrome-driver `/opt/google/chrome/chrome --version | cut -d " " -f3 | cut -d "." -f1`

- name: Start Chrome Driver
run: ./vendor/laravel/dusk/bin/chromedriver-linux &
run: ./vendor/laravel/dusk/bin/chromedriver-linux --port=9515 &

- name: Create empty .env file
run: touch .env
Expand All @@ -86,13 +95,20 @@ jobs:
name: browser-screenshots
path: storage/logs/dusk/screenshots

- name: Upload Console Logs
- name: Upload Browser Console Logs
uses: actions/upload-artifact@v4
if: failure()
with:
name: console-logs
path: storage/logs/dusk/console

- name: Upload Page Source
uses: actions/upload-artifact@v4
if: failure()
with:
name: page-source
path: storage/logs/dusk/source

- name: Upload Laravel Log
uses: actions/upload-artifact@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker-image-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:

jobs:
build-and-push-docker-image:
name: Build Docker image and push to Docker hub
name: Build and push
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:

jobs:
build-and-push-docker-image:
name: Build Docker image and push to Docker hub
name: Build and push
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/php-code-style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: PHP Code Style

on: [push]

jobs:
laravel-pint:
name: Run Laravel Pint
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.4]

steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: pint

- name: Run Pint
run: pint

- name: Commit linted files
uses: stefanzweifel/git-auto-commit-action@v6
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ yarn-error.log
/.php-cs-fixer.cache
/storage/*.bucket
/*.tar.gz
/resources/lang/php_*.json
32 changes: 0 additions & 32 deletions .pre-commit-config.yaml

This file was deleted.

81 changes: 62 additions & 19 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM composer:2.7 AS composer2
FROM composer:2.9 AS composer2

# Copy in project code
COPY . /app
Expand All @@ -10,35 +10,78 @@ RUN composer install \
--no-progress \
--no-scripts

FROM trafex/php-nginx:3.6.0 AS base
FROM node:22-alpine AS node22

USER root
WORKDIR /app

# Copy in package manifest
COPY package.json package-lock.json /app/

# Install
RUN npm clean-install && npm cache clean --force

# Copy in project code
COPY . /app/

# Build
RUN npm run build

FROM dunglas/frankenphp:1-php8.4-alpine AS base

# Install PHP extensions
RUN apk --no-cache add php83-zip=8.3.10-r0 \
php83-pdo=8.3.10-r0 \
php83-pdo_mysql=8.3.10-r0 \
php83-simplexml=8.3.10-r0 \
php83-bcmath=8.3.10-r0
RUN install-php-extensions \
pcntl \
zip \
pdo_mysql \
simplexml \
bcmath \
gmp

# Copy in app code and Composer packages from composer2 build stage
COPY --chown=nginx --from=composer2 /app /var/www/lanager
COPY --from=composer2 /app /app

# Copy in built assets from node22 build stage
COPY --from=node22 /app/public/build /app/public/build/

# Copy entry point
COPY docker/entrypoint.sh /app/docker/entrypoint.sh

# Set a username to use in the image
ARG APP_USER=lanager
ARG APP_UID=1000
ARG APP_GID=1000

# Use PHP configuration for production
# Remove default FrankenPHP capabilities
# Create non-root image user and group
# Give the user write access to caddy and Laravel bootstrap directories
# Ensure the entrypoint script is present and executable
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
&& setcap -r /usr/local/bin/frankenphp \
&& addgroup -g "${APP_GID}" "${APP_USER}" \
&& adduser -D -u "${APP_UID}" -G "${APP_USER}" "${APP_USER}" \
&& chown -R "${APP_USER}":"${APP_USER}" /config/caddy /data/caddy /app/bootstrap/cache \
&& chmod -R ug+rwX /app/bootstrap/cache \
&& ln -sfn /app/storage/app/public /app/public/storage \
&& chmod +x /app/docker/entrypoint.sh

RUN chmod -R 777 /var/www/lanager/storage /var/www/lanager/bootstrap/cache && \
ln -s /var/www/lanager/storage/app/public /var/www/lanager/public/storage
# Switch to non-root user
USER ${APP_USER}

WORKDIR /var/www/lanager
HEALTHCHECK --start-period=10s --start-interval=1s --interval=30s --timeout=10s --retries=3 \
CMD curl --insecure --silent --location --show-error --fail http://localhost:8000/up || exit 1

# Change to non-privileged user
USER nobody
ENTRYPOINT ["/app/docker/entrypoint.sh"]
CMD ["php", "artisan", "octane:frankenphp"]

FROM base AS dev

# Temporary switch to root
# Switch to root user
USER root

# Install xdebug
RUN apk --no-cache add php83-pecl-xdebug=3.3.2-r0
# Install xdebug & switch to development PHP configuration
RUN install-php-extensions xdebug \
&& mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"

# Switch back to non-root user
USER nobody
# Switch to non-root user
USER ${APP_USER}
Loading
Loading