Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Api Forge Laravel Package

yusufgenc/filament-api-forge

Expose Filament Resources as REST APIs automatically—no Sanctum. Hash-based API keys with scopes, per-resource access control, rate limiting, IP restrictions, Spatie Query Builder filtering/sorting, and auto-generated OpenAPI + public Swagger docs.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Filament-Centric: Designed specifically for Filament 5.x resources, aligning with Laravel’s admin panel ecosystem. Leverages Filament’s existing resource structure (e.g., HasApi trait) to auto-generate APIs, reducing boilerplate.
  • REST-First: Exposes CRUD operations (index, store, show, update, delete) by default, with extensibility for custom logic via resource hooks (e.g., forgeApiRequest).
  • Decoupled from Sanctum: Avoids Laravel Sanctum’s complexity by using hash-based tokens (forge_ prefix), simplifying auth for API consumers (e.g., mobile apps, third-party services).
  • OpenAPI Integration: Auto-generates Swagger/OpenAPI docs with interactive UI, reducing manual API documentation efforts.

Integration Feasibility

  • Low Friction: Zero manual route configuration—resources implementing HasApi are auto-discovered. Compatible with Laravel 10+ and Filament 5.x.
  • Authentication Overhead: Replaces Sanctum for API auth, but requires Filament admin access to manage API keys/IP restrictions. May need additional logic for multi-tenant or B2B use cases.
  • Query Builder Support: Enables dynamic filtering/sorting via query parameters (e.g., ?filter[status]=active), but customization requires resource-level overrides.
  • Rate Limiting: Per-resource limits via Filament UI, but global limits or burst handling may need Laravel’s built-in throttling as a fallback.

Technical Risk

  • Filament Dependency: Tight coupling to Filament’s resource system. Migrating to a non-Filament Laravel app would require rewriting API logic.
  • Auth Complexity: Hash-based tokens (forge_) are secure but require careful key rotation handling. No built-in token revocation (relies on Filament’s API key management).
  • Performance: Auto-generated APIs may introduce overhead for complex resources. Rate limiting is applied per-resource, but high-traffic APIs could benefit from Redis-backed throttling.
  • Customization Limits: Advanced use cases (e.g., WebSockets, GraphQL) are out of scope. Extending beyond REST requires manual route/api controller overrides.

Key Questions

  1. Auth Strategy:
    • How will API keys be distributed (e.g., embedded in mobile apps vs. server-side generation)?
    • Are there compliance requirements (e.g., token revocation, audit logs) beyond Filament’s UI?
  2. Scalability:
    • Will rate limiting at the resource level suffice, or are global limits needed?
    • How will API performance scale with high-frequency requests (e.g., IoT devices)?
  3. Extensibility:
    • Are there plans to support GraphQL or WebSockets alongside REST?
    • How will custom API endpoints (e.g., /reports) be integrated without manual routes?
  4. Monitoring:
    • Are there plans to expose API usage metrics (e.g., request counts, latency) via Filament?
  5. Fallbacks:
    • What’s the strategy for failing over to Sanctum or Passport if this package’s auth model proves limiting?

Integration Approach

Stack Fit

  • Laravel + Filament: Ideal for admin-driven API exposure. Works seamlessly with Filament’s resource system (e.g., PostResource, UserResource).
  • PHP 8.2+: Requires modern PHP features (e.g., named arguments, attributes). No conflicts with Laravel’s default stack.
  • Database: Relies on Filament’s existing DB (e.g., MySQL/PostgreSQL) for API key storage. No additional DB schema changes.
  • Frontend: Enables headless admin panels (e.g., React/Vue consuming APIs) or third-party integrations (e.g., Zapier).

