Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[*.{js,ts,css}]
indent_size = 2

[docker-compose.yml]
indent_size = 4
75 changes: 75 additions & 0 deletions .env.behat
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
APP_NAME=hops-web
VITE_APP_NAME=hops-web
APP_ENV=local
APP_KEY=base64:sCsJw8z+d/4ymp0OvzSip2h4Vp2hZZhpV2uOxgTqP94=
APP_DEBUG=true
APP_DOMAIN=hops-web.blumilk.local.env
APP_URL=https://hops-web.blumilk.local.env

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=sqlite
DB_DATABASE=database/database.sqlite
# DB_HOST=hops-web-db-dev
# DB_PORT=5432
# DB_DATABASE=hops-web
# DB_USERNAME=hops-web
# DB_PASSWORD=password
# DB_ROOT_PASSWORD=example

SESSION_DRIVER=redis
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=redis

CACHE_STORE=redis
CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=predis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=60852

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

# DOCKER
DOCKER_APP_HOST_PORT=60851
DOCKER_DATABASE_HOST_PORT=60853
DOCKER_MAILPIT_DASHBOARD_HOST_PORT=60854
DOCKER_REDIS_HOST_PORT=60852
DOCKER_INSTALL_XDEBUG=true

DOCKER_HOST_USER_ID=1000

VITE_DEV_SERVER_DOCKER_HOST_NAME=hops-web-vite-dev-server.blumilk.local.env
16 changes: 16 additions & 0 deletions .env.ci
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
APP_NAME=hops-web
APP_ENV=testing
APP_KEY=base64:WVG2VcHt+a2uzCw7n1tVUBPyw2kof644d6EoYA/UUAg=
APP_DEBUG=false
APP_URL=http://hops-web.blumilk.localhost

LOG_CHANNEL=stack
LOG_LEVEL=debug

BROADCAST_CONNECTION=log
CACHE_STORE=array
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=array
SESSION_LIFETIME=120
MAIL_MAILER=array
75 changes: 75 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
APP_NAME=hops-web
VITE_APP_NAME=hops-web
APP_ENV=local
APP_KEY=base64:sCsJw8z+d/4ymp0OvzSip2h4Vp2hZZhpV2uOxgTqP94=
APP_DEBUG=true
APP_DOMAIN=hops-web.blumilk.local.env
APP_URL=https://hops-web.blumilk.local.env

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file
APP_MAINTENANCE_STORE=database

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=sqlite
DB_DATABASE=database/sqlite/database.sqlite
# DB_HOST=hops-web-db-dev
# DB_PORT=5432
# DB_DATABASE=hops-web
# DB_USERNAME=hops-web
# DB_PASSWORD=password
# DB_ROOT_PASSWORD=example

SESSION_DRIVER=redis
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=redis

CACHE_STORE=redis
CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=predis
REDIS_HOST=hops-web-redis-dev
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

# DOCKER
DOCKER_APP_HOST_PORT=60851
DOCKER_DATABASE_HOST_PORT=60853
DOCKER_MAILPIT_DASHBOARD_HOST_PORT=60854
DOCKER_REDIS_HOST_PORT=60852
DOCKER_INSTALL_XDEBUG=true

DOCKER_HOST_USER_ID=1000

VITE_DEV_SERVER_DOCKER_HOST_NAME=hops-web-vite-dev-server.blumilk.local.env
11 changes: 11 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
* text=auto eol=lf

*.blade.php diff=html
*.css diff=css
*.html diff=html
*.md diff=markdown
*.php diff=php

/.github export-ignore
CHANGELOG.md export-ignore
.styleci.yml export-ignore
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @blumilksoftware/blumilk
20 changes: 20 additions & 0 deletions .github/workflows/check-pr-title.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Check PR Title
on:
pull_request:
types:
- opened
- edited
- synchronize
- ready_for_review
- reopened

jobs:
check-pr-title:
name: Check PR title
timeout-minutes: 10
if: github.event.pull_request.draft == false
runs-on: ubuntu-24.04

steps:
- uses: blumilksoftware/action-pr-title@e05fc76a1cc45b33644f1de51218be43ac121dd0 # v1.2.0

42 changes: 42 additions & 0 deletions .github/workflows/test-and-lint-js.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Test & lint JS codebase

on:
pull_request:
branches: [ "main" ]
types: [opened, synchronize, reopened, ready_for_review]
paths:
- '**.js'
- '**.ts'
- 'package.json'
- 'package.lock'

jobs:
test-and-lint-js:
name: Test & lint JS codebase
timeout-minutes: 10
if: github.event.pull_request.draft == false
runs-on: ubuntu-24.04
env:
# renovate: datasource=node-version depName=node
NODE_VERSION: 24.12.0

steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # https://github.com/actions/checkout

- name: Cache dependencies
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 # https://github.com/actions/cache
with:
path: node_modules
key: ${{ runner.os }}-npm-dependencies-${{ hashFiles('package.lock') }}
restore-keys: ${{ runner.os }}-npm-dependencies

- name: Set up node
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 # https://github.com/actions/setup-node
with:
node-version: ${{ env.NODE_VERSION }}

- name: Instal npm dependencies
run: npm clean-install

- name: Run JS linter
run: npm run lint
68 changes: 68 additions & 0 deletions .github/workflows/test-and-lint-php.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Test & lint PHP codebase

on:
pull_request:
branches: [ "main" ]
types: [opened, synchronize, reopened, ready_for_review]
paths:
- '**.php'
- 'composer.json'
- 'composer.lock'
- 'phpunit.xml'
- '.env.ci'

jobs:
test-and-lint-php:
name: Test & lint PHP codebase
timeout-minutes: 10
if: github.event.pull_request.draft == false
runs-on: ubuntu-24.04
env:
# renovate: datasource=github-releases depName=php packageName=containerbase/php-prebuild
PHP_VERSION: 8.4.16
services:
pgsql:
image: postgres:16.3-alpine3.18@sha256:64e18e8fb3e9c9aac89ac590c5dd8306b862478404f76cd9b5f7720d012b4c47 # https://hub.docker.com/_/postgres
env:
POSTGRES_DB: example-app
POSTGRES_USER: example-app
POSTGRES_PASSWORD: password
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 3s
--health-timeout 3s
--health-retries 5
ports:
- 5432:5432

steps:
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # https://github.com/actions/checkout

- name: Validate composer.json and composer.lock
run: composer validate

- name: Cache dependencies
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 # https://github.com/actions/cache
with:
path: vendor
key: ${{ runner.os }}-composer-dependencies-${{ hashFiles('composer.lock') }}
restore-keys: ${{ runner.os }}-composer-dependencies

- name: Setup PHP
uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0 # https://github.com/shivammathur/setup-php
with:
php-version: ${{ env.PHP_VERSION }}
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, pdo_pgsql, intl
coverage: none

- name: Install Composer dependencies
run: composer install --prefer-dist --no-interaction

- name: Run PHP linter
run: composer cs

- name: Execute tests
run: |
cp .env.ci .env
php artisan test --colors=always
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/node_modules
/public/hot
/public/storage
/public/js/
/public/css/
/public/mix-manifest.json
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
google-credentials.json
.idea/
.vscode/
.composer
/public/build/
supervisord.pid
.php-cs-fixer.cache
Loading