About me Freek Van der Herten Partner & developer at Spatie - - PowerPoint PPT Presentation

about me
SMART_READER_LITE
LIVE PREVIEW

About me Freek Van der Herten Partner & developer at Spatie - - PowerPoint PPT Presentation

About me Freek Van der Herten Partner & developer at Spatie @freekmurze freek.dev flareapp.io ohdear.app Open source stats 250 packages on Packagist 50,000,000 total downloads 3 000,000 downloads a month


slide-1
SLIDE 1
slide-2
SLIDE 2

About me

Freek Van der Herten Partner & developer at Spatie @freekmurze freek.dev flareapp.io

  • hdear.app
slide-3
SLIDE 3

Open source stats

± 250 packages on Packagist ± 50,000,000 total downloads ± 3 000,000 downloads a month spatie.be/open-source/packages

slide-4
SLIDE 4

Highlights from the Flare codebase

slide-5
SLIDE 5

A way to structure a large Laravel app

slide-6
SLIDE 6

Take a look at the Flare codebase Not a sales talk Techniques you can use in your own projects Opinionated

slide-7
SLIDE 7

Short walkthrough of the UI Domains Inertia / React / TypeScript

slide-8
SLIDE 8

Let's take a look at Flare

slide-9
SLIDE 9

Using domains

slide-10
SLIDE 10

Using domains

Term taken from DDD A sphere of knowledge Grouping code Larger projects

slide-11
SLIDE 11

Refactor to domains

app/ ├── Models/ │ ├── User.php │ ├── Team.php │ └── Project.php ├── Mails/ │ ├── Welcome.php │ ├── InvitedToTeam.php │ └── ApiKeyRegenerated.php └── Events/ ├── UserDeleted.php └── Project.php

slide-12
SLIDE 12

Refactor to domains

app/ └── Domain/ ├── Team └── Project

slide-13
SLIDE 13

Show me the code

slide-14
SLIDE 14

Front end

slide-15
SLIDE 15

Front end

“I strongly believe JavaScript is a requirement for excellent user

  • experiences. Not good experiences, excellent experiences.”

—Seb

slide-16
SLIDE 16

Front end: JavaScript

Inertia Built by Jonathan Reinink Replace Blade by React (or Vue or whatever) Makes server client communication seamless No full pages refreshes

slide-17
SLIDE 17

public function index(Team $team) { return view('team.settings', collect('team')); }

slide-18
SLIDE 18

public function index(Team $team) { return inertia()->render('team.settings', collect('team')); }

slide-19
SLIDE 19

Show me!

slide-20
SLIDE 20

In closing

slide-21
SLIDE 21

Using domains

stitcher.io/blog/laravel-beyond-crud-01-domain-oriented-laravel freek.dev/1371-refactoring-to-actions freek.dev/1433-supercharging-common-controllers

slide-22
SLIDE 22

Front end

inertiajs.com typescriptlang.org freek.dev/1391-how-to-handle-front-end-authorization-using- laravel-inertia-and-typescript

slide-23
SLIDE 23

Thank you!

speakerdeck.com/freekmurze/highlights-flare-codebase spatie.be/open-source freek.dev flareapp.io

  • hdear.app