Giter Club home page Giter Club logo

moox's Introduction


Moox Logo


PEST Tests Laravel PINT PHP Code Style PHPStan Level 5

TailwindCSS 3 AlpineJS 3 Laravel 11 Laravel Livewire 2

Codacy Code Quality Codacy Coverage Code Climate Maintainability Snyk Security

Renovate Translation status License Slack

Moox Monorepo

Welcome to the Moox project. This is the Moox Monorepo. It is an installable Laravel App meant for development of our Filament Plugins aka Laravel Packages. We are in an early stage of development but there are already some plugins you might consider useful:

Packages

  • Moox Jobs, manage Job Queues, Failed Jobs and Batches in Filament
  • Moox Builder, is our Skeleton Package to create new Filament Plugins

All others are in the making. Stay tuned.

Installation

The Laravel dev app in the root-folder of the Moox Monorepo is made for instant development with Laravel Valet, Laravel Sail or Laragon.

# Create a .env file and adjust to your needs
cp .env.example .env

# Don't forget to create the database according .env

# Install via Composer
composer install

# Migrate and seed
php artisan migrate:fresh --seed

# Use Vite (for Laravel Sail on Windows: do it in Ubuntu, not inside the Sail container)
npm install
npm run dev

Optional things:

# You can create a user then
php artisan make:filament-user

# You can use the custom composer.json
cp _custom/composer.json-example _custom/composer.json

# Run Sail (alternatively start Herd,Laragon or Valet)
./vendor/bin/sail up

# Rebuild the sail config if needed
./vendor/bin/sail down --rmi all -v
php artisan sail:install

# Remove broken symlinks if needed
# switching from Laragon to Sail for example
rm -Rf vendor/mooxphp

The Moox Admin is now available at /moox, e. g. https://moox.test/moox

Custom packages

Our Monorepo is prepared to be a double agent:

  • Develop a private or public project
  • while contributing to the Moox project

This is done by supporting custom packages in the development app of our Monorepo. Sounds interesting? Read on _custom/README.md.

Development

Branching

  • main is the current stable version, branch-protected, auto-commits to all packages, deployed to li
  • feature/... please prefix all feature-branches, create your pull requests directly to main

Use issue-based branches, prefix them with feature/ (e.g. feature/38-welcome-view) for automated tests and code analysis.

Commits

Your commit messages will be merged into Changelog.md, means they become part of the documentation. Please make sure, you

  • start with one of these types
    • Bump = minor version change, major if used as Bump!
    • Clean = deleting old stuff or unused code
    • Deps = changing dependencies
    • Devops = GH and automation
    • Docs = documentation
    • Feat = feature
    • Fix = bugfix
    • Lang = translation
    • Tests = writing tests
    • Wip = work in progress
  • for breaking changes add "!" to any type to craft a major release
  • followed by the shortname of the package, in []
    • All - multiple or all packages
    • Repo - Monorepo things
    • Core
    • Builder
    • Jobs
    • ...
  • reference an issue, linked by issue number, e. g. #138
  • prepare auto-closing the issue by using "Close #138"

Valid examples

  • Wip[Core]: Feature register assets w-i-p #123
  • Fix[All]: Update all packages Close #321
  • Feat[Monorepo]: Update dev app Close #22
  • Bump![ChartComponents]: Major Updates
  • Feat![PackageBuilder]: This will become a major release #23

Read more about conventional commits.

Pull requests

Create a PR to main. Use conventional commits like explained above.

Semver

We use semantic versioning, written like 1.2.3 for

  1. Major releases
  2. Minor releases
  3. Bugfix releases

Visit Semver.org for more information.

Releases

Currently done manually, an automatic release feature is on the way.

Testing

We test Moox using:

Please make sure you use the same tools in VS Code (our VS Code Extension Pack covers this) or do the checks manually before committing to the dev-branch:

  • PHPStan: composer analyse or ./vendor/bin/phpstan analyse, for packages ../../vendor/bin/phpstan analyse
  • Pest: composer test or ./vendor/bin/pest, for packages ../../vendor/bin/pest
  • Coverage: composer test-coverage or ./vendor/bin/pest --coverage, for packages ../../vendor/bin/pest --coverage
  • Pint: composer format or ./vendor/bin/pint, for packages ../../vendor/bin/pint

Contributors

Moox is made by these nice people, and bots ...

