feat: initial alpha release

This commit represents the complete foundational codebase for Nimbus Alpha, a Laravel package that provides an integrated, in-browser API client with automatic schema discovery from validation rules.

IMPORTANT: This is a squashed commit representing the culmination of extensive development, refactoring, and architectural iterations. All previous commit history has been intentionally removed to provide a clean foundation for the public alpha release.

The development of Nimbus involved:
- Multiple architectural refactorings
- Significant structural changes
- Experimental approaches that were later abandoned
- Learning iterations on the core concept
- Migration between different design patterns

This messy history would:
- Make git blame confusing and unhelpful
- Obscure the actual intent behind current implementation
- Create noise when reviewing changes
- Reference deleted or refactored code

If git blame brought you to this commit, it means you're looking at code that was part of the initial alpha release. Here's what to do:

1. Check Current Documentation
   - See `/wiki/contribution-guide/README.md` for architecture details
   - Review the specific module's README if available
   - Look for inline comments explaining the reasoning

2. Look for Related Code
   - Check other files in the same module
   - Look for tests that demonstrate intended behavior
   - Review interfaces and contracts

3. Context Matters
   - This code may have been updated since alpha
   - Check git log for subsequent changes to this file
   - Look for related issues or PRs on GitHub

---

This commit marks the beginning of Nimbus's public journey. All future
commits will build upon this foundation with clear, traceable history.

Thank you for using or contributing to Nimbus!
This commit is contained in:
Mazen Touati
2025-10-20 00:35:07 +02:00
commit c2aa6895d6
570 changed files with 54298 additions and 0 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
github: sunchayn

58
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@@ -0,0 +1,58 @@
name: Bug Report
description: Report an Issue or Bug with Nimbus
title: '[Bug]: '
labels: ['bug']
body:
- type: markdown
attributes:
value: |
We're sorry to hear you're experiencing an issue with Nimbus. Please help us resolve it by providing the following details.
- type: textarea
id: what-happened
attributes:
label: What happened?
description: What did you expect to happen?
placeholder: I encountered an issue when I tried X, and it resulted in Y.
validations:
required: true
- type: textarea
id: how-to-reproduce
attributes:
label: How to reproduce the bug
description: Please provide steps to reproduce the issue, including any configuration details or settings.
placeholder: 'Step 1: Do this. Step 2: Do that. Then the issue occurred.'
validations:
required: true
- type: input
id: version
attributes:
label: Nimbus Version
description: What version of Nimbus are you using? Please be as specific as possible.
placeholder: v1.0.0
validations:
required: true
- type: input
id: browser
attributes:
label: Browser
description: What browser (and version) are you using? (e.g., Chrome 112.0.0)
placeholder: Chrome 112.0.0
validations:
required: true
- type: dropdown
id: operating-systems
attributes:
label: Operating System(s)
description: Select the operating systems where the issue occurs.
multiple: true
options:
- macOS
- Windows
- Linux
- type: textarea
id: notes
attributes:
label: Additional Notes
description: Use this field to provide any other notes that might be relevant to the issue.
validations:
required: false

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Ask a question
url: https://github.com/sunchayn/nimbus/discussions/new?category=q-a
about: Ask the community for help
- name: Request a feature
url: https://github.com/sunchayn/nimbus/discussions/new?category=ideas
about: Share ideas for new features

72
.github/workflows/code-fix.yml vendored Normal file
View File

@@ -0,0 +1,72 @@
name: fix-code-issues
on:
push:
paths:
- '**.php'
- '**.js'
- '**.vue'
- '**.ts'
- '**.vue'
- 'package.json'
- 'composer.json'
permissions:
contents: write
jobs:
style-fix:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
if: ${{ !env.ACT }}
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'npm'
- name: Install npm dependencies
run: npm ci
- name: Fix js styles if Eslint passes
run: npm run style:fix
- name: Commit changes
if: ${{ !env.ACT }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "style: apply TS style fixes"
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
coverage: none
- name: Install composer dependencies
uses: ramsey/composer-install@v3
- name: Rector
run: composer rector
- name: Commit changes
if: ${{ !env.ACT }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "refactor: apply rector"
- name: Fix php styles
run: composer style:fix
- name: Commit changes
if: ${{ !env.ACT }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "style: apply php style fixes"

32
.github/workflows/js-tests.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: run-js-tests
on:
push:
paths:
- '**.ts'
- '**.js'
- '.github/workflows/js-tests.yml'
- 'package.json'
- 'package-lock.json'
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
if: ${{ !env.ACT }}
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm run test

66
.github/workflows/php-tests.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: run-php-tests
on:
push:
paths:
- '**.php'
- '.github/workflows/php-tests.yml'
- '../../tests/phpunit.xml.dist'
- 'composer.json'
- 'composer.lock'
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 5
strategy:
fail-fast: true
matrix:
php: [8.4, 8.3, 8.2]
laravel: [12, 11, 10]
name: P${{ matrix.php }} - Laravel ${{ matrix.laravel }}
steps:
- name: Checkout code
if: ${{ !env.ACT }}
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: curl, mbstring, pcntl, intl, fileinfo, sodium
coverage: pcov
- name: Cache Composer dependencies
uses: actions/cache@v3
with:
path: vendor
key: composer-${{ matrix.php }}-L${{ matrix.laravel }}-${{ hashFiles('composer.lock') }}
restore-keys: |
composer-${{ matrix.php }}-L${{ matrix.laravel }}
composer-${{ matrix.php }}
- name: Install dependencies
run: |
composer switch l:${{ matrix.laravel }} -- -- --no-interaction --no-progress --ansi
composer dump-autoload --optimize
- name: Execute tests with coverage
if: matrix.php == '8.3' && matrix.laravel == 12
run: composer test:coverage-ci
- name: Execute tests
if: matrix.php != '8.3' || matrix.laravel != 12
run: composer test:parallel
- name: Upload coverage reports to Codecov
if: matrix.php == '8.3' && matrix.laravel == 12
uses: codecov/codecov-action@v4
with:
file: ./build/coverage.xml
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

32
.github/workflows/phpstan.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: phpstan
on:
push:
paths:
- '**.php'
- '../../tools/phpstan/phpstan.neon.dist'
- '.github/workflows/phpstan.yml'
jobs:
phpstan:
name: phpstan
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
if: ${{ !env.ACT }}
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
coverage: none
- name: Install composer dependencies
uses: ramsey/composer-install@v3
- name: Run PHPStan
run: composer phpstan

32
.github/workflows/update-changelog.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: 'update-changelog'
on:
release:
types: [released]
permissions:
contents: write
jobs:
update:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: base
- name: Update Changelog
uses: stefanzweifel/changelog-updater-action@v1
with:
latest-version: ${{ github.event.release.name }}
release-notes: ${{ github.event.release.body }}
- name: Commit updated CHANGELOG
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: base
commit_message: "chore: update `CHANGELOG`"
file_pattern: CHANGELOG.md