Migration Path

  1. Assessment Phase:
    • Audit existing Filament resources to identify candidates for API exposure.
    • Validate compatibility with PHP 8.2+ and Filament 5.x.
  2. Pilot Implementation:
    • Install via Composer: composer require yusufgenc/filament-api-forge.
    • Add HasApi trait to a single resource (e.g., PostResource) and test auto-generated endpoints.
    • Configure auth (e.g., create API keys in Filament) and validate OpenAPI docs.
  3. Gradual Rollout:
    • Enable rate limiting/IP restrictions for high-risk resources.
    • Replace Sanctum-based APIs with forge_ tokens incrementally.
    • Monitor performance and adjust query builder filters as needed.
  4. Fallback Plan:
    • Maintain Sanctum/Passport as a backup for unsupported use cases (e.g., OAuth2).
    • Document manual route overrides for custom endpoints.

Compatibility

  • Filament Plugins: May conflict with plugins overriding resource behavior (e.g., Spatie’s Laravel Media Library). Test with critical plugins first.
  • Laravel Packages: No known conflicts with Laravel’s core (e.g., Eloquent, Validation). Sanctum/Passport can coexist but require explicit routing.
  • Caching: Leverages Laravel’s cache for rate limiting. Ensure cache drivers (e.g., Redis) are configured for production.

Sequencing

  1. Phase 1: Auto-generate APIs for low-risk resources (e.g., PageResource).
  2. Phase 2: Implement auth (API keys) and validate OpenAPI docs.
  3. Phase 3: Roll out rate limiting and IP restrictions for public-facing APIs.
  4. Phase 4: Deprecate Sanctum/Passport routes and migrate consumers to forge_ tokens.
  5. Phase 5: Extend custom logic (e.g., resource hooks) for complex use cases.

Operational Impact

Maintenance

  • Filament-Driven: API keys, rate limits, and access control are managed via Filament UI, reducing manual config files.
  • Updates: Package updates may require testing for Filament compatibility (e.g., breaking changes in Filament 5.x).
  • Logging: No built-in API request logging. Integrate with Laravel’s logging or third-party tools (e.g., Sentry) for debugging.
  • Backups: Critical for API key hashes stored in the DB. Include Filament’s filament_api_forge_keys table in backups.

Support

  • Community: Low stars/dependents indicate niche adoption. Support may require issue tracking or self-service debugging.
  • Documentation: README is clear but lacks advanced scenarios (e.g., custom auth providers). Plan for internal runbooks.
  • Debugging: Use Filament’s debug tools (e.g., filament:debug) and Laravel’s telescope for API request inspection.

Scaling

  • Rate Limiting: Per-resource limits via Filament UI. For global scaling, combine with Laravel’s throttle middleware.
  • Performance:
    • Query Builder: Dynamic filters/sorting add overhead. Optimize with database indexes and Laravel’s query caching.
    • Caching: Cache API responses for read-heavy endpoints (e.g., show operations) using Laravel’s cache.
  • Horizontal Scaling: Stateless design (except auth keys) allows scaling Laravel workers. Use Redis for distributed rate limiting.

Failure Modes

Failure Scenario Impact Mitigation
API Key Leak Unauthorized access to resources Rotate keys via Filament UI; monitor usage logs.
Rate Limit Exhaustion API throttling for legitimate users Adjust limits per-resource; implement fallback queues.
Filament DB Corruption Lost API keys/access control Regular DB backups; test restore procedures.
Package Update Breaking Change API endpoints fail Test updates in staging; roll back if needed.
High Traffic Spikes Performance degradation Load test with Laravel Forge/Horizon; scale workers.

Ramp-Up

  • Developer Onboarding:
    • 1–2 Hours: Install and test auto-generated APIs for a sample resource.
    • 4–8 Hours: Configure auth, rate limiting, and custom query filters.
  • Team Training:
    • Focus on Filament’s API key management and OpenAPI docs usage.
    • Document common pitfalls (e.g., forgetting HasApi trait, auth token scope).
  • Tooling:
    • Integrate Postman/Newman for API testing.
    • Use Laravel’s artisan commands (e.g., filament:debug) for troubleshooting.
  • Change Management:
    • Communicate deprecation of Sanctum/Passport routes to frontend teams.
    • Provide a migration guide for existing API consumers.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo
stevenay/myanfont
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc