Aggro is the codebase that powers BMXfeed, a BMX news aggregator and video discovery platform. Running continuously since 2006, BMXfeed collects and curates BMX-related content from across the web.
- News Aggregation: Automatically collects and displays BMX news from various sources
- Video Integration: Aggregates BMX videos from YouTube and Vimeo
- RSS Feed Directory: Maintains a curated directory of BMX-related RSS feeds
- Content Curation: Automatically archives old content and manages content quality
- API Support: Integrates with YouTube and Vimeo APIs for video metadata
- Feed Generation: Provides RSS/OPML feeds of aggregated content
- Responsive Design: Mobile-first, responsive web interface
- Backend: PHP 8.2+ with CodeIgniter 4 framework
- Frontend: Vanilla CSS with PostCSS processing and no JavaScript!
- Database: MySQL/MariaDB
- Dependencies:
- SimplePie for feed parsing
- Composer for PHP package management
- npm for frontend build tooling
Aggro uses Docksal for local development. This ensures a consistent development environment across machines.
- Install Docksal
- Docker compatible host system
-
Clone the repository and enter directory:
git clone https://github.com/jsnmrs/aggro.git cd aggro
-
Initialize the project:
fin init
-
View the site:
- Open http://aggro.docksal.site in your browser
- The init process creates a local database from aggro-db.sql
Aggro includes several custom Docksal commands to help with development:
fin admin
- Run application maintenance tasksfin deploy [env]
- Deploy to specified environmentfin frontend
- Run frontend build processfin maintain
- Run upgrades and testsfin test
- Run test suitefin upgrade
- Update Composer packages
Copy .env-sample
to .env
for your local environment. Key configurations:
CI_ENVIRONMENT
- Set to 'development' for local workapp.baseURL
- Your local URL (default: http://aggro.docksal.site)- Database credentials (configured through Docksal)
- API keys for video services
The .crontab
file defines scheduled tasks for:
- News feed updates (every 6 minutes)
- YouTube video checks (every 5 minutes)
- Vimeo video checks (every 7 minutes)
- Archive management (daily)
- Feed cache clearing (monthly)
The project includes several types of tests:
# Run all tests
fin test
# Run specific checks
fin sniff # PHP CodeSniffer
fin shellcheck # Shell script linting
Deployment is handled through GitHub Actions and Deployer:
- Automated deployment on merge to main branch
- Frontend assets are built and included in deployment
- Environment files are securely transferred
- Crontab is updated on deployment
# Deploy to development
fin deploy dev
# Deploy to production
fin deploy prod
Aggro is open-source software licensed under the MIT license. See the LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests (
fin test
) - Submit a pull request
- Developed and maintained by Jason Morris
- Built with CodeIgniter 4
- Uses SimplePie for feed parsing
- Docksal for development environment
- Issues: GitHub Issues
- Email: jason@bmxfeed.com