adrolli
adrolli
weblate
weblate
wp1111
wp1111
AzGasim
AzGasim
KimSpeer
KimSpeer
mooxbot
mooxbot
laravel-shift
laravel-shift
Kim-the-Diamond
Kim-the-Diamond
FMorlock
FMorlock
janakeks
janakeks
somzoli
somzoli
renovate[bot]
renovate[bot]
dependabot[bot]
dependabot[bot]
github-actions[bot]
github-actions[bot]
comradekingu
comradekingu
milotype
milotype
givx
givx
occtherapist
occtherapist

Contribute

We welcome every contribution! It would be awesome, if you:

  • Create an Issue in the Repo that fits best and add information about the problem or idea. We'll reply within a couple of days.
  • Create a Pull Request in this Monorepo. Please do not PR to our read-only repos, they are not prepared for code changes. Only the monorepo has quality gates and automated tests.
  • Translate Moox using Weblate.
  • Tell other people about Moox or link to us.
  • Consider a donation or sponsorship.

Translation

Moox is translated with Weblate. Of course you can also directly edit the translation files in the packages, but using a full-featured translation platform like Weblate might be more convenient.

Translation status

License

Moox is free Open-Source software licensed under the MIT License.

Some of the projects we depend on are released under a different license. We do our best to make sure that these licenses allow private as well as commercial use and do not impose any restrictions.

If you notice any problem with Moox licensing or any dependency, please mail us at [email protected].

Security

As mentioned above, we use automated code checks and security audits to ensure that our code is free of security vulnerabilities.

Read our Security Policy to learn more about security or report a potential vulnerability. Please DO NOT use the issue tracker for reporting security-related issues.

moox's People

Contributors

adrolli avatar azgasim avatar dependabot[bot] avatar fmorlock avatar github-actions[bot] avatar janakeks avatar kim-the-diamond avatar kimspeer avatar laravel-shift avatar mooxbot avatar renovate[bot] avatar somzoli avatar weblate avatar wp1111 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

Watchers

 avatar  avatar  avatar

moox's Issues

Package Builder

Package Builder Todo List:

Features

All

  • ServiceProvider
  • Configs in /config

Iconset

  • Icons

Database (Full, Data, CRUD)

Components

  • Blade
  • Livewire

Views

  • Blade
  • Livewire
  • ViewComposer

Themes

  • Website
  • Admin

Others

  • Controllers - Path /src/controller -
  • Facades
  • Commands in /src/commands
  • InstallCommand
  • Routes
  • Components
  • Assets
  • Translations
  • Traits
  • Docs
  • Middlewares
  • Broadcast
  • Notifications
  • Mails
  • Exceptions in /src/exceptions
  • Jobs
  • API Connections
  • Contracts
  • Sorting
  • Filter
  • Listing

Tests

  • Unit
  • Feature
  • Surface

Actions

  • Test
  • Analyze
  • Stylefix

Handled by Spatie Package Tools

         ->name('your-package-name')
            ->hasConfigFile()
            ->hasViews()
            ->hasViewComponent('spatie', Alert::class)
            ->hasViewComposer('*', MyViewComposer::class)
            ->sharesDataWithAllViews('downloads', 3)
            ->hasTranslations()
            ->hasAssets()
            ->publishesServiceProvider('MyProviderName')
            ->hasRoute('web')
            ->hasMigration('create_package_tables')
            ->hasCommand(YourCoolPackageCommand::class)
            ->hasInstallCommand(function(InstallCommand $command) {
                $command
                    ->publishConfigFile()
                    ->publishMigrations()
                    ->copyAndRegisterServiceProviderInApp()
                    ->askToStarRepoOnGitHub();
            });

These presets should be available:

  • 1. Full Package - all features
  • 2. Components - Blade and Livewire Components
  • 3. Iconset - Blade SVG Icons');
  • 4. Theme - TailwindCSS Config, Views
  • 5. Module - Admin Panel Module
  • 6. Plugin - Website Plugin
  • 7. Crud - Listing with CRUD-features
  • 8. Block - Editor Blocks
  • 9. Dataset - Static datasets

Package error with latest filament v3.2.63

Hi,

When trying to install this package (composer require moox/jobs) I get the following error.

./composer.json has been updated
Running composer update moox/jobs
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

Problem 1
- invaders-xx/filament-jsoneditor[3.0, ..., 3.1] require illuminate/contracts ^8.74|^9.0|^10.0 -> found illuminate/contracts[v8.74.0, ..., v8.83.27, v9.0.0, ..., v9.52.16, v10.0.0, ..., v10.48.4] but these were not loaded, likely because it conflicts with another require.
- moox/jobs[0.0.1, ..., 0.0.5, 1.0.0, ..., 1.0.3, 2.0.0, ..., 2.0.9] require invaders-xx/filament-jsoneditor ^3.0 -> satisfiable by invaders-xx/filament-jsoneditor[3.0, 3.1].
- Root composer.json requires moox/jobs * -> satisfiable by moox/jobs[0.0.1, ..., 0.0.5, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 2.0.0, ..., 2.0.9].

You can also try re-running composer require with an explicit version constraint, e.g. "composer require moox/jobs:*" to figure out if any version is installable, or "composer require moox/jobs:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

My composer.json (filament is version 3.2.63 at this moment)
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"keywords": ["laravel", "framework"],
"license": "MIT",
"require": {
"php": "^8.2",
"filament/filament": "^3.2",
"filament/tables": "^3.2",
"guzzlehttp/guzzle": "^7.8",
"husam-tariq/filament-database-schedule": "dtconnector-dev",
"jschaedl/iban-validation": "^2.4",
"laravel/framework": "^11.0",
"laravel/tinker": "^2.9",
"league/flysystem-sftp-v3": "^3.26",
"monolog/monolog": "^3.5",
"motze92/office365-mail": "^3.1",
"stancl/tenancy": "^3.8",
"thiagoprz/eloquent-composite-key": "^1.0"
},

Thanks & Kr,
Olivier

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated

Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in C:\Users\alfdr\GitHub\tallui\config\tallui.php on line 15 - Problem: custom views cannot be empty. If empty it generates an empty button, what is not perfect at all. Maybe put "example" to env. That will fix the error and get the button working too...

  • CUSTOM_VIEWS = example
  • put that in all example-envs ...
  • change content of example.blade.php and custom.blade.php to guide the dev better ...

Smoothen Renovate

Renovate is tooo aggressive picking up the minor patch releases mostly from the composer lock file. Either stop him to read the lock-file (npm too) and test with only the Json-files or find rules to defer the PRs for minor fix versions.

See https://www.mend.io/renovate-free/

Build components

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.


Warning

Renovate failed to look up the following dependencies: Failed to look up packagist package moox/page, Failed to look up packagist package moox/redis-model.

Files affected: composer.json


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

composer
composer.json
  • laravel/framework ^11.0
  • laravel/tinker ^2.8
  • moox/builder *
  • moox/jobs *
  • moox/page *
  • moox/user *
  • moox/audit *
  • moox/sync *
  • moox/redis-model *
  • wikimedia/composer-merge-plugin ^2.1
  • fakerphp/faker ^1.23.1
  • laravel/pint ^1.0
  • laravel/sail ^1.26
  • mockery/mockery ^1.6.6
  • nunomaduro/collision ^8.0
  • larastan/larastan ^2.6
  • pestphp/pest ^2.0
  • pestphp/pest-plugin-laravel ^2.0
  • pestphp/pest-plugin-livewire ^2.0
  • phpstan/extension-installer ^1.1
  • phpstan/phpstan ^1.10
  • phpstan/phpstan-deprecation-rules ^1.0
  • phpstan/phpstan-phpunit ^1.0
  • phpunit/phpunit ^10.0
  • spatie/laravel-ignition ^2.3
  • spatie/laravel-ray ^1.33
packages/audit/composer.json
  • moox/core *
  • spatie/laravel-activitylog ^4.0
packages/builder/composer.json
  • moox/core *
packages/core/composer.json
  • php ^8.2.0
  • spatie/laravel-package-tools ^1.13.0
  • laravel/framework ^10.0|^11.0
  • filament/filament ^3.2
  • pharaonic/laravel-readable ^1.0.5
packages/jobs/composer.json
  • moox/core *
packages/page/composer.json
  • moox/core *
packages/redis-model/composer.json
  • moox/core *
packages/sync/composer.json
  • moox/core *
packages/user/composer.json
  • moox/core *
  • bezhansalleh/filament-shield ^3.0
  • stechstudio/filament-impersonate ^3.5
  • jeffgreco13/filament-breezy ^2.2
  • awcodes/filament-gravatar ^2.0
