npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

innoboxrr-affiliate-saas

v1.0.67

Published

`innoboxrr-affiliate-saas` es un sistema completo para la gestión de afiliados en plataformas Laravel. Permite integrar funcionalidades clave para manejar programas de afiliados, links, clics, conversiones, pagos y más. Su arquitectura está orientada a mi

Readme

InnoboxRR Affiliate SaaS

innoboxrr-affiliate-saas es un sistema completo para la gestión de afiliados en plataformas Laravel. Permite integrar funcionalidades clave para manejar programas de afiliados, links, clics, conversiones, pagos y más. Su arquitectura está orientada a microservicios con extensión modular, y aprovecha filtros, relaciones personalizadas, y un sistema robusto de metadatos.


Características

🔎 Seguimiento de Actividad

  • Seguimiento de clics, links y conversiones.
  • Relación completa entre afiliados, programas, clics y pagos.

🎁 Sistema de Programas

  • Creación de programas de afiliación por workspace.
  • Asignación automática de links.

💰 Pagos

  • Registro y seguimiento de pagos a afiliados.
  • Metadatos editables para registrar detalles bancarios, condiciones o estados de revisión.

📈 Métricas e Informes

  • Total de clics, conversiones, payout pendientes y aprobados.
  • Integración con dashboards.

Instalación

1. Instalar el paquete

composer require innoboxrr/affiliate-saas

2. Publicar archivos

php artisan vendor:publish --tag=affiliate-saas-config
php artisan vendor:publish --tag=affiliate-saas-migrations

3. Ejecutar migraciones

php artisan migrate

4. Configurar clases relacionadas en config/affiliate.php

return [
    'user_class' => App\Models\User::class,
    'workspace_class' => App\Models\Workspace::class,
];

Estructura de Modelos

🔗 Affiliate

Representa al usuario afiliado. Tiene relación con User, Workspace, AffiliateLink, AffiliateConversion y AffiliateMeta.

🖐️ AffiliateLink

Contiene la URL personalizada de cada afiliado dentro de un programa. Pertenece a un AffiliateProgram y Affiliate.

AffiliateClick

Guarda los clics realizados sobre los links de afiliado. Relaciona con AffiliateLink y contiene AffiliateConversion.

🏛️ AffiliateConversion

Registra una conversión (ej. compra). Puede estar relacionada con un AffiliateClick, AffiliateLink, AffiliatePayout, y mediante BelongsToThrough con el Affiliate.

💳 AffiliatePayout

Contiene el pago a uno o más afiliados. Puede tener metas y conversiones asociadas.

📅 AffiliateProgram

Definición de un programa de afiliación. Tiene links, assets y afiliados asociados.

🖊️ AffiliateAsset

Recursos publicitarios (banners, videos, PDF) relacionados a un programa.


Traits

Todos los modelos tienen sus propios Traits de relaciones, organizados en:

Innoboxrr\AffiliateSaas\Models\Traits\Relations

Esto permite desacoplar la lógica y mantener los modelos limpios.


Filtros para Busquedas y Eager Loading

Cada modelo tiene su filtro EagerLoadingFilter para cargar relaciones condicionalmente con base en los datos entrantes.

Ejemplo:

if ($data->load_relation == true) {
    $query->with(['affiliate', 'link']);
}

Esto se genera automáticamente según las relaciones del modelo y permite una carga flexible.


Políticas (Traits)

El paquete define políticas reutilizables para acciones como:

  • Crear programas
  • Gestionar links
  • Ver conversiones

Se encuentran en:

App\Services\User\Affiliate\Traits

Y se importan desde un trait general:

use App\Services\User\Affiliate\AffiliatePolicies;

API e Integración

Puedes exponer estos modelos vía API para integrarlos a frontends como Vue o Inertia, usando recursos, policies y autorizaciones.

Ejemplo de estructura de rutas:

Route::middleware(['auth:sanctum'])->group(function () {
    Route::apiResource('affiliate-programs', AffiliateProgramController::class);
    Route::apiResource('affiliate-links', AffiliateLinkController::class);
});

