Giter Club home page Giter Club logo

artisan.page's Introduction

Sponsor Me

๐Ÿ‘‹ Oh, hey!

I'm James Brooks, software engineer at Laravel, founder of Checkmango and public speaker.

Now

  • Building Cachet, the open-source status page system. Acquired in 2018, I purchased Cachet back in August 2023. We're now working on 3.x.
  • The Laravel Artisan Cheatsheet. A resource for Laravel developers to learn more about Artisan commands.
  • Co-organiser of the PHP Stoke meet-up in Stoke-on-Trent.
  • Founder of Checkmango, a full-stack A/B testing platform. I'm passionate about making the web a better place, and I'm always looking for new ways to do so. If you're interested in learning more about what I'm working on, don't hesitate to reach out!

artisan.page's People

Contributors

ash-jc-allen avatar clemblanco avatar dependabot[bot] avatar driesvints avatar gabbanaesteban avatar github-actions[bot] avatar izshreyansh avatar jbrooksuk avatar kevinbatdorf avatar mflor avatar naimsolong avatar stylecibot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

artisan.page's Issues

Package endpoints

I think it'd be really cool if there were additional endpoints:

  • /10.x/laravel/nova to view the commands for Laravel Nova on Laravel 10.x
  • /10.x/packages to view all packages on 10.x

Create accordion H2, navigation left

Hello,

A small recommendation to improve the user interface is to add an accordion at the h2 level. When all the categories are open on the left, you need to scroll to the bottom to search for what you want.

<h2 class="text-xl font-bold text-gray-900 dark:text-gray-500 snap-start" data-v-inspector="components/ArtisanBrowser.vue:12:11"> Commands <span class="text-xs text-gray-500 dark:text-gray-200" data-v-inspector="components/ArtisanBrowser.vue:14:13"> (214) </span></h2>

image
image

-- Exemple result :

image

Add api endpoints

Have you though about adding api endpoints that show available commands and descriptions?

I think if you upgrade to nuxt 3 it's built in (maybe even in nuxt 2, I just don't know).

https://v3.nuxtjs.org/guide/features/server-routes

It could then be consumed by something like Alfred or Raycast. I wrote a Forge Raycast extension and was thinking to show available artisan commands by Laravel version that can execute via the site command endpoint.

I thought about getting the commands from the server like the build command here does, but that might be too intrusive, while an API would be perfect (or I do both and have the former be opt in).

Monitor package updates with dependabot

For an enhancement if #9 merges in, you could remove the manifest file and add a composer.json file, and set up dependabot to auto run the build process when a package makes a release (I think dependabot triggers action, but not 100% sure). That way you won't have to monitor any changes, and only need to update the supported packages/ laravel versions as needed.

It might also help the build run faster as I don't think composer is currently being cached since there is no lock file.

I'm happy to implement this if you'd like. Would be good practice for me.

Versioning

Is there going to be some sort of versioning, so we know which version of LV a command is supported on?

Add sub-command navigation.

For example, when selecting "php artisan make:xxx," every time you want to switch to another "make" command, you have to scroll back to the top of the screen, which is a poor user experience. I suggest adding a floating secondary navigation on the right side, specifically for the sub-commands under "make."

Build packages per version

The manifest.json file should specify which packages should be installed for each version of Laravel. For example, Laravel Pulse should not even be attempted for < 10.x as it was never supported.

Dynamic version tracking

If you remember the api variety I made, I added some updates to the workflow job to dynamically fetch Laravel versions. This way the repo is (hopefully) future proof when new Laravel versions are released. It also manages the PHP dependency.

The code looks like:

curl -s https://packagist.org/packages/laravel/laravel.json \
| jq -r '.package.versions[] | select(.require.php != null) | select(.version_normalized != null) | .version_normalized, .require.php' \
| sed -e '/dev/,+1d' -e '1~2 s/\..*//' -e '2~2 s/|.*$//' -e 's/[^0-9]*//' \
| cut -f1,2 -d'.' \
| awk 'NR%2{printf "%s ",$0;next;}1' \
| sort -Vru -k1,1 \
| sed '/^5 /d' \
| jq -Rcn '[inputs | split(" ") | {v:.[0], php:.[1]}]' \
| tee /tmp/versions.json
echo "matrix=$(cat /tmp/versions.json)" >> "$GITHUB_OUTPUT"

You then can get that output to use in the matrix strategy

strategy:
    matrix:
        laravel: ${{ fromJson(needs.fetch_laravel_versions.outputs.matrix) }}

Workflow: https://github.com/KevinBatdorf/artisan-api/blob/main/.github/workflows/generate-commands.yml#L8
Example workflow run: https://github.com/KevinBatdorf/artisan-api/actions/runs/4755840332

I could probably PR this if you'd like, or otherwise maybe you want to customize it, etc feel free!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.