Laravel Backend Integration for SaaS CRM
Publicada el 2026-07-22
Descripción de la oferta
CRM SaaS platform built on Laravel + Blade + Alpine.js + Tailwind CSS, with authentication, a database, and core infrastructure already live in production. We've had a full frontend prototype built out separately — a single interactive HTML file (Alpine.js + Tailwind CSS) covering several major feature areas of the product, all fully clickable and functional against local browser storage. We now need a Laravel developer to wire this prototype into our real backend: real database tables, real API endpoints, real authentication, and real permission enforcement. This is not a from-scratch build. The UI, UX, and interaction logic already exist and work. The job is backend integration — designing the database schema, building the API, and connecting the two. Why This Should Be Faster Than a Typical Integration The prototype was deliberately built to minimize this exact handoff: Same frontend stack as production — Alpine.js + Tailwind CSS throughout (one exception noted below), so there's no framework to port. Every feature's data access already goes through a single, isolated "data layer" object (dataLayer.branding.get(), dataLayer.quotes.save(), etc.) instead of being scattered through the UI code. Swapping the inside of each method from localStorage to a real fetch() call is a contained, mechanical change — the UI code calling it doesn't need to change. Every data field is already snake_case and shaped to map cleanly onto database columns (e.g. company_name, logo_url, quote_number, unsubscribe_message). The intended API contract is documented directly in code comments above each data-layer resource — expected routes, HTTP verbs, and response shapes are already spelled out. Config objects already have placeholders for auth context (csrfToken, currentUser) on every component, matching the pattern our real app already uses elsewhere — ready for real values to be injected via Blade. What's Already Built in the Prototype Branding & Email Signatures — company branding settings (supports multiple saved brand profiles), a multi-step email signature builder with several templates, save/reuse/delete flows Quotes — full quote builder with line items, tax, product features list, notes, terms, PDF-style export/preview, and the ability to apply a saved brand's logo/name/color to a quote Contacts — People and Companies list views with a shared tab layout Omnichannel Inbox — multi-channel conversation view, plus a channel-connection wizard (WhatsApp/Meta/SMS/LinkedIn-style flows, currently simulated) Teams & Permissions — team/user management and a custom permission-rule system currently enforced client-side only Email Marketing — campaign dashboard with charts, campaign CRUD, a block-based drag-and-drop email designer plus raw HTML mode, a template library, audience filtering/segmentation, CSV import/export, scheduling/send controls, and per-campaign tracking + reporting Social Media — post templates, a content calendar, and a media library Forms Reports — stats derived from forms created in the Forms builder Scope of Work Database schema — design and migrate real tables for each resource above (quotes, campaigns, contacts, teams, permission sets, etc.), matching the field names already used in the prototype where reasonable. API layer — build Laravel routes/controllers matching the documented contract in the data-layer comments (mostly straightforward REST: index/store/update/destroy per resource). Wire the data layer — replace the inside of each dataLayer.* method with real fetch() calls against the new endpoints. This is the main "connect the two" step. Real authentication & account scoping — every request needs to be scoped to the logged-in user/account; wire in real CSRF tokens and user context where the prototype has placeholders. Server-side permission enforcement — the custom permission-rules system currently only hides/shows UI elements client-side. This needs to become real Laravel Policies/Gates so it can't be bypassed via direct API calls. (The client-side rule logic and its evaluation order are documented in a code comment and can be used as the spec.) Real file uploads — logos, signature photos, and media library images currently store base64 data directly; these need to become real multipart uploads to storage (S3 or local disk) returning a URL. QA against the existing prototype behavior — the prototype is the source of truth for expected UI behavior; the goal is matching functionality with real data underneath, not redesigning anything. Explicitly Out of Scope (flag separately if interested) Real email sending infrastructure (SMTP/SendGrid/etc. integration) for the Email Marketing module — currently simulated Real OAuth integration with WhatsApp/Meta/LinkedIn/Twilio for the Omnichannel channel connections — currently simulated Real-time updates (websockets) for the Omnichannel inbox The Forms builder is built in React rather than Alpine — decide whether to keep it as an embedded React component or port it Requirements Strong, demonstrable experience with Laravel (routing, Eloquent, migrations, Policies/Gates, API resources) Comfortable working with Alpine.js and Tailwind CSS on the frontend side Experience designing REST APIs and relational database schemas from an existing frontend Able to read and follow existing code conventions rather than rewriting things to personal preference Bonus: experience with file upload/storage handling in Laravel, and with implementing row-level or role-based permission systems Deliverables Database migrations for all in-scope resources Laravel API routes/controllers per the documented contract Updated dataLayer methods pointing at real endpoints (frontend file provided) Working authentication/account scoping across all endpoints Server-side permission enforcement matching the documented rule set Real file upload handling replacing base64 storage Brief written notes on any deviations from the original contract, for our own records
Skills
- REST APIs
- Laravel
- Tailwind CSS
- CSS
- Email Marketing
- Social Media
- Branding
- React
- Fiscalidad
- QA Testing
- WebSocket
- OAuth
- HTML
- JavaScript
- Node.js
- SQL
- Docker
Fuente original: freelancer