Skip to content

Commit edfc845

Browse files
committed
feat: Laravel 12 bootstrap (composer create-project)
Per INITIALIZE.md step 1: ran `composer create-project laravel/laravel . "^12"` to land the framework skeleton. Laravel 12 ships with PHP 8.2+ support, Vite + Tailwind asset pipeline, PHPUnit + Mockery for tests, Pint for lint. Pest comes later (INITIALIZE.md step 6). composer.json metadata replaced with Simtabi values: name: simtabi/get-installer-admin authors: Simtabi LLC <opensource@simtabi.com> support: github.com/simtabi/get-installer-admin Laravel's `.gitignore` was overwritten by the Simtabi-conventions one already in this commit; merged-in content covers vendor/, node_modules/, public/build/, .env, storage/*.key, and the local override patterns (`.claude/settings.local.json`). CI updated: - Removed the PHPStan step (not yet installed; INITIALIZE.md step 6 covers that) - Removed the Pest step + added PHPUnit (Laravel 12 default test framework; Pest plugin moves us to it in step 6) - Added .env + APP_KEY generation steps - Switched node job to `npm ci + npm run build` (matches Laravel 12's Vite default; pnpm switch happens later) PHPUnit smoke test confirmed locally: 2/2 tests pass. Next steps still tracked in INITIALIZE.md: Passport (step 2), Inertia + React + Tailwind (step 3), multi-tenancy (step 4), OpenAPI validator wiring (step 5), Pest swap (step 6).
1 parent e496c07 commit edfc845

54 files changed

Lines changed: 10679 additions & 18 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
APP_NAME=Laravel
2+
APP_ENV=local
3+
APP_KEY=
4+
APP_DEBUG=true
5+
APP_URL=http://localhost
6+
7+
APP_LOCALE=en
8+
APP_FALLBACK_LOCALE=en
9+
APP_FAKER_LOCALE=en_US
10+
11+
APP_MAINTENANCE_DRIVER=file
12+
# APP_MAINTENANCE_STORE=database
13+
14+
# PHP_CLI_SERVER_WORKERS=4
15+
16+
BCRYPT_ROUNDS=12
17+
18+
LOG_CHANNEL=stack
19+
LOG_STACK=single
20+
LOG_DEPRECATIONS_CHANNEL=null
21+
LOG_LEVEL=debug
22+
23+
DB_CONNECTION=sqlite
24+
# DB_HOST=127.0.0.1
25+
# DB_PORT=3306
26+
# DB_DATABASE=laravel
27+
# DB_USERNAME=root
28+
# DB_PASSWORD=
29+
30+
SESSION_DRIVER=database
31+
SESSION_LIFETIME=120
32+
SESSION_ENCRYPT=false
33+
SESSION_PATH=/
34+
SESSION_DOMAIN=null
35+
36+
BROADCAST_CONNECTION=log
37+
FILESYSTEM_DISK=local
38+
QUEUE_CONNECTION=database
39+
40+
CACHE_STORE=database
41+
# CACHE_PREFIX=
42+
43+
MEMCACHED_HOST=127.0.0.1
44+
45+
REDIS_CLIENT=phpredis
46+
REDIS_HOST=127.0.0.1
47+
REDIS_PASSWORD=null
48+
REDIS_PORT=6379
49+
50+
MAIL_MAILER=log
51+
MAIL_SCHEME=null
52+
MAIL_HOST=127.0.0.1
53+
MAIL_PORT=2525
54+
MAIL_USERNAME=null
55+
MAIL_PASSWORD=null
56+
MAIL_FROM_ADDRESS="hello@example.com"
57+
MAIL_FROM_NAME="${APP_NAME}"
58+
59+
AWS_ACCESS_KEY_ID=
60+
AWS_SECRET_ACCESS_KEY=
61+
AWS_DEFAULT_REGION=us-east-1
62+
AWS_BUCKET=
63+
AWS_USE_PATH_STYLE_ENDPOINT=false
64+
65+
VITE_APP_NAME="${APP_NAME}"

.gitattributes

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
* text=auto eol=lf
2+
3+
*.blade.php diff=html
4+
*.css diff=css
5+
*.html diff=html
6+
*.md diff=markdown
7+
*.php diff=php
8+
9+
/.github export-ignore
10+
CHANGELOG.md export-ignore
11+
.styleci.yml export-ignore

.github/workflows/ci.yml

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,17 @@ jobs:
5151
if: steps.precheck.outputs.skip == 'false'
5252
run: ./vendor/bin/pint --test
5353

54-
- name: PHPStan (types)
54+
- name: Copy .env
5555
if: steps.precheck.outputs.skip == 'false'
56-
run: ./vendor/bin/phpstan analyse --no-progress
56+
run: cp .env.example .env
5757

