MetricsWave is an open-source analytics and metrics tracking platform that helps teams monitor, visualize, and get notified about important business metrics in real-time.
- Track custom metrics with parameters and tags
- Record events with timestamps and metadata
- Support for incremental counters and custom scoring
- Historical data retention and aggregation
- Create custom dashboards with multiple visualizations
- Share public dashboards with stakeholders
- Real-time data updates and interactive charts
- Mobile-responsive design for on-the-go monitoring
- Set up intelligent triggers based on metric thresholds
- Multi-channel notifications (Telegram, Email, etc.)
- Custom trigger conditions and parameters
- Team-based notification management
- Multi-team support with role-based access control
- Share dashboards and metrics across teams
- Collaborative metric management
- User impersonation for support scenarios
- REST API for easy integration with any application
- Support for various data sources and services
- OAuth integration with popular platforms
- Webhook support for real-time data ingestion
- Simple HTTP API for metric recording
- Comprehensive documentation and examples
- Open-source with active community
- Built with modern technologies (Laravel + React)
- Track user engagement, conversion rates, and feature adoption
- Monitor performance metrics and API response times
- Analyze user behavior patterns and trends
- Monitor sales metrics, revenue, and growth indicators
- Track marketing campaign performance and ROI
- Create executive dashboards for strategic decision-making
- Track server performance, uptime, and resource usage
- Monitor application errors and performance bottlenecks
- Set up alerts for critical system events
- Monitor customer health scores and satisfaction metrics
- Track support ticket resolution times and SLA compliance
- Analyze customer retention and churn patterns
- Track order volumes, conversion rates, and cart abandonment
- Monitor inventory levels and product performance
- Analyze customer lifetime value and purchasing patterns
- PHP: 8.1 or higher
- Node.js: 16.x or higher
- Docker & Docker Compose: Latest version
- Git: For version control
-
Clone the repository
git clone https://github.com/your-org/metricswave.git cd metricswave/backend -
Install PHP dependencies
docker run --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php82-composer:latest \ composer install --ignore-platform-reqs -
Start the development environment
./vendor/bin/sail up -d
-
Set up the application
# Copy environment file ./vendor/bin/sail artisan sail:publish cp .env.example .env # Generate application key ./vendor/bin/sail artisan key:generate # Run database migrations ./vendor/bin/sail artisan migrate # Install frontend dependencies ./vendor/bin/sail npm install # Build frontend assets ./vendor/bin/sail npm run dev
-
Access the application
- Frontend: http://localhost
- API: http://localhost/api
- Admin Panel: http://localhost/admin
The project uses Laravel Sail for Docker-based development:
# Start all services
./vendor/bin/sail up -d
# View logs
./vendor/bin/sail logs
# Access Laravel container
./vendor/bin/sail shell
# Run Artisan commands
./vendor/bin/sail artisan migrate
# Run tests
./vendor/bin/sail pest
# Stop all services
./vendor/bin/sail down-
Run migrations
./vendor/bin/sail artisan migrate
-
Seed the database (optional)
./vendor/bin/sail artisan db:seed
-
Create a test user
./vendor/bin/sail artisan tinker # In tinker: User::factory()->create(['email' => 'admin@example.com']);
The frontend is built with React and uses Vite for development:
# Development server with hot reload
./vendor/bin/sail npm run dev
# Production build
./vendor/bin/sail npm run build
# Install new packages
./vendor/bin/sail npm install <package-name>Key configuration options in .env:
# Application
APP_NAME="MetricsWave"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
# Database
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=metricswave
DB_USERNAME=sail
DB_PASSWORD=password
# Redis (for caching and queues)
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
# Notifications
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
MAIL_MAILER=smtpFor background job processing:
# Start queue worker
./vendor/bin/sail artisan queue:work
# Process failed jobs
./vendor/bin/sail artisan queue:retry all# Run all tests
./vendor/bin/sail pest
# Run specific test suite
./vendor/bin/sail pest --group=metrics
# Run with coverage
./vendor/bin/sail pest --coverageWe welcome contributions from the community! Here's how you can contribute:
- Check existing issues to avoid duplicates
- Use the issue template and provide detailed information
- Include steps to reproduce the problem
- Add relevant labels and assign to appropriate milestone
- Open a new issue with the "enhancement" label
- Describe the feature and its use case
- Discuss the implementation approach
- Wait for maintainer approval before starting development
-
Fork the repository
git clone https://github.com/your-username/metricswave.git cd metricswave/backend -
Create a feature branch
git checkout -b feature/your-feature-name
-
Set up development environment
# Follow the Quick Start guide above ./vendor/bin/sail up -d -
Make your changes
- Follow PSR-12 coding standards for PHP
- Use ESLint configuration for JavaScript/React
- Write tests for new functionality
- Update documentation as needed
-
Run quality checks
# PHP code style ./vendor/bin/sail composer pint # PHP static analysis ./vendor/bin/sail composer phpstan # Run tests ./vendor/bin/sail pest # Frontend linting ./vendor/bin/sail npm run lint
-
Commit your changes
git add . git commit -m "feat: add new metrics visualization component"
-
Push and create PR
git push origin feature/your-feature-name
Then create a Pull Request on GitHub.
- PHP: Follow PSR-12 standards, use Laravel conventions
- JavaScript/React: Use ESLint and Prettier configurations
- Database: Use descriptive migration names and proper indexing
- API: Follow RESTful conventions and proper HTTP status codes
Use conventional commits format:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for code style changesrefactor:for code refactoringtest:for adding or updating tests
- Ensure all tests pass and code follows style guidelines
- Update documentation for any new features
- Add or update tests for your changes
- Request review from maintainers
- Address feedback and iterate until approved
backend/
βββ app/ # Laravel application code
βββ src/ # Domain-specific modules
β βββ Metrics/ # Core metrics functionality
β βββ Teams/ # Team management
β βββ Users/ # User management
β βββ Channels/ # Notification channels
β βββ Pages/ # Statamic pages
βββ resources/ # Frontend React code
βββ routes/ # API and web routes
βββ database/ # Migrations and seeders
βββ tests/ # Test suites
βββ config/ # Configuration files
This project is licensed under the MIT License with Commons Clause - see the LICENSE.md file for details.
The Commons Clause means you can use, modify, and distribute the software freely, but you cannot sell it as a hosted service or commercial product.
- Built with Laravel and React
- Powered by Statamic for content management
- Uses Filament for admin interface
- Notifications via Laravel Notification Channels
- π Documentation: [Coming Soon]
- π¬ Community: GitHub Discussions
- π Issues: GitHub Issues
- π§ Email: support@metricswave.com
Made with β€οΈ by the MetricsWave Team