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:
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
github: sunchayn
|
||||
58
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
58
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal 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
8
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal 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
72
.github/workflows/code-fix.yml
vendored
Normal 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
32
.github/workflows/js-tests.yml
vendored
Normal 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
66
.github/workflows/php-tests.yml
vendored
Normal 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
32
.github/workflows/phpstan.yml
vendored
Normal 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
32
.github/workflows/update-changelog.yml
vendored
Normal 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
|
||||
Reference in New Issue
Block a user