docker-compose
docker-compose.yml
  • mysql/mysql-server 8.0
github-actions
.github/workflows/codacy-coverage.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
  • codacy/codacy-coverage-reporter-action v1
.github/workflows/code-climate.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
  • paambaati/codeclimate-action v5.0.0
.github/workflows/contributions.yml
  • akhilmhdh/contributors-readme-action v2.3.6
.github/workflows/monorepo-split-packages.yml
  • actions/checkout v4
  • symplify/monorepo-split-github-action v2.3.0
.github/workflows/pest.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
.github/workflows/phpstan.yml
  • actions/checkout v4
  • shivammathur/setup-php v2
.github/workflows/pint.yml
  • actions/checkout v4
  • aglipanci/laravel-pint-action 2.3.1
  • stefanzweifel/git-auto-commit-action v5
.github/workflows/update-changelog.yml
  • actions/checkout v4
  • stefanzweifel/changelog-updater-action v1
  • stefanzweifel/git-auto-commit-action v5
npm
package.json
  • @alpinejs/focus ^3.10.5
  • @tailwindcss/forms ^0.5.2
  • @tailwindcss/typography ^0.5.0
  • alpinejs ^3.0.6
  • autoprefixer ^10.4.7
  • axios ^1.0.0
  • laravel-vite-plugin ^1.0.0
  • lodash ^4.17.19
  • postcss ^8.4.14
  • tailwindcss ^3.1.0
  • vite ^5.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

Users, Auth

  • Sicherheitsfrage(n) oder z. B. Geburtsdatum - auch bei Zurücksetzen Mail
  • Anmeldelink per Mail
  • 3FA
  • Datenschutz - automatische Löschung inaktiver Konten nach XX Tagen, Mail an Kunde zuvor - Grace period (Deaktivierung)
  • See Auth.md and users docs

Make a nice welcome view

Change the dev apps welcome view to match with TallUI. Create some sub-views to show our components.

Shift or Rector

Add a shifty plan and test for shifting packages. Otherwise, test Rector:

"require-dev": {
    "driftingly/rector-laravel": "^0.???",
    "rector/rector": "^0.???",

Testing

Badges

Make Builder-packages compatible to Codespaces

As Github Codespaces seems not to support remote.origin.url, we need to make this optional in configure.php.

If remote.origin.url is Null we cannot prefill these values from Git:

  • $usernameGuess
  • $authorUsername
  • $vendorName
  • $vendorSlug
  • $vendorNamespace

Instead, we can probably use own values like "Usetall" ...

PSR php Extension, currently no tests on Windows

Currently changed:

  matrix:
    os: [ubuntu-latest, windows-latest]

instead of https://github.com/mooxphp/moox/blob/e3f120155349acfae2a1f376d70a932c2a8bf3b2/.github/workflows/pest.yml#L22C1-L23C28

because of laravel/framework#46165 and me being too lazy to split the non-existing tests for Windows.

and this does not play well with windows

  - name: Remove PHP-PSR Extension
    run: |
      sudo apt remove php8.2-psr

Removing PSR ext is also done in codacy, code climate, and phpstan.

Probably resolved with Laravel 11.

Collision V8

Renovate wants us to update to Collision V8, but that will need to wait for Laravel 11.

Show and test l18n

  • Add the language switcher in demo to show and test the localization features.

Use Weblate

  • Translation for all packages (form-elements from json to php)
  • Remove the screenshots
  • Render components with language switcher
  • Link to the components from Weblate's explanation
  • Fill gaps using libretranslate.com

Housekeeping and documentation

  • Save the icons, dev-components, docs and other stuff
  • Add docs how to debug (prior to opening an issue)
  • Add dev docs from PSD and temp-MDs (next) like
    • Branching
    • Deployment
    • Versioning
    • Custom (V2)

Commits, Versions and Changelogs

Automate, start first tags, release to Packagist

Readme:
Monorepo - no package
All - all packages
Multi - some packages
or specific packages like...
Builder
Blog
Pages

Iconsets

  • Rebuild icons-package with Workflows, add to builder?
  • Recap, then build all icon packages

Custom Feature V2

Custom feature is the ability to add own code to the dev app here in the Monorepo. Currently this means

  • cloning some packages in _custom
  • add to _custom/composer.json

that will make problems when testing, analyzing, using the App. Views, components and whatever ships with this package needs to be wired - route and blade include - and will fail when the package is missing.

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.