58-
- name: Pest (tests)
58+
- name: APP_KEY
5959
if: steps.precheck.outputs.skip == 'false'
60-
run: ./vendor/bin/pest
60+
run: php artisan key:generate
61+
62+
- name: PHPUnit (tests)
63+
if: steps.precheck.outputs.skip == 'false'
64+
run: ./vendor/bin/phpunit
6165

6266
node:
6367
name: node 22 · assets
@@ -75,25 +79,14 @@ jobs:
7579
echo "skip=false" >> "$GITHUB_OUTPUT"
7680
fi
7781
78-
- uses: pnpm/action-setup@v4
79-
if: steps.precheck.outputs.skip == 'false'
80-
with:
81-
version: 9
82-
8382
- uses: actions/setup-node@v6
8483
if: steps.precheck.outputs.skip == 'false'
8584
with:
8685
node-version: "22"
87-
cache: pnpm
88-
89-
- run: pnpm install --frozen-lockfile
90-
if: steps.precheck.outputs.skip == 'false'
91-
92-
- run: pnpm lint
93-
if: steps.precheck.outputs.skip == 'false'
86+
cache: npm
9487

95-
- run: pnpm typecheck
88+
- run: npm ci
9689
if: steps.precheck.outputs.skip == 'false'
9790

98-
- run: pnpm test
91+
- run: npm run build
9992
if: steps.precheck.outputs.skip == 'false'
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
abstract class Controller
6+
{
7+
//
8+
}

app/Models/User.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
// use Illuminate\Contracts\Auth\MustVerifyEmail;
6+
use Database\Factories\UserFactory;
7+
use Illuminate\Database\Eloquent\Factories\HasFactory;
8+
use Illuminate\Foundation\Auth\User as Authenticatable;
9+
use Illuminate\Notifications\Notifiable;
10+
11+
class User extends Authenticatable
12+
{
13+
/** @use HasFactory<UserFactory> */
14+
use HasFactory, Notifiable;
15+
16+
/**
17+
* The attributes that are mass assignable.
18+
*
19+
* @var list<string>
20+
*/
21+
protected $fillable = [
22+
'name',
23+
'email',
24+
'password',
25+
];
26+
27+
/**
28+
* The attributes that should be hidden for serialization.
29+
*
30+
* @var list<string>
31+
*/
32+
protected $hidden = [
33+
'password',
34+
'remember_token',
35+
];
36+
37+
/**
38+
* Get the attributes that should be cast.
39+
*
40+
* @return array<string, string>
41+
*/
42+
protected function casts(): array
43+
{
44+
return [
45+
'email_verified_at' => 'datetime',
46+
'password' => 'hashed',
47+
];
48+
}
49+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace App\Providers;
4+
5+
use Illuminate\Support\ServiceProvider;
6+
7+
class AppServiceProvider extends ServiceProvider
8+
{
9+
/**
10+
* Register any application services.
11+
*/
12+
public function register(): void
13+
{
14+
//
15+
}
16+
17+
/**
18+
* Bootstrap any application services.
19+
*/
20+
public function boot(): void
21+
{
22+
//
23+
}
24+
}

artisan

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env php
2+
<?php
3+
4+
use Illuminate\Foundation\Application;
5+
use Symfony\Component\Console\Input\ArgvInput;
6+
7+
define('LARAVEL_START', microtime(true));
8+
9+
// Register the Composer autoloader...
10+
require __DIR__.'/vendor/autoload.php';
11+
12+
// Bootstrap Laravel and handle the command...
13+
/** @var Application $app */
14+
$app = require_once __DIR__.'/bootstrap/app.php';
15+
16+
$status = $app->handleCommand(new ArgvInput);
17+
18+
exit($status);

bootstrap/app.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
use Illuminate\Foundation\Application;
4+
use Illuminate\Foundation\Configuration\Exceptions;
5+
use Illuminate\Foundation\Configuration\Middleware;
6+
7+
return Application::configure(basePath: dirname(__DIR__))
8+
->withRouting(
9+
web: __DIR__.'/../routes/web.php',
10+
commands: __DIR__.'/../routes/console.php',
11+
health: '/up',
12+
)
13+
->withMiddleware(function (Middleware $middleware): void {
14+
//
15+
})
16+
->withExceptions(function (Exceptions $exceptions): void {
17+
//
18+
})->create();

bootstrap/cache/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*
2+
!.gitignore

bootstrap/providers.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
use App\Providers\AppServiceProvider;
4+
5+
return [
6+
AppServiceProvider::class,
7+
];

0 commit comments

Comments
 (0)