Web development with Laravel | BIG FISH
RU
← All technologies

LARAVEL · BIG FISH

Web development with Laravel

We build customer portals, B2B platforms and digital services that bring strong design together with your business rules, data and integrations.

PARTNER WORKSPACE

Dealer portal

Ready for the next order.

Order#108
Items12
TermsB2B
PUMP-240

Industrial pump

Contract prices · stock · documents

✓ Order accepted · data reconciled
Laravel × your business

A TOOL FOR YOUR PRODUCT

The problem first.
The technology second.

Laravel is a PHP framework for the server side of an application. It provides building blocks for data, access and background work. The product itself — its journeys, interface and business rules — is designed around you.

1

Dealer portals

Individual prices, orders, limits and approvals. A shared workspace between your company and its partners.

2

Customer accounts

Documents, requests, service history and personalised actions. Separate journeys for customers and employees.

3

Internal services

Operational workflows, roles and integrations when spreadsheets are no longer enough and an off-the-shelf system constrains the process.

Digital product design with Laravel
Digital service illustration

BIG FISH · Laravel

A business process you can see.

Laravel portal development connects company rules with a clear workspace. Dealers see their prices and orders, managers see approvals, and supervisors see outcomes. Different permissions receive different interface priorities.

For Laravel CRM systems and B2B portals, we design the journey from request to fulfilment: status, documents, comments and change history. Users can see their next available step even when queues and ERP exchanges run behind it.

INTERACTIVE EXAMPLE

An order that follows
your business rules.

A fictional dealer orders pumps. Discounts above 10% require a manager; a failed exchange can be retried without creating another order. Try changing the terms.

Demonstration data. Actions run only in your browser; no orders are sent and no ERP is connected.

Order #108

PUMP-240 · Industrial pump

Unit price25 000 ₽
Total276 000 ₽
Draft ready to submit
  1. Choose quantity and terms
Portal orders0
ERP documents0
Delivery attempts0

HOW IT CONNECTS

One order.
Several systems.

01

Interface

Catalogue, basket, status

02

Laravel

Permissions, pricing, approval

03

Database

Order + delivery event

04

Queue → ERP

Retries and acknowledgement

The order and event are saved together. Delivery happens separately: if the ERP is unavailable, the user sees a pending status and the operator sees the reason and attempt history.

A PRACTICAL DESIGN GUIDE

Thoughtful engineering.
Behind every screen.

12 topics for your project discussion. These are architectural examples, not a universal configuration: we agree specific requirements before development.

GUIDE / 01

Architecture around the workflow

Start with ownership: who creates an order, who can change its price, where stock is recorded and when an order becomes accepted. A dealer portal separates catalogue, orders, contract pricing and integrations. Initially, these can be modules within one application and database, keeping deployment and support manageable. A separate service is justified by a concrete need for independent load, teams or release cycles.

Assign an owner to each value. The ERP might own stock and shipments while the portal owns drafts and approvals. Document state transitions and forbidden actions so the systems do not become competing versions of the same order.

Project checklist
Design deliverables: context diagram, data ownership table, state model and integration contracts.

GUIDE / 02

Validate, authorise, execute

A controller receives a request without having to contain the entire workflow. A Form Request validates its shape: quantity must be an integer within bounds and the address must belong to the selected customer. A policy checks permission, then an application service performs the action. Valid input does not mean a discount is authorised.

Recalculate prices, discounts and totals on the server. The client sends product identifiers and quantities, not a total the application must trust. Show errors next to the relevant fields, preserve entered data and explain the next action.

Project checklist
Acceptance checks: call the API directly, tamper with the price and submit fractional or negative quantities. The server must reject violations independently of the interface.

GUIDE / 03

Data and transactions

An order has lines, a customer, a version of commercial terms and a change history. Store money with explicit currency and precision, for example as integer minor units. Each line keeps a price snapshot; changing a price list must not rewrite historical sales.

Create an order and its lines in a database transaction. For concurrent reservations, choose appropriate locking or version checks. An external ERP request does not turn a local transaction into a distributed transaction: model delivery states and retries separately.

Project checklist
Acceptance check: two employees order the last available unit at the same time. Verify consistent behaviour, not just a successful isolated request.

GUIDE / 04

Identity and company-level permissions

A first-party browser portal can use session authentication; external clients may need token access. Sanctum supports both scenarios, with configuration depending on the domains and clients involved. Passwords, sessions, account recovery and protection against repeated login attempts need deliberate configuration.

A manager role alone is insufficient. Policies also consider company membership, order ownership, workflow stage and approval limits. An employee of one dealer must not read another dealer’s records by guessing an identifier. Apply the same checks to exports, attachments and background actions.

Project checklist
Create a role × action × data-scope matrix and test the denials. Choose two-factor authentication and session lifetimes according to the project’s requirements.

GUIDE / 05

API as a shared contract

Define resources, required fields, error formats, pagination and compatibility rules. An OpenAPI specification with examples helps mobile and partner teams. API Resources provide control over exposed fields; internal model attributes should not leak into responses accidentally.

Order creation can return 202 Accepted when ERP delivery is still pending. Return an identifier and a status endpoint so the client can follow progress. Removing or renaming a field requires a coordinated client migration; a version number in the URL does not solve that on its own.

Project checklist
Acceptance checks cover required fields, access restrictions, empty lists and predictable errors. The example below is a project-specific contract, not a built-in Laravel route.

POST /api/v1/orders
Idempotency-Key: dealer-42-order-108

{"items":[{"sku":"PUMP-240","quantity":12}]}

HTTP/1.1 202 Accepted
{"id":"ORD-108","status":"awaiting_erp"}

GUIDE / 06

Integrations without duplicate orders

An ERP may accept an order before the connection drops. A retry must therefore avoid creating a second document. Bind an idempotency key to the company and a request checksum; reject reuse with a different payload. Agree a unique external identifier with the receiving system.

For important events, use a delivery journal: persist the order and an event atomically, then deliver the event separately. Verify webhook signatures and an allowed time window, and record event identifiers. Timeouts, retry limits and manual recovery are part of integration design.

Project checklist
Acceptance checks: duplicate events, a 500 response, a timeout after acceptance and out-of-order notifications. Sent is not the same state as accepted by the ERP.

GUIDE / 07

Queues and background work

Catalogue imports, document generation and notifications can run in a queue. Users see an understandable status while long operations continue separately. Keep critical jobs apart from bulk mail so a large import does not delay an order confirmation.

A repeated job must be safe. Configure timeouts, attempt limits and backoff; monitor queue depth and the oldest waiting job. Dispatch work that depends on a transaction after it commits successfully. Exhausted retries should appear in an actionable operator view.

Project checklist
Acceptance check: stop a worker during processing and resume it. The order should complete once and the operator should be able to identify why it was delayed.

GUIDE / 08

Files and business documents

Quotes, contracts and invoices live separately from public catalogue images. Check both user and company access before download, using a controlled route or a time-limited URL. An obscure path is not an access-control mechanism.

Validate size and allowed type, generate server-side names and define content inspection and retention policies. When generating a PDF, record the source-data and template versions. Choose object storage and backups alongside access and recovery requirements.

Project checklist
Acceptance checks: a direct link to another company’s document, an expired URL, an oversized upload and a misleading file extension.

GUIDE / 09

Performance and caching

Measure real journeys first: opening the catalogue, searching by SKU and placing an order. Inspect SQL query counts, external-call latency and response size. Indexes, pagination and loading related records efficiently often matter more than adding servers.

Cache data with an explicit freshness policy. A contract-price key includes the company and terms version; a shared key could disclose another customer’s discount. Price or permission changes invalidate dependent entries. Recheck current terms when the order is submitted.

Project checklist
Agree latency targets and a load profile before testing. A framework cannot promise a particular requests-per-second figure: results depend on the application, database, infrastructure and external services.

GUIDE / 10

Interface, accessibility and search

Laravel can support server-rendered templates, Livewire or a separate React/Vue interface. Choose according to interaction needs and team capabilities. Public catalogues need deliberate indexable URLs, metadata and content rendering; private portals should not accidentally enter search indexes.

Design around employee tasks: find a product, compare terms and understand a blocked action. Adapt tables for narrow screens, make confirmations explicit and keep keyboard focus visible. Both light and dark themes must preserve contrast in charts, alerts and status indicators.

Project checklist
Acceptance checks: keyboard-only checkout, enlarged text, validation failures, an empty catalogue, a slow connection and long product names.

GUIDE / 11

Testing, audit trails and observability

Test more than a successful order. Include discount boundaries, company isolation, concurrent changes, repeated events and ERP downtime. Test domain rules in isolation and critical flows through integration and browser scenarios.

An error log and a business audit trail serve different purposes. Record the actor, action, time and changed values without logging secrets or unnecessary personal information. A correlation identifier links the portal request, queued job and external call.

Project checklist
Alert on exchange failures, rising error rates and queue delays. Each alert needs an owner and a documented recovery procedure.

GUIDE / 12

Release and support

Separate development, staging and production environments. Keep secrets out of the repository and disable public debug output. A release includes frontend assets, configuration checks, migrations and restarting long-running workers.

Make database changes compatible with the previous application version during deployment. Rolling back code does not automatically reverse data changes. A risky migration needs a recovery plan and a verified backup. Back up the database, files and configuration, and practise restoring them.

Project checklist
At handover, document environments, release commands, backup schedules, responsible contacts and dependency maintenance. Response times belong in the support agreement.

FAQ

Before we start

When is Laravel a better fit than a ready-made CRM?

When the product’s value depends on custom workflows, interfaces and data structures. If configuration of an existing system solves the problem, we assess that route first: custom software also needs a development and support budget.

Can it connect to 1C and Bitrix24?

Yes, where a supported exchange mechanism and the required access are available. We review configuration, APIs, volumes, limits and data ownership before estimating the integration.

What does design include?

User journeys, screen structure, prototypes, visual language, responsive layouts and loading, error, empty and restricted states. We validate the design against users’ actual tasks.

How do you estimate cost and delivery time?

From an agreed scope covering roles, workflows, screens, integrations, load and migration requirements. We define a useful first release, then estimate stages and dependencies.

Will we receive source code and documentation?

We agree the handover in the contract: source code, design, data model, API documentation, release commands and administrator instructions. Ownership and ongoing support are agreed in advance.

BIG FISH · DESIGN & DEVELOPMENT

Let’s start with your workflow

Tell us who will use the service, which operations need automation and which systems hold your data. We will propose a product structure and delivery stages.

BIG FISH / YOUR STORY

Start
with an idea.

Tell us about your business and project. Let’s discuss the scope, budget and next steps.

Fields marked with an asterisk are required.
privacy policy
BIG FISH / MENU
+7 495 150-17-20