Aquí tienes la sección Instalación adaptada de forma profesional, clara y completa para el paquete innoboxrr-vue-affiliate, con todos los nombres, rutas y componentes cambiados y organizados con precisión:


🚀 Instalación

1. Instalar el Paquete

Instala el paquete desde npm o usando un enlace local:

npm install innoboxrr-vue-affiliate

También puedes usar npm link si estás trabajando en desarrollo local del paquete.


2. Registrar el Paquete en tu Bootstrap de Vue

Agrega el paquete AffiliateApp a tu aplicación principal:

import { createApp } from 'vue';
import AffiliateApp from 'innoboxrr-vue-affiliate';

const app = createApp(App);
app.use(AffiliateApp);

3. Traducciones Personalizadas (Opcional)

Puedes sobrescribir los textos por defecto en distintos idiomas con tu propio archivo de traducciones:

import AffiliatePackage from 'innoboxrr-vue-affiliate';

const customLocales = {
    es: {
        'Affiliate Program': 'Programa de Afiliados',
        'Create Affiliate': 'Crear Afiliado',
        // ...otros textos
    },
};

app.use(AffiliatePackage, {
    translateOptions: {
        defaultLang: 'es',
        locales: customLocales,
    }
});

4. Crear la Vista Principal

Genera una vista específica para la sección de afiliados:

Archivo: AffiliateView.vue

<template>
    <AffiliateApp />
</template>

<script>
export default {
    name: 'AffiliateView',
};
</script>

5. Registrar las Rutas

Incluye las rutas del paquete como hijos de tu ruta principal /affiliate:

Archivo: routes/index.js

import affiliateRoutes from 'innoboxrr-vue-affiliate/routes';

export default [
    {
        path: '/affiliate',
        name: 'AdminAffiliate',
        component: () => import('./../views/AffiliateView.vue'),
        meta: {
            title: 'Afiliados',
        },
        children: [
            ...affiliateRoutes,
        ],
    },
];

6. Configurar Aliases en vite.config.js

Agrega alias personalizados para facilitar las importaciones desde el paquete:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';

export default defineConfig({
    plugins: [vue()],
    resolve: {
        alias: {
            '@affiliate': path.resolve(__dirname, 'node_modules/innoboxrr-vue-affiliate/'),
            '@affiliateComponents': path.resolve(__dirname, 'node_modules/innoboxrr-vue-affiliate/src/components'),
            '@affiliateModels': path.resolve(__dirname, 'node_modules/innoboxrr-vue-affiliate/src/models'),
            '@affiliatePages': path.resolve(__dirname, 'node_modules/innoboxrr-vue-affiliate/src/pages'),
            '@affiliateStore': path.resolve(__dirname, 'node_modules/innoboxrr-vue-affiliate/src/store'),
        },
    },
});

7. Configurar tailwind.config.js

Asegúrate de que Tailwind procese también los archivos del paquete:

const { addDynamicIconSelectors } = require('@iconify/tailwind');
const colors = require('tailwindcss/colors');
const defaultTheme = require('tailwindcss/defaultTheme');

module.exports = {
    content: [
        './node_modules/innoboxrr-vue-affiliate/**/*.vue',
        './node_modules/innoboxrr-vue-affiliate/**/*.js',
        './node_modules/innoboxrr-vue-affiliate/**/*.blade.php',
    ],
    darkMode: 'class',
    theme: {
        extend: {},
    },
    plugins: [],
};

Roadmap

  • [x] Relaciones completas entre modelos
  • [x] Métricas de actividad
  • [x] Sistema de payout
  • [ ] Dashboard interactivo
  • [ ] Integración con Stripe/PayPal
  • [ ] Interfaz frontend en Vue

Contribución

Sigue los pasos de instalación local para desarrollo. Las PRs y sugerencias son bienvenidas.


Licencia

innoboxrr-affiliate-saas está licenciado bajo MIT License.