diff --git a/.gitignore b/.gitignore index a6df0c15..69b52192 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,6 @@ public/build/ *.pem # Scribe cache and temporary storage -.scribe \ No newline at end of file +.scribe + +.DS_Store diff --git a/BOOTSTRAP_TO_TAILWIND_CONVERSION.md b/BOOTSTRAP_TO_TAILWIND_CONVERSION.md new file mode 100644 index 00000000..7ee59c07 --- /dev/null +++ b/BOOTSTRAP_TO_TAILWIND_CONVERSION.md @@ -0,0 +1,149 @@ +# Bootstrap to Tailwind CSS Conversion Plan + +## Overview +This document tracks the progress of converting the HackGreenville website from Bootstrap to Tailwind CSS while preserving the existing appearance and functionality. + +## Conversion Status + +### Phase 1: Core Layout Components (High Priority) + +#### ✅ Homepage (`resources/views/index.blade.php`) +- **Status**: COMPLETED +- Converted all Bootstrap classes to Tailwind +- Preserved timeline component styles +- Maintained responsive grid layout +- Created backup: `index-bootstrap-backup.blade.php` + +#### ✅ Navigation Bar (`layouts/top-nav.blade.php`) +- **Status**: COMPLETED +- Converted Bootstrap navbar to Tailwind with hybrid approach +- Added JavaScript toggle for mobile menu +- Updated responsive utilities +- Created backup: `top-nav-bootstrap-backup.blade.php` + +#### ✅ Footer (`layouts/footer.blade.php`) +- **Status**: COMPLETED +- Converted Bootstrap grid to Tailwind flexbox +- Updated spacing and color utilities +- Maintained link structure +- Created backup: `footer-bootstrap-backup.blade.php` + +#### ✅ Main Layout (`layouts/app.blade.php`) +- **Status**: COMPLETED +- Updated breadcrumb styling +- Converted loading spinner to Tailwind +- Updated utility classes (d-none → hidden, etc.) + +### Phase 2: Reusable Components + +#### ✅ Nav Link Component (`components/nav-link.blade.php`) +- **Status**: COMPLETED +- Converted Bootstrap nav classes to Tailwind +- Maintained active state styling + +#### ✅ Calendar Feed Promo (`components/calendar-feed-promo.blade.php`) +- **Status**: COMPLETED +- Converted Bootstrap grid to Tailwind flexbox +- Updated button and spacing utilities +- Preserved gradient background styling + +### Phase 3: Content Pages + +#### ⏳ Events Pages +- **Status**: PENDING +- `events/index.blade.php` - Convert form controls and containers +- `events/_item.blade.php` - Update event item styling + +#### ⏳ Organizations Pages +- **Status**: PENDING +- `orgs/index.blade.php` - Replace card-columns with Tailwind grid +- `orgs/show.blade.php` - Update detail page styling +- `orgs/inactive.blade.php` - Update inactive orgs page + +#### ⏳ Contact Form (`contact/contact.blade.php`) +- **Status**: PENDING +- Work with Aire forms (Bootstrap-styled form builder) +- Create custom Tailwind styling for Aire components + +#### ⏳ Slack Sign-up (`slack/sign-up.blade.php`) +- **Status**: PENDING +- Convert badge and button classes +- Update form layout with Tailwind grid + +#### ⏳ Other Pages +- **Status**: IN PROGRESS +- ✅ `about.blade.php` - About Us page - COMPLETED + - Added custom styles for title-heading, lead-text, highlight-link, etc. + - Converted to use Tailwind container and spacing utilities +- `calendar/index.blade.php` - Calendar page - PENDING +- `labs/index.blade.php` - Labs page - PENDING +- `hg-nights/index.blade.php` - HG Nights page - PENDING +- `contribute.blade.php` - Contribute page - PENDING +- `code-of-conduct.blade.php` - Code of Conduct page - PENDING +- `styleguide/index.blade.php` - Style guide page - PENDING + +### Phase 4: Form Handling +- **Status**: PENDING +- Research Tailwind-compatible Aire package options +- Create custom Tailwind styles for Aire forms if needed +- Consider manual form conversion as fallback + +### Phase 5: Custom Components & Styles + +#### ✅ Timeline Component +- **Status**: COMPLETED +- Kept existing timeline CSS +- Only updated surrounding Bootstrap utilities + +#### ✅ Tailwind Configuration +- **Status**: COMPLETED +- Added custom colors matching Bootstrap theme +- Created `tailwind.config.js` with theme extensions +- Added `postcss.config.js` + +#### ⏳ Additional Custom Styles +- **Status**: PENDING +- Convert remaining SCSS custom styles +- Add any missing component classes + +### Phase 6: JavaScript Dependencies +- **Status**: PENDING +- Replace Bootstrap JavaScript (collapse, modal, dropdown) +- Implement Tailwind-compatible alternatives +- Update any Bootstrap-dependent scripts + +### Phase 7: Testing & Cleanup +- **Status**: PENDING +- [ ] Remove Bootstrap from package.json +- [ ] Remove Bootstrap imports from SCSS +- [ ] Test all responsive breakpoints +- [ ] Verify interactive components +- [ ] Run full build process +- [ ] Cross-browser testing + +## Technical Notes + +### Tailwind Setup +- Installed: `@tailwindcss/postcss`, `tailwindcss`, `autoprefixer` +- Created: `tailwind.config.js`, `postcss.config.js`, `resources/css/tailwind.css` +- Updated: `vite.config.js` to include Tailwind CSS + +### Hybrid Approach +Currently using a hybrid approach where Bootstrap classes are redefined using Tailwind utilities. This allows for gradual migration without breaking existing functionality. + +### Backup Files Created +- `index-bootstrap-backup.blade.php` +- `top-nav-bootstrap-backup.blade.php` +- `footer-bootstrap-backup.blade.php` + +## Next Steps +1. ✅ Convert footer layout - COMPLETED +2. ✅ Update main app layout - COMPLETED +3. ✅ Convert calendar feed promo component - COMPLETED +4. Begin converting content pages starting with simpler ones +5. Handle form styling (Aire forms) +6. Update remaining Bootstrap JavaScript dependencies + +## Commands +- Build assets: `npm run build` +- Development: `npm run dev` \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..3824bcc8 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,122 @@ +# HackGreenville.com Project Configuration + +## Project Overview + +This is the HackGreenville community website built with: +- **Backend**: Laravel 10 (PHP 8.1+) +- **Frontend**: Bootstrap 4, jQuery, Sass +- **Database**: MySQL/SQLite +- **Admin Panel**: Filament 3.3 +- **Build Tools**: Vite, Composer, Yarn +- **API**: Custom RESTful API with versioning (v0, v1) +- **Features**: Event management, organization directory, calendar feeds, Slack integration + +The project follows a modular architecture with separate app-modules for API and event importing functionality. + +## AI Development Team Configuration +*Configured by team-configurator on 2025-07-29* + +Your project uses: Laravel 10, Bootstrap 4, MySQL, Filament Admin + +### Specialist Assignments + +#### Backend Development +- **Laravel Expert** → @laravel-backend-expert + - Service layer implementation, command handlers + - Repository patterns, dependency injection + - Job queues, event listeners, notifications + - Middleware, service providers, console commands + +#### Database & ORM +- **Eloquent Specialist** → @laravel-eloquent-expert + - Model relationships, query optimization + - Database migrations, seeders, factories + - Eloquent scopes, observers, and events + - Performance tuning for large datasets + +#### API Development +- **API Architect** → @api-architect + - RESTful API design and versioning strategies + - API resource transformations + - Request validation and error handling + - API documentation with Scribe + +#### Frontend Development +- **Frontend Developer** → @frontend-developer + - Bootstrap 4 components and layouts + - jQuery interactions and AJAX + - Sass/CSS architecture + - Responsive design implementation + +#### Code Quality +- **Code Reviewer** → @code-reviewer + - Laravel best practices and conventions + - PSR standards compliance + - Security vulnerability detection + - Performance bottleneck identification + +- **Performance Optimizer** → @performance-optimizer + - Query optimization and N+1 problem solving + - Caching strategies (Redis, database, view) + - Asset optimization and lazy loading + - Database indexing recommendations + +### How to Use Your Team + +**For Backend Tasks:** +``` +"Add a new feature to track event attendance" +"Implement email notifications for new events" +"Create a service to import events from Eventbrite" +``` + +**For Database Work:** +``` +"Optimize the events query that's running slowly" +"Add a many-to-many relationship between events and tags" +"Create migrations for a new sponsors feature" +``` + +**For API Development:** +``` +"Create v2 API endpoints for organizations" +"Add filtering and pagination to events API" +"Implement API rate limiting" +``` + +**For Frontend Tasks:** +``` +"Update the events calendar to be mobile-responsive" +"Add a search filter to the organizations page" +"Improve the form validation on contact page" +``` + +**For Code Reviews:** +``` +"Review my changes to the event import system" +"Check for security issues in the new API endpoints" +"Analyze performance of the calendar feed generation" +``` + +### Project-Specific Context + +**Key Directories:** +- `/app` - Core Laravel application +- `/app-modules/api` - API module with versioned controllers +- `/app-modules/event-importer` - Event import handlers for various platforms +- `/resources/views` - Blade templates +- `/app/Filament` - Admin panel resources + +**Important Features:** +- Multi-source event importing (Eventbrite, Meetup, Luma) +- Calendar feed generation (iCal format) +- Organization management with status tracking +- Slack integration for community sign-ups +- Filament admin panel for content management + +**Testing:** +- PHPUnit tests in `/tests` +- API tests for each version +- Event importer tests with fixtures + +Your specialized AI team is ready to help build and improve HackGreenville.com! \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8ade673e..dc981a9c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -37,7 +37,6 @@ - [Frequently Asked Questions](#frequently-asked-questions) - [Kudos](#kudos) - # Contribution Guidelines Please play nice. We follow the ["Code of Conduct" mentioned on our Join Slack form](https://hackgreenville.com/join-slack). @@ -57,6 +56,7 @@ Our focused task-based discussions happen mostly within GitHub [Issues](https:// [Issues tagged with "Good First Issue"](https://github.com/hackgvl/hackgreenville-com/labels/good%20first%20issue) are typically an easy place to start. If you feel ready to contribute code to this project, then follow the sections and steps below. +
Reporting a Bug or New Idea @@ -70,12 +70,12 @@ If you can't find what you were looking for then [open a new issue](https://gith When in doubt, you can reach out to an active project contributor: | Name | GitHub | Role | -|:--------------|:---------------------------------------------------------|:-----------------------------------| +| :------------ | :------------------------------------------------------- | :--------------------------------- | | Bogdan | [@bogdankharchenko](https://github.com/bogdankharchenko) | Technical Lead, Laravel | | Zach | [@zach2825](https://github.com/zach2825) | Technical Lead, Laravel | | Jim Ciallella | [@allella](https://github.com/allella) | Bugs, Documentation, Newcomer Help | -
+ # Forking the Project @@ -89,10 +89,10 @@ Follow these steps to fork the `https://github.com/hackgvl/hackgreenville-com` r 2. Click the "Fork" Button in the upper right-hand corner of the interface ([Need help?](https://help.github.com/articles/fork-a-repo/)). 3. After the repository has been forked, you will be taken to your copy of the repository at `https://github.com/YOUR_USER_NAME/hackgreenville-com`. - # Running the App ## Prerequisites + You must have completed the steps above in the "Forking the Project" section before proceeding.
System Requirements @@ -150,17 +150,20 @@ git remote -v ``` The output should look something like below: + ```sh origin https://github.com/YOUR_USER_NAME/hackgreenville-com.git (fetch) origin https://github.com/YOUR_USER_NAME/hackgreenville-com.git (push) upstream https://github.com/hackgvl/hackgreenville-com.git (fetch) upstream https://github.com/hackgvl/hackgreenville-com.git (push) ``` +
## Setup & Configuration Options ### Option 1 - Run via Native Host +
Native Host Details You need to make a copy of the `.env.example` file and rename it to `.env` at your project root. @@ -186,7 +189,6 @@ sh scripts/handle-deploy-update.sh The database migrations will generate a default user *admin@admin.com* with a password of _admin_ and fill the states table. BE SURE TO CHANGE OR REMOVE THIS DEFAULT ADMIN ACCOUNT AND PASSWORD outside of localhost development - #### Generate App Key Once the app is running, run the following command to generate your [app encryption key](https://laravel.com/docs/10.x/encryption): @@ -195,21 +197,43 @@ Once the app is running, run the following command to generate your [app encrypt php artisan key:generate ``` -#### Starting the Web Application +## Quick Start -In a terminal, run the following command to start the Laravel server. +**Option 1: Use composer dev (Recommended)** + +This runs everything together: ```bash composer dev ``` -The app should now be accessible by visiting `http://localhost:8000` in your browser. +This command starts: + +- Laravel PHP server on http://localhost:8000 +- Vite dev server on http://localhost:5173 +- Queue listener +- Log tailing + +**Option 2: Run servers separately** + +If you prefer to run them in separate terminals: + +Terminal 1 - Start PHP server: + +```bash +php artisan serve +``` + +Terminal 2 - Start Vite: + +```bash +yarn dev +``` #### Import / Seed the Organizations and Events Data Organization and events data comes from the [Organizations API](https://github.com/hackgvl/OpenData/blob/master/ORGANIZATIONS_API.md) and [Events API](/EVENTS_API.md). Without this step the application will have no data. - ```bash php artisan import:events ``` @@ -217,6 +241,7 @@ php artisan import:events
### Option 2 - Run via VS Code and GitHub Codespaces Dev Container +
VS Code and GitHub Codespaces Dev Container Details See [VS Code + GitHub Codespaces Dev Container documentation](https://github.com/microsoft/vscode-dev-containers#vs-code--github-codespaces-dev-container-definitions). @@ -224,6 +249,7 @@ See [VS Code + GitHub Codespaces Dev Container documentation](https://github.com
### Option 3 - Run via Docker & Laravel Sail +
Docker / Laravel Sail Details The Docker setup of this project should only be done for advanced users, or if needed for runtime compatibility issues. @@ -231,13 +257,14 @@ The Docker setup of this project should only be done for advanced users, or if n #### Copying Docker Environment Variables First, you need to make a copy of the `.env.docker` file and rename it to `.env` at the -project root. This can be accomplished by running `cp .env.docker .env` from the project root. +project root. This can be accomplished by running `cp .env.docker .env` from the project root. #### Installing the Dockerfile To run the Docker container for the web application, you'll need to generate the Laravel Sail docker files. You can generate the Laravel Sail docker files with either of the two options: ##### Option A: Using Composer + If you have `composer` installed on your machine, you can run the following script to install the application dependencies, including Laravel Sail. ```bash @@ -245,6 +272,7 @@ composer install ``` ##### Option B: Installing with Laravel Sail + If you do not have `composer` installed on your machine, you can install Laravel Sail directly using the following scripts: ```bash @@ -324,6 +352,7 @@ To seed events and organizations into your application, run the following to imp ```bash docker exec "hackgreenville" /bin/bash -c "php artisan import:events" ``` +
# Interacting with Your Running App @@ -350,6 +379,7 @@ Telescope is a Laravel Debugging tool that allows you to see all the requests ma - Debugging can be enabled in development by setting `TELESCOPE_ENABLED=TRUE` in your local `.env` ## Events API Configuration + The Events API's responses are controlled by variables that may limit the data available to calling / consuming applications. Contact [HackGreenville Labs](https://hackgreenville.com/labs) with any questions about these limits for the [HackGreenville.com Events API](/EVENTS_API.md) @@ -360,6 +390,7 @@ Explanation of the .env defaults `EVENTS_API_DEFAULT_DAYS=1` would cause responses to include at least 1 day in the past. This variable is intended to help avoid ongoing events from disappearing from the API response until at least 24 hours after it started. ### Importing Events from Meetup GraphQL API + In order to import events from organizations with a `meetup_graphql` service type, you will need to setup the following environment variables: `EVENT_IMPORTER_MEETUP_GRAPHQL_CLIENT_ID` - Your Meetup [OAuth client](https://www.meetup.com/api/oauth/list/) @@ -373,13 +404,14 @@ The Meetup OAuth client private key file can be stored anywhere on your machine. # Admin Panel -* The admin panel is built in [Filament](https://filamentphp.com/docs/3.x/panels/resources/getting-started). -* After [seeding the DB](#interacting-with-your-running-app), you'll have a default set of login credentials of admin@admin.com, so BE SURE TO CHANGE THE PASSWORD -* To view the admin panel routes / path , run: `artisan route:list --name=filament`, or find the configured value in the [.env](#environment-variables). -* See the [initial PR](https://github.com/hackgvl/hackgreenville-com/pull/231) for more usage notes -* Filament provides commands for generating [CRUD resources](https://filamentphp.com/docs/3.x/panels/resources/getting-started) and [individual pages](https://filamentphp.com/docs/3.x/panels/pages). +- The admin panel is built in [Filament](https://filamentphp.com/docs/3.x/panels/resources/getting-started). +- After [seeding the DB](#interacting-with-your-running-app), you'll have a default set of login credentials of admin@admin.com, so BE SURE TO CHANGE THE PASSWORD +- To view the admin panel routes / path , run: `artisan route:list --name=filament`, or find the configured value in the [.env](#environment-variables). +- See the [initial PR](https://github.com/hackgvl/hackgreenville-com/pull/231) for more usage notes +- Filament provides commands for generating [CRUD resources](https://filamentphp.com/docs/3.x/panels/resources/getting-started) and [individual pages](https://filamentphp.com/docs/3.x/panels/pages). # Synchronizing Your Fork with the Latest Development Code Changes + Be sure you're on the desired branch, usually `git checkout develop`, and change to the project's base directory. Run the following update script, which is part of this repo's /scripts directory. @@ -393,7 +425,7 @@ sh scripts/handle-deploy-update.sh - See the [HackGreenville style guide](https://hackgreenville.com/styles) for theming suggestions for fonts, headings, colors, and such. - See the [Laravel installation documentation](https://laravel.com/docs/10.x/installation) for more details. - Always follow the steps below when starting a new branch or pull request. -- We use an npm package called [pre-commit](https://www.npmjs.com/package/pre-commit). If you want to commit without running the pre-commit hook just add the switch `--no-verify` +- We use an npm package called [pre-commit](https://www.npmjs.com/package/pre-commit). If you want to commit without running the pre-commit hook just add the switch `--no-verify` Contributions are made using [GitHub's Pull Request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/about-pull-requests) (aka PR) pattern. This allows anyone to suggest changes for review, commenting, and eventual approval / merging into the main project's repo. @@ -408,18 +440,18 @@ Before creating a new git "branch" you'll want to sync up with the "remote upstr ```sh git status ``` - + You should get an output like this: - + ```sh On branch develop Your branch is up-to-date with 'origin/develop'. - + nothing to commit, working directory clean ``` - + If you are not on develop or your working directory is not clean, resolve any outstanding files/commits and checkout `develop`: - + ```sh git checkout develop ``` @@ -428,26 +460,30 @@ Before creating a new git "branch" you'll want to sync up with the "remote upstr This is very important to avoid conflicts later. - > **Note:** If you have any outstanding Pull Request that you made from the `develop` branch of your fork, you will lose them at the end of this step. You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should *always* work on a branch separate from develop. + > **Note:** If you have any outstanding Pull Request that you made from the `develop` branch of your fork, you will lose them at the end of this step. You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should _always_ work on a branch separate from develop. This step **will sync the latest changes** from the main repository of HG. Update your local copy of the HG upstream repository: + ```sh git fetch upstream ``` Hard reset your develop branch with the HG develop: + ```sh git reset --hard upstream/develop ``` Push your develop branch to your origin to have a clean history on your fork on GitHub: + ```sh git push origin develop --force ``` You can validate if your current develop matches the upstream/develop or not by performing a diff: + ```sh git diff upstream/develop ``` @@ -478,11 +514,11 @@ Before creating a new git "branch" you'll want to sync up with the "remote upstr Your branch name should start with `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique. Some examples of good branch names are: -` fix/update-nav-links +` fix/update-nav-links fix/calendar-popup-css docs/typos-in-readme feat/add-sponsors - ` + ` 3. Edit files and write code on your favorite editor. Then, check and confirm the files you are updating: @@ -557,10 +593,11 @@ Some examples of good branch names are: Keep your commit messages short. You can always add additional information in the description of the commit message. 5. Push the new branch to your fork / origin. For example, if the name of your branch is `docs/typos-in-readme`, then your command should be: - ```sh + ````sh git push origin docs/typos-in-readme ``` - + + ````
Step 3: Proposing a Pull Request (PR) @@ -590,6 +627,7 @@ You have successfully created a PR. Congratulations! :tada: For typos and other wording changes, you can directly open a [pull request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/about-pull-requests) without first creating an issue. Issues are more for discussing larger problems associated with code or structural aspects of the application. +
I am new to GitHub and Open Source, where should I start? @@ -597,9 +635,11 @@ Issues are more for discussing larger problems associated with code or structura Read freeCodeCamp's [How to Contribute to Open Source Guide](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Then, come back and see our ["Ways to Help"](#ways-to-help) section on how to specificially get involved in this project. +
# Kudos + - Thanks to our [project contributors](https://github.com/hackgvl/hackgreenville-com#contributors-) - Thanks to [freeCodeCamp's Chapter project](https://github.com/freeCodeCamp/chapter) for the template for this CONTRIBUTING.md. - Thanks to all of the open-source projects, as seen in composer.json and package.json diff --git a/PHP_VERSION_REQUIREMENT.md b/PHP_VERSION_REQUIREMENT.md new file mode 100644 index 00000000..e8a7ca5d --- /dev/null +++ b/PHP_VERSION_REQUIREMENT.md @@ -0,0 +1,50 @@ +# PHP Version Requirement + +This project currently requires **PHP 8.1 to 8.3** due to dependency constraints in `composer.lock`. + +## Issue with PHP 8.4 + +When running `composer install` with PHP 8.4, you'll encounter errors like: +``` +- openspout/openspout v4.25.0 requires php ~8.1.0 || ~8.2.0 || ~8.3.0 +- halaxa/json-machine 1.1.4 requires php 7.0 - 8.3 +``` + +## Solutions + +### Option 1: Use PHP 8.3 (Recommended) +Install PHP 8.3 alongside your current version: +```bash +# macOS with Homebrew +brew install php@8.3 +brew link php@8.3 --force + +# Verify +php -v +``` + +### Option 2: Update Dependencies +If you need PHP 8.4, update all dependencies: +```bash +composer update +``` +This will update `composer.lock` to support PHP 8.4, but may introduce breaking changes. + +### Option 3: Install Pint Separately +For development only, you can install Pint globally: +```bash +composer global require laravel/pint +``` + +Then ensure it's in your PATH: +```bash +export PATH="$HOME/.composer/vendor/bin:$PATH" +``` + +## Pre-commit Hook + +The project uses a pre-commit hook that runs: +1. `yarn lint` - Prettier for JS/CSS formatting +2. `composer lint` - Laravel Pint for PHP code style + +Make sure both are properly installed before committing. \ No newline at end of file diff --git a/README.md b/README.md index 4b8c6f9b..ef9e0714 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ + [![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-) + ![HackGreenville](https://www.hackgreenville.com/img/logo-v2.png) @@ -12,7 +14,6 @@ The official repository for HackGreenville.com tech community website, maintaine Our goal is to connect people to the tech-related community in the Greenville area. We do this by supporting discovery applications to promote the area's events and organizations and hosting a vibrant [HackGreenville Slack](https://hackgreenville.com/join-slack). - # Forking, Contributing, and Synchronizing Changes - See the [CONTRIBUTING.md](CONTRIBUTING.md) before creating issues, forking, or submitting any pull requests. @@ -26,10 +27,11 @@ See the [CONTRIBUTING.md](CONTRIBUTING.md) for the various options for running a ## APIs -* [Organizations](https://hackgreenville.com/orgs) data may be queried via the [Organizations API](https://github.com/hackgvl/hackgreenville-com/blob/develop/ORGS_API.md). -* [Events](https://hackgreenville.com/events) data may be queried via the [Events API](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md). +- [Organizations](https://hackgreenville.com/orgs) data may be queried via the [Organizations API](https://github.com/hackgvl/hackgreenville-com/blob/develop/ORGS_API.md). +- [Events](https://hackgreenville.com/events) data may be queried via the [Events API](https://github.com/hackgvl/hackgreenville-com/blob/develop/EVENTS_API.md). ## Laravel + This project uses the [Laravel PHP framework](https://laravel.com). The [CONTRIBUTING.md](CONTRIBUTING.md) goes into more technical details. # Contributors ✨ diff --git a/composer.json b/composer.json index 8cb9d647..93583486 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ "ext-json": "*", "filament/filament": "^3.3", "firebase/php-jwt": "^6.10", - "glhd/aire-bootstrap": "^2.1", + "glhd/aire": "^2.14", "glhd/conveyor-belt": "*", "guzzlehttp/guzzle": "^7.0.1", "hack-greenville/api": "*", @@ -103,7 +103,10 @@ "preferred-install": "dist", "sort-packages": true, "optimize-autoloader": true, - "allow-plugins": {} + "allow-plugins": {}, + "platform": { + "php": "8.1.33" + } }, "minimum-stability": "stable", "prefer-stable": true, diff --git a/composer.lock b/composer.lock index 5538ecd0..a1b3cfd1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "684b12a679654550a1c2b858f0791798", + "content-hash": "04908b8eddbcaf7d68a0eee3d3e376eb", "packages": [ { "name": "amphp/amp", @@ -3377,32 +3377,32 @@ }, { "name": "glhd/aire", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/glhd/aire.git", - "reference": "49627f7ed8fde11d88fa4f4a81a8ef80bea97677" + "reference": "f2807b9c4acd66618ff5ed31021a2f81f954026b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/glhd/aire/zipball/49627f7ed8fde11d88fa4f4a81a8ef80bea97677", - "reference": "49627f7ed8fde11d88fa4f4a81a8ef80bea97677", + "url": "https://api.github.com/repos/glhd/aire/zipball/f2807b9c4acd66618ff5ed31021a2f81f954026b", + "reference": "f2807b9c4acd66618ff5ed31021a2f81f954026b", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/events": ">=5.8.28 <10.48.0 || >10.48.1 <12.0.0", - "illuminate/support": ">=5.8.28 <10.48.0 || >10.48.1 <12.0.0", - "illuminate/view": ">=5.8.28 <10.48.0 || >10.48.1 <12.0.0" + "illuminate/events": ">=5.8.28 <10.48.0 || >10.48.1 <13.0.0", + "illuminate/support": ">=5.8.28 <10.48.0 || >10.48.1 <13.0.0", + "illuminate/view": ">=5.8.28 <10.48.0 || >10.48.1 <13.0.0" }, "require-dev": { "barryvdh/reflection-docblock": "^2.0", "friendsofphp/php-cs-fixer": "^3.5", "guzzlehttp/guzzle": "~6.0|~7.0", "mockery/mockery": "^1.4", - "orchestra/testbench": "^6.24|^7.10|^8|^9|9.x-dev|10.x-dev|dev-master", + "orchestra/testbench": "^6.24|^7.10|^8|^9|^10|11.x-dev|dev-master|dev-main", "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^9|^10.5", + "phpunit/phpunit": "^9|^10.5|^11.5", "symfony/css-selector": "^5.4", "symfony/dom-crawler": "^5.4" }, @@ -3412,12 +3412,12 @@ "type": "library", "extra": { "laravel": { - "providers": [ - "Galahad\\Aire\\Support\\AireServiceProvider" - ], "aliases": { "Aire": "Galahad\\Aire\\Support\\Facades\\Aire" - } + }, + "providers": [ + "Galahad\\Aire\\Support\\AireServiceProvider" + ] } }, "autoload": { @@ -3444,72 +3444,9 @@ ], "support": { "issues": "https://github.com/glhd/aire/issues", - "source": "https://github.com/glhd/aire/tree/2.13.0" + "source": "https://github.com/glhd/aire/tree/2.14.0" }, - "time": "2024-09-18T15:17:14+00:00" - }, - { - "name": "glhd/aire-bootstrap", - "version": "2.1.2", - "source": { - "type": "git", - "url": "https://github.com/glhd/aire-bootstrap.git", - "reference": "3d1a5f564fb2bc609c9182d6147263ba5baf671b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/glhd/aire-bootstrap/zipball/3d1a5f564fb2bc609c9182d6147263ba5baf671b", - "reference": "3d1a5f564fb2bc609c9182d6147263ba5baf671b", - "shasum": "" - }, - "require": { - "glhd/aire": "^2.0", - "illuminate/support": "^5.7|^6.0|^7.0|^8.0|^9.0|^10.0", - "php": ">=7.1" - }, - "require-dev": { - "mockery/mockery": "^1.1", - "orchestra/testbench": "~3.0|~4.0|~5.0|~6.0", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.3|^8.0|^9.0", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Galahad\\AireBootstrap\\AireBootstrapServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Galahad\\AireBootstrap\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Morrell", - "homepage": "http://www.cmorrell.com" - } - ], - "description": "Bootstrap themes for Aire", - "keywords": [ - "Forms", - "aire", - "bootstrap", - "laravel" - ], - "support": { - "issues": "https://github.com/glhd/aire-bootstrap/issues", - "source": "https://github.com/glhd/aire-bootstrap/tree/2.1.2" - }, - "time": "2023-04-05T11:13:44+00:00" + "time": "2025-03-04T14:40:38+00:00" }, { "name": "glhd/conveyor-belt", @@ -14410,5 +14347,8 @@ "ext-pdo_sqlite": "*", "ext-sqlite3": "*" }, + "platform-overrides": { + "php": "8.1.33" + }, "plugin-api-version": "2.6.0" } diff --git a/config/aire.php b/config/aire.php new file mode 100644 index 00000000..b414df2d --- /dev/null +++ b/config/aire.php @@ -0,0 +1,220 @@ + tags) are grouped by default. + | You can disable this on an element-by-element basis by using the + | `withoutGroup()` method, but if you would like to turn grouping off + | by default, you can set this configuration value. + | + */ + 'group_by_default' => true, + + /* + |-------------------------------------------------------------------------- + | Automatically generate input IDs + |-------------------------------------------------------------------------- + | + | If an input does not have an "id" attribute set, Aire can automatically + | create one. This improves UX by ensuring that