{"id":41970,"date":"2026-10-21T13:28:21","date_gmt":"2026-10-21T10:28:21","guid":{"rendered":"https:\/\/coma.lv\/?p=41970"},"modified":"2026-10-21T15:58:02","modified_gmt":"2026-10-21T12:58:02","slug":"evrotrans-2-0-nodejs-ai-commerce-platform","status":"publish","type":"post","link":"https:\/\/coma.lv\/en\/2026\/10\/21\/evrotrans-2-0-nodejs-ai-commerce-platform\/","title":{"rendered":"Evrotrans 2.0: from a WordPress store to a Node.js platform with AI"},"content":{"rendered":"<style id=\"evrotrans-case-graphics\">#top .evc-graphics{--evc-blue:#1d5094;--evc-ink:#192738;--evc-soft:#edf3f8;margin:44px 0;padding:30px;color:var(--evc-ink);background:#f5f8fb;border:1px solid #d5e0eb;font-size:16px;line-height:1.55;text-align:left;overflow-wrap:anywhere} #top .evc-graphics *{box-sizing:border-box} #top .evc-graphics h2,#top .evc-graphics h3{color:var(--evc-ink);text-transform:none;letter-spacing:normal;margin:0 0 16px;line-height:1.2} #top .evc-graphics h2{font-size:28px} #top .evc-graphics h3{font-size:23px} #top .evc-graphics p{margin:0 0 18px;color:inherit} #top .evc-graphics strong{color:inherit} #top .evc-graphics .evc-note{font-size:13px;line-height:1.5;color:#42566c;margin:18px 0 0} #top .evc-graphics .evc-metrics{display:flex;gap:36px;border-bottom:1px solid #becfe0;padding-bottom:24px;margin:24px 0 28px} #top .evc-graphics .evc-metric{flex:1;min-width:0} #top .evc-graphics .evc-value{display:block;color:var(--evc-blue);font-size:44px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap} #top .evc-graphics .evc-unit{font-size:21px;font-weight:400} #top .evc-graphics .evc-label{display:block;margin-top:8px;font-size:14px} #top .evc-graphics figure{margin:0} #top .evc-graphics figcaption{color:var(--evc-ink);font-size:15px;font-weight:700;text-align:left;margin:0 0 30px} #top .evc-graphics .evc-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:16px;padding-top:10px;border-bottom:1px solid #9bb2ca;background:repeating-linear-gradient(to top,transparent 0,transparent 49px,#dce6f0 49px,#dce6f0 50px)} #top .evc-graphics .evc-sample{min-width:0;text-align:center;font-variant-numeric:tabular-nums} #top .evc-graphics .evc-bar-space{height:180px;display:flex;align-items:flex-end;padding:0 8px} #top .evc-graphics .evc-bar{background:var(--evc-blue);position:relative;width:100%;min-height:1px} #top .evc-graphics .evc-bar span{position:absolute;top:-24px;left:50%;transform:translateX(-50%);font-size:13px;font-weight:700;white-space:nowrap;color:var(--evc-ink)} #top .evc-graphics .evc-run{display:block;font-size:12px;padding:8px 0;background:#f5f8fb} #top .evc-graphics details{border-top:1px solid #becfe0;margin-top:24px;padding-top:16px;font-size:13px;color:#42566c} #top .evc-graphics summary{cursor:pointer;color:var(--evc-blue);font-weight:700;text-decoration:underline;text-underline-offset:3px} #top .evc-graphics summary:focus-visible{outline:2px solid var(--evc-blue);outline-offset:5px} #top .evc-graphics details p{margin:12px 0 0} #top .evc-graphics .evc-versions{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #becfe0;border-bottom:1px solid #becfe0;margin:24px 0} #top .evc-graphics .evc-version{padding:22px 20px 22px 0} #top .evc-graphics .evc-version+.evc-version{border-left:1px solid #becfe0;padding-left:24px} #top .evc-graphics .evc-version b{display:block;font-size:28px;line-height:1.1;margin-bottom:12px;color:var(--evc-blue)} #top .evc-graphics .evc-version strong{display:block;font-size:18px;margin-bottom:8px} #top .evc-graphics .evc-version span{font-size:14px} #top .evc-graphics .evc-hub{text-align:center;background:var(--evc-blue);color:#fff;padding:18px 20px;font-size:20px;font-weight:700} #top .evc-graphics .evc-branches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;padding-top:24px;position:relative} #top .evc-graphics .evc-branch{border-top:1px solid #7a9ab9;padding-top:18px;position:relative;font-size:14px} #top .evc-graphics .evc-branch:before{content:'';position:absolute;left:50%;top:-25px;height:24px;border-left:1px solid #7a9ab9} #top .evc-graphics .evc-branch strong{display:block;color:var(--evc-blue);font-size:18px;margin-bottom:6px} #top .evc-graphics .evc-flow{list-style:none;margin:24px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0} #top .evc-graphics .evc-flow li{margin:0;padding:18px 18px 0 0;border-top:1px solid #9bb2ca;min-width:0;position:relative;font-size:14px;line-height:1.55} #top .evc-graphics .evc-flow li:before{content:'';position:absolute;top:-5px;left:0;width:9px;height:9px;background:var(--evc-blue);border-radius:50%} #top .evc-graphics .evc-flow strong{display:block;font-size:18px;line-height:1.25;color:var(--evc-blue);margin:0 0 10px} #top .evc-graphics code{display:block;padding:7px 8px;background:#fff;border:1px solid #cbd9e6;color:#192738;font-size:14px;white-space:normal;margin-bottom:10px} #top .evc-graphics .evc-lanes{margin:24px 0 0;border-top:1px solid #9bb2ca} #top .evc-graphics .evc-lane{padding:22px 0;border-bottom:1px solid #9bb2ca;display:grid;grid-template-columns:130px 1fr;gap:24px} #top .evc-graphics .evc-lane>strong{color:var(--evc-blue);font-size:17px} #top .evc-graphics .evc-lane ol{list-style:none;margin:0;padding:0;display:flex;gap:12px;align-items:flex-start} #top .evc-graphics .evc-lane li{flex:1;margin:0;padding:10px 0;border-top:3px solid var(--evc-blue);font-size:14px;line-height:1.4} #top .evc-graphics .evc-lane.evc-background li{border-top-color:#8da5bc} #top .evc-graphics .evc-human{font-weight:700;color:var(--evc-blue)} #top .evc-article-image{margin:32px 0 40px;padding:0} #top .evc-article-image>figcaption{font-size:13px;line-height:1.5;font-weight:400;font-style:normal;letter-spacing:normal;color:#566578;text-align:left;margin:12px 0 0;padding:0} @media(max-width:600px){#top .evc-article-image{margin:28px 0 32px}} @media(max-width:600px){#top .evc-graphics{margin:32px 0;padding:22px 18px;font-size:15px}#top .evc-graphics h2{font-size:25px}#top .evc-graphics h3{font-size:22px}#top .evc-graphics .evc-metrics{gap:20px}#top .evc-graphics .evc-value{font-size:34px}#top .evc-graphics .evc-unit{font-size:16px}#top .evc-graphics .evc-label{font-size:12px}#top .evc-graphics .evc-chart{gap:9px}#top .evc-graphics .evc-bar-space{height:140px;padding:0 2px}#top .evc-graphics .evc-bar span{font-size:10px;top:-20px}#top .evc-graphics .evc-version{padding-right:14px}#top .evc-graphics .evc-version+.evc-version{padding-left:16px;padding-right:0}#top .evc-graphics .evc-version strong{font-size:16px}#top .evc-graphics .evc-version span{font-size:12px}#top .evc-graphics .evc-branches{grid-template-columns:1fr;gap:16px;padding-top:16px}#top .evc-graphics .evc-branch{padding:12px 0 0}#top .evc-graphics .evc-branch:before{display:none}#top .evc-graphics .evc-flow{grid-template-columns:1fr;gap:20px}#top .evc-graphics .evc-flow li{padding:14px 0 0}#top .evc-graphics .evc-lane{grid-template-columns:1fr;gap:14px}#top .evc-graphics .evc-lane ol{gap:10px}#top .evc-graphics .evc-lane li{font-size:12px}#top .evc-graphics .evc-note{font-size:12px}}<\/style>\n<figure class=\"coma-evrotrans-cover evc-article-image\"><img decoding=\"async\" src=\"https:\/\/coma.lv\/wp-content\/uploads\/2026\/10\/evrotrans-2-logo-cover.jpg\" alt=\"EVROTRANS\" width=\"1172\" height=\"660\" fetchpriority=\"high\" style=\"display:block;width:100%;height:auto;\" title=\"\"><\/figure>\n\n<p>An auto parts store starts with a simple question: will this part fit my car? Behind the answer are names in several languages, OEM numbers, vehicle models, donor cars, photographs, stock levels and delivery conditions. To help a customer find the right item quickly, those details need to work together.<\/p>\n<p>For Evrotrans 2.0, we rebuilt both the public store and the tools the team uses to maintain the catalogue and process orders. The result is a custom Node.js platform with a Next.js storefront, Vendure commerce backend, Payload CMS, a dedicated search engine and AI tools.<\/p>\n<p>You can find the short overview in our <a href=\"https:\/\/coma.lv\/en\/portfolio-item\/evrotrans-2-0\/\">Evrotrans 2.0 portfolio entry<\/a>. Here, we take a closer look at the architecture and what the individual parts do in everyday work.<\/p>\n<section class=\"evc-graphics evc-speed\" aria-labelledby=\"evc-speed-title\">\n<h2 id=\"evc-speed-title\">Speed in numbers<\/h2>\n<p>We checked the new homepage across seven consecutive loads. The results show when the browser first displayed content and received the first page data.<\/p>\n<div class=\"evc-metrics\">\n<div class=\"evc-metric\"><span class=\"evc-value\">1.80 <span class=\"evc-unit\">s<\/span><\/span><span class=\"evc-label\">Until the first visible content (FCP)<\/span><\/div>\n<div class=\"evc-metric\"><span class=\"evc-value\">21 <span class=\"evc-unit\">ms<\/span><\/span><span class=\"evc-label\">Until the first byte of data (TTFB)<\/span><\/div>\n<\/div>\n<figure><figcaption>First content appearing in each of 7 loads, seconds<\/figcaption><div class=\"evc-chart\">\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:64.80%\"><span>1.62<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">1<\/span><\/div>\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:65.76%\"><span>1.64<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">2<\/span><\/div>\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:87.36%\"><span>2.18<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">3<\/span><\/div>\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:71.20%\"><span>1.78<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">4<\/span><\/div>\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:85.92%\"><span>2.15<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">5<\/span><\/div>\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:89.92%\"><span>2.25<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">6<\/span><\/div>\n<div class=\"evc-sample\">\n<div class=\"evc-bar-space\">\n<div class=\"evc-bar\" style=\"height:72.00%\"><span>1.80<\/span><\/div>\n<\/div>\n<p><span class=\"evc-run\">7<\/span><\/div>\n<\/div>\n<\/figure>\n<p class=\"evc-note\">FCP range: 1.62\u20132.25 s. The figures above are medians, not the fastest run.<\/p>\n<details>\n<summary>How we measured<\/summary>\n<p>21 October 2026. Evrotrans.lv homepage, desktop Chromium 155, 1440 \u00d7 1000. Seven consecutive navigations with the browser HTTP cache disabled; server and CDN caches retained. No network or CPU speed emulation. A local laboratory observation, not data from all visitors. FCP records the first visible text or image, not full page readiness. We have no comparable measurements for version 1.0, so we do not claim a percentage improvement.<\/p>\n<\/details>\n<\/section>\n<figure class=\"coma-evrotrans-mockup evc-article-image\"><img decoding=\"async\" src=\"https:\/\/coma.lv\/wp-content\/uploads\/2026\/10\/evrotrans-2-cover.jpg\" alt=\"Evrotrans 2.0 \u2013 website mockup on a laptop and phone\" width=\"1172\" height=\"660\" loading=\"lazy\" style=\"display:block;width:100%;height:auto;\" title=\"\"><\/figure>\n<h2>From the first website to a new platform<\/h2>\n<p>Our work with Evrotrans began with <a href=\"https:\/\/coma.lv\/en\/portfolio-item\/evrotrans\/\">a WordPress and WooCommerce website<\/a>. The first project included an online store, external catalogue synchronisation, an eBay integration and four language versions. That was the first stage from which we developed the next solution.<\/p>\n<p>The second version needed to do much more than update the design. It had to connect parts search, a catalogue serving several markets, warehouse work, payments, shipments, returns and content management. Another part of the brief was to apply AI to repetitive catalogue tasks.<\/p>\n<p>We chose the architecture around those processes. WordPress and WooCommerce remain suitable for many stores. For this project, a custom platform let us define clearer responsibilities for the storefront, commerce data, editorial content and search.<\/p>\n<h2>The parts of Evrotrans 2.0<\/h2>\n<p>We built the public store with Next.js and React on Node.js. Vendure manages products, customers, carts, orders and commerce rules. Payload CMS handles pages, articles, images and other editorial content. Meilisearch maintains a catalogue index designed for search.<\/p>\n<p>Data is stored in PostgreSQL, with supporting infrastructure for caching and file storage. Longer operations can run in the background. A customer does not need to wait for a batch of photographs to finish processing or for the search index to be updated.<\/p>\n<p>This separation lets us develop each part at its own pace. We can change the storefront, add staff tools or improve search logic while keeping clear data flows between the components.<\/p>\n<section class=\"evc-graphics evc-architecture\" aria-labelledby=\"evc-architecture-title\">\n<h3 id=\"evc-architecture-title\">What changed underneath<\/h3>\n<div class=\"evc-versions\">\n<div class=\"evc-version\"><b>1.0<\/b><strong>WordPress + WooCommerce<\/strong><span>4 language versions<\/span><\/div>\n<div class=\"evc-version\"><b>2.0<\/b><strong>Node.js + Next.js<\/strong><span>19 language and regional versions<\/span><\/div>\n<\/div>\n<div class=\"evc-hub\">Next.js storefront<\/div>\n<div class=\"evc-branches\">\n<div class=\"evc-branch\"><strong>Meilisearch<\/strong>A dedicated index for parts search.<\/div>\n<div class=\"evc-branch\"><strong>Vendure<\/strong>Products, carts, payments and orders.<\/div>\n<div class=\"evc-branch\"><strong>Payload CMS<\/strong>Pages, articles and editorial content.<\/div>\n<\/div>\n<p class=\"evc-note\">Search, commerce and content can be optimised separately. Components exchange data; this diagram shows their responsibilities.<\/p>\n<\/section>\n<figure class=\"evc-article-image\"><img decoding=\"async\" src=\"https:\/\/coma.lv\/wp-content\/uploads\/2026\/10\/evrotrans-desktop-clean.jpg\" alt=\"The Evrotrans 2.0 desktop homepage\" width=\"1440\" height=\"1000\" loading=\"lazy\" style=\"display:block;width:100%;height:auto;\" title=\"\"><figcaption>The Evrotrans 2.0 desktop homepage.<\/figcaption><\/figure>\n<h2>Search that follows the structure of an auto parts catalogue<\/h2>\n<p>Customers look for parts in different ways. One knows the exact OEM number. Another knows the make and model of the vehicle. Someone else starts with the part\u2019s name. A single search journey would not cover all of them.<\/p>\n<p>We built search by name and OEM code, alongside selection by vehicle make, model and year. A category tree takes customers from a vehicle system, such as the engine or brakes, to a specific type of part. Results support filtering and sorting.<\/p>\n<p>OEM search handles variations in the way a code is written. Spaces and separators should not become unnecessary obstacles. The system processes exact and related matches separately to organise results. Compatibility still needs to be checked against the details of the part and vehicle.<\/p>\n<p>The search index is separate from the commerce database and synchronises with the catalogue. This allows search to be tuned independently of order processing.<\/p>\n<section class=\"evc-graphics evc-search\" aria-labelledby=\"evc-search-title\">\n<h3 id=\"evc-search-title\">A shorter path from code to part<\/h3>\n<ol class=\"evc-flow\">\n<li><strong>Customer enters an OEM<\/strong><code>03L 906 023<\/code>The system handles spaces and separators.<\/li>\n<li><strong>Search index<\/strong><code>03L906023<\/code>Meilisearch uses a prepared catalogue index.<\/li>\n<li><strong>Grouped results<\/strong>Exact matches, the same number family and possible relations.<\/li>\n<\/ol>\n<p class=\"evc-note\">The code illustrates processing, not the availability of a particular item. Compatibility needs to be checked against the part and vehicle details.<\/p>\n<\/section>\n<h2>Donor vehicles as part of the catalogue<\/h2>\n<p>For used parts, the link to the vehicle they came from matters. We built donor vehicle records and relationships between those vehicles and products. The team can work with a particular vehicle and its parts within a shared data model.<\/p>\n<p>The same link is used during photo processing. Before starting a batch, a member of staff can select the donor vehicle. The resulting drafts retain that relationship. The product\u2019s context is recorded during preparation rather than added as a separate task at the end.<\/p>\n<h2>19 language and regional versions in one system<\/h2>\n<p>The public platform serves 19 language and regional versions. These cover Latvia, the Russian-language subdomain, the United Kingdom, France, Germany, Italy, Spain, Estonia, Finland, Czechia, Romania, Sweden, Slovakia, Bulgaria, Denmark, the Netherlands, Portugal, Austria and Belgium.<\/p>\n<p>This does not mean 19 distinct languages. Austria has a regional German version, while Belgium uses a French version. The distinction matters for both customers and search engines.<\/p>\n<p>Each public domain has a defined locale. Interface copy, product and category translations, email content and SEO data need to stay coordinated. A domain should not unexpectedly change language because of an earlier choice saved in the browser.<\/p>\n<p>We configured domain-to-locale mapping, canonical URLs and hreflang relationships. Regional versions use the appropriate language tags, such as de-AT and fr-BE. A shared catalogue avoids maintaining 19 independent copies of the product data.<\/p>\n<h2>Administration built around the team\u2019s work<\/h2>\n<p>The public store is only part of the project. If a member of staff has to open several systems and copy the same information for every order, a new design alone will not make that work easier.<\/p>\n<p>We extended Vendure administration with tools for Evrotrans processes. Product lists expose the catalogue and stock information needed for daily work. Order lists show delivery points, tracking and invoice details. Customer records include order statistics and EVRO PLUS information.<\/p>\n<p>We also built donor vehicle management, photo processing, draft review and sales reports. The system includes an in-store sales workflow. The purpose is straightforward: the action a team member needs should be available next to the product or order they are working on.<\/p>\n<h2>AI: from a photo folder to product drafts<\/h2>\n<p>AI-assisted catalogue preparation is one of the larger parts of the project. A used part may have several photographs from different angles, a close-up and a label carrying a code. Before publication, someone needs to work out which pictures belong together and where the part belongs in the catalogue.<\/p>\n<p>A member of staff uploads a folder of photographs and can select a donor vehicle. AI processes the images in batches, groups them, suggests a category, attempts to read OEM numbers and creates product drafts with image galleries. Uncertain OEM numbers are flagged for review.<\/p>\n<p>Processing runs in a persistent server job queue. Its state and progress are saved, so closing the browser does not stop a recognition job that has already started. Staff can return to the results later.<\/p>\n<p>Before publication, a person checks the category, photographs, OEM numbers, price and stock. A draft cannot be published without a positive price, and flagged OEM numbers need to be reviewed. AI prepares the material; staff retain the decision about what goes into the public catalogue.<\/p>\n<p>That boundary matters. Recognising a part in a photograph does not guarantee compatibility, and a code read from an image may contain an error. Review is therefore part of the workflow itself.<\/p>\n<h2>AI also helps with category translations<\/h2>\n<p>Adding one category to a multilingual catalogue creates work in several languages. We built a tool that uses an existing translation glossary and, when needed, prepares additional translations through an OpenAI integration.<\/p>\n<p>The translation logic is tailored to auto parts: short, specific terms without promotional wording or an unnecessary vehicle make. Abbreviations such as ABS, ECU and EGR are preserved where appropriate. The results enter the administration workflow for the team to work with.<\/p>\n<h2>Payments, invoices and shipping<\/h2>\n<p>We integrated Stripe, Klix and bank transfers. Payment and order states are handled on the server, with administration tools for checking payment situations. Invoices can be generated and downloaded as PDFs.<\/p>\n<p>For shipping, we developed integrations with Omniva, DPD, Venipak, Unisend and UPS. The platform includes pickup point selection, shipping label generation, courier collection and tracking workflows. Available actions depend on the carrier, destination and shipment details.<\/p>\n<p>Returns are connected to order information and customer accounts. The available carriers and actions follow the order\u2019s state and return conditions. After-sales work can use information already in the system rather than starting the paperwork again.<\/p>\n<h2>Customer accounts and EVRO PLUS<\/h2>\n<p>Customer accounts contain order history, addresses, invoices and return requests. We also implemented the EVRO PLUS rewards programme: a 5% bonus on paid merchandise is linked to the customer\u2019s balance and transaction history.<\/p>\n<p>Customers can use rewards towards later merchandise purchases under the programme\u2019s terms. The system also tracks rewards reserved in a cart and releases the reservation if the order is not completed. Customers and staff see information from the same system.<\/p>\n<h2>Content and communication after the purchase<\/h2>\n<p>Payload CMS gives the team a separate workspace for articles, pages, images and navigation. Localised fields, drafts and versions allow content to be prepared before publication. Editorial work can develop without changing the commerce logic.<\/p>\n<p>For order communication, we built multilingual email templates and scheduled notification workflows. These include order confirmations, shipping notices, review requests and abandoned checkout reminders. An email preview tool in administration allows the team to check content and presentation.<\/p>\n<h2>Performance starts with how the work is divided<\/h2>\n<p>We addressed performance at several levels: page rendering, data requests, image processing, caching and the search index. Longer operations were moved into background jobs. Catalogue-to-search synchronisation has its own processing logic.<\/p>\n<p>This makes it possible to improve performance where it matters: search, category navigation or image loading. Staff tools and background processing do not need to turn every customer request into an operation spanning the entire system.<\/p>\n<section class=\"evc-graphics evc-parallel\" aria-labelledby=\"evc-parallel-title\">\n<h3 id=\"evc-parallel-title\">The store runs while AI processes photographs<\/h3>\n<div class=\"evc-lanes\">\n<div class=\"evc-lane\"><strong>Customer journey<\/strong><\/p>\n<ol>\n<li>Search<\/li>\n<li>Part page<\/li>\n<li>Cart<\/li>\n<\/ol>\n<\/div>\n<div class=\"evc-lane evc-background\"><strong>Background work<\/strong><\/p>\n<ol>\n<li>Photographs<\/li>\n<li>AI draft<\/li>\n<li class=evc-human>Human review<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p class=\"evc-note\">Photos are processed in their own job queue. A customer request does not wait for the batch to finish. Publication follows staff review.<\/p>\n<\/section>\n<h2>Migration and SEO across markets<\/h2>\n<p>Replacing an existing store means accounting for the data and addresses customers already use. We created migration tools for WordPress and WooCommerce data, together with legacy URL handling and redirects. Product and category links need to connect to the new structure.<\/p>\n<p>Technical SEO includes domain-specific canonical URLs, hreflang, sitemaps, product structured data and localised metadata. Filters and other technical URLs have their own indexing rules to avoid producing unnecessary copies of the same page for search engines.<\/p>\n<p>Deployment includes automated checks and release records, while database backup verification tools support maintenance. These details are less visible than the design, but they matter once the platform is in daily use.<\/p>\n<h2>What Evrotrans gained<\/h2>\n<p>Evrotrans 2.0 connects parts selection, 19 language and regional versions, staff tools, payments, shipping and content management in one platform. AI helps prepare the catalogue, with review retained wherever an error could affect a customer.<\/p>\n<p>The value lies in the connections. Photo processing leads to a product draft. A reviewed product enters the catalogue and search. An order connects to a payment, invoice, shipment and customer history. Further improvements can build on that foundation.<\/p>\n<p>Visit the <a href=\"https:\/\/evrotrans.lv\/\" target=\"_blank\" rel=\"noopener\">Evrotrans store<\/a>, view the <a href=\"https:\/\/coma.lv\/en\/portfolio-item\/evrotrans-2-0\/\">second version in our portfolio<\/a>, or read about <a href=\"https:\/\/coma.lv\/en\/portfolio-item\/evrotrans\/\">the first version<\/a>.<\/p>\n<p>If your store needs tailored search, staff tools or integrations with other systems, explore our <a href=\"https:\/\/coma.lv\/en\/services\/e-commerce\/\">e-commerce development service<\/a>. We start with the work your team needs to do and choose the technical solution around it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Evrotrans 2.0 brings together an auto parts store, staff tools, international shipping and AI. We explain the architecture and practical decisions behind the platform.<\/p>\n","protected":false},"author":1,"featured_media":41991,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1410,1339],"tags":[],"class_list":["post-41970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-customer-stories","category-ai"],"_links":{"self":[{"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/posts\/41970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/comments?post=41970"}],"version-history":[{"count":5,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/posts\/41970\/revisions"}],"predecessor-version":[{"id":42009,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/posts\/41970\/revisions\/42009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/media\/41991"}],"wp:attachment":[{"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/media?parent=41970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/categories?post=41970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coma.lv\/en\/wp-json\/wp\/v2\/tags?post=41970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}