<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Alex Werder</title>
    <description>The latest articles on Forem by Alex Werder (@alex_werder).</description>
    <link>https://forem.com/alex_werder</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3583029%2F0dfbfc91-265e-4e5a-9f36-dd3c822db083.png</url>
      <title>Forem: Alex Werder</title>
      <link>https://forem.com/alex_werder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alex_werder"/>
    <language>en</language>
    <item>
      <title>Best Open-Source Business Software powered by PHP</title>
      <dc:creator>Alex Werder</dc:creator>
      <pubDate>Sat, 29 Nov 2025 09:52:14 +0000</pubDate>
      <link>https://forem.com/alex_werder/best-open-source-business-software-powered-by-php-3jp</link>
      <guid>https://forem.com/alex_werder/best-open-source-business-software-powered-by-php-3jp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;PHP is still one of the top languages for web-based business applications. Its widespread use makes these tools easy to host, affordable to maintain, and supported by large developer communities worldwide. Here’s a detailed look at the best open-source solutions for Enterprise Resource Planning (ERP), Customer Relationship Management (CRM), E-Commerce, Data Management, and IT Service Management.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Enterprise Resource Planning (ERP) &amp;amp; CRM
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Dolibarr&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A modular ERP and CRM suite that prioritizes simplicity. Unlike typical ERPs, Dolibarr lets you activate only the features you need, such as Invoicing and Contacts, without unnecessary clutter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Freelancers, small-to-medium businesses (SMBs), and nonprofits seeking an easy-to-use management tool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs (Unique Selling Propositions):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No "Core" Gating:&lt;/strong&gt; The open-source version gives you full access. Key features like double-entry accounting, inventory management, and manufacturing are free and not behind a paywall.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular &amp;amp; Lightweight:&lt;/strong&gt; Start with just the "CRM" module, and add "Stock" or "Accounting" when you need them. This keeps the interface clean and light, allowing it to run well on budget shared hosting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low-Code Builder:&lt;/strong&gt; Includes a "Module Builder" to help non-developers create custom data objects and automatically generate PHP code to manage them.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Very extensible through the "DoliStore," which offers hundreds of external modules for connecting to banks, e-commerce sites, and generating specialized reports.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;SuiteCRM&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A robust CRM that was forked from SugarCRM. It is often seen as the most powerful open-source alternative to Salesforce.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Mid-to-large enterprises needing complicated sales pipelines, marketing automation, and detailed customer support workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Powerful Workflow Automation:&lt;/strong&gt; The "Workflows" module lets you set up complex logic chains without needing to write code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complete Customer View:&lt;/strong&gt; It offers a true "Single Customer View," connecting every email, contract, invoice, support ticket, and project to the customer record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise Security:&lt;/strong&gt; Granular "Role Management" lets you control access down to specific fields, such as allowing Sales Reps to see a client's name but not their credit limit.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; It features a "Module Builder" for creating custom modules without code and a strong API (REST v8) for developer integrations.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;EspoCRM&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A lightweight, single-page application (SPA) CRM that feels quick and modern. It emphasizes responsiveness and an intuitive interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Startups and businesses that find traditional CRMs slow or complicated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single Page Application (SPA):&lt;/strong&gt; It operates like a desktop app, so it does not reload the page when clicking links, ensuring a fast user experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BPM Engine:&lt;/strong&gt; Features a visual Business Process Management tool to model complex business flows, such as approval processes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layout Manager:&lt;/strong&gt; The admin panel lets you easily drag-and-drop fields and rearrange the interface for different entities.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; It has an "Extensions" marketplace for VoIP integration and Google Calendar sync, among other features, and allows developers to easily create custom entities.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. E-Commerce
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Magento (Adobe Commerce Open Source)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A scalable, feature-rich e-commerce platform that can manage thousands of products and complex transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Medium-to-large retailers with development teams needing full control over their store's features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scalability &amp;amp; Architecture:&lt;/strong&gt; Designed for high volumes, it uses advanced caching and indexing to handle large catalogs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B2B Features:&lt;/strong&gt; The open-source version manages complex pricing rules and customer groups better than competitors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Store Management:&lt;/strong&gt; You can operate multiple websites from a single admin panel, each with different currencies and languages.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; It has the largest ecosystem of enterprise-grade extensions, including shipping, payment gateways, and ERP connectors.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Demo:&lt;/strong&gt; [Magento Open Source Info]&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;WooCommerce&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A flexible open-source e-commerce plugin for WordPress that transforms a standard site into a complete store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Content-driven businesses, small retailers, and anyone familiar with the WordPress ecosystem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content + Commerce:&lt;/strong&gt; Since it runs on WordPress, you get top blogging and SEO tools integrated with your products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Ownership:&lt;/strong&gt; You own the database, so you can move your site if needed, unlike with SaaS platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rest API:&lt;/strong&gt; Offers a mature REST API for using WooCommerce as a backend while building a custom mobile app or frontend.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; A vast library of free and paid plugins for nearly any functionality you might need.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;PrestaShop&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A dedicated e-commerce solution that combines the complexity of Magento with the user-friendliness of WooCommerce.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Retailers who want a standalone store system but do not have the server budget for Magento.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modern Architecture:&lt;/strong&gt; Built on the Symfony framework for stability and security, making it easy for modern PHP developers to customize.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internationalization:&lt;/strong&gt; Great for cross-border sales, handling complex tax rules and localization out of the box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Activity Dashboard:&lt;/strong&gt; Offers a live overview of visitors, active carts, and sales trends in real-time in the back office.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Features a carefully vetted "Addons Marketplace" for high-quality modules.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Project Management
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Leantime&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A project management system for those who aren't professional project managers. It combines task management with strategic planning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Creative agencies, product teams, and users who may struggle with complex tools like Jira.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strategy &amp;amp; Canvas Tools:&lt;/strong&gt; It offers built-in whiteboards for planning, including SWOT analysis, Lean Canvas, and Empathy Maps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cognitive Design:&lt;/strong&gt; The interface aims to reduce cognitive load by separating "Todo" from "Strategy."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time Blocking:&lt;/strong&gt; Integrates Time Blocking and Pomodoro timers into the task view directly.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Supports plugins and has a growing API for integrations.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Kanboard&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A minimalist software focused on the Kanban method for visualizing workflow stages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Teams wanting a straightforward visual overview of tasks without extra features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extreme Performance:&lt;/strong&gt; Written in pure PHP, it runs quickly even on small server instances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Actions:&lt;/strong&gt; Lets you set up rules such as automatically closing a task once it’s moved to "Done."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics:&lt;/strong&gt; Provides detailed charts to analyze team productivity despite its simplicity.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Supports plugins for adding features like time tracking or calendar notifications.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Helpdesk &amp;amp; ITSM Systems
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;GLPI&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A powerful IT Service Management (ITSM) tool that combines a Service Desk with Asset Management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; IT departments and Managed Service Providers (MSPs) needing to track hardware and software alongside support tickets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Inventory:&lt;/strong&gt; Tracks devices and connections, showing where each PC is connected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ITIL Compliance:&lt;/strong&gt; Designed around ITIL standards, it offers workflows for incidents, problems, changes, and projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial Management:&lt;/strong&gt; Keeps tabs on the total cost of ownership for assets, including depreciation and license expirations.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Features a vast plugin marketplace for adding functionality.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;osTicket&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A popular support ticket system that converts inquiries from email, web forms, and phone calls into a simple web-based customer support platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Small-to-medium businesses needing a structured way to handle customer emails without complex IT asset tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email Piping Reliability:&lt;/strong&gt; It has a robust email parsing engine, letting users interact entirely via email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ticket Locking:&lt;/strong&gt; Prevents two agents from addressing the same ticket at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SLA Management:&lt;/strong&gt; Lets you set Service Level Agreements and automates escalations if they are breached.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Supports plugins for authentication and storage, although the ecosystem leans more towards the legacy side.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;FreeScout&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A lightweight helpdesk that resembles a shared inbox and provides a personal touch to customer support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Customer support teams wanting to avoid a robotic approach to ticketing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Invisible" Helpdesk:&lt;/strong&gt; No ticket numbers or automated headers make it feel more personal for customers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile App:&lt;/strong&gt; Includes a native mobile app for iOS and Android for support on the go.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multilingual Support:&lt;/strong&gt; Handles multiple languages smoothly and allows setting up different mailboxes for various regions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Uses a "Modules" model, allowing for affordable one-time fees to add features.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. HR &amp;amp; Accounting
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;OrangeHRM&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A complete Human Resource Management (HRM) system that digitizes HR operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Mid-sized companies wanting to move beyond spreadsheets for managing employees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Central Employee Database:&lt;/strong&gt; Acts as a hub for all employee information, including job titles and reporting lines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leave Management:&lt;/strong&gt; Offers a sophisticated rules engine for managing time off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit Trails:&lt;/strong&gt; Keeps detailed logs of all changes to employee records for compliance and security.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; The "Marketplace" provides paid add-ons for features like corporate branding.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Akaunting&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; Online accounting software built with modern technologies aimed at simplifying financial workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Small business owners and freelancers seeking a self-hosted alternative to QuickBooks or Xero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client Portal:&lt;/strong&gt; Lets you share invoices with customers via a unique link for viewing and online payment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vendor Management:&lt;/strong&gt; Manages not just income but also bills and payments to suppliers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Currency:&lt;/strong&gt; Automatically handles foreign currencies and exchange rates.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Highly extendable through its built-in App Store.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Collaboration
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Nextcloud&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A productivity platform that offers file storage, document editing, and communication tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Organizations that prioritize data sovereignty and privacy, looking for a "Google Workspace" alternative on their own servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Federation:&lt;/strong&gt; You can share folders between different Nextcloud servers (e.g., Company A shares a folder with Company B) while keeping the data on the original server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Universal File Access:&lt;/strong&gt; It can connect external storage services (S3, FTP, SMB/Windows Network Drive, Google Drive) into the user interface, creating a central view for all your files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security First:&lt;/strong&gt; It includes strong security features like Brute Force Protection, 2-Factor Authentication, and server-side encryption.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; A vast app ecosystem lets you add features like Calendars, Mail, Maps, and Deck (Kanban).&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Product Information Management (PIM)
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Akeneo PIM&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; The leading open-source PIM used to centralize and harmonize product information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Retailers and brands with large product catalogs selling across multiple channels (Amazon, Shopify, Print).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Quality Insights:&lt;/strong&gt; It provides a "Completeness" dashboard that visually shows which products are missing attributes needed for export (e.g., "Missing weight for Amazon export").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asset Management:&lt;/strong&gt; Even the community edition manages product media (images, PDFs) well, linking them to specific product variants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Governance:&lt;/strong&gt; You can specify which users can edit which attributes (e.g., Copywriters can change descriptions, but only Engineers can modify technical specs).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; A large marketplace for connectors to nearly any e-commerce platform or ERP.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;AtroPIM&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; A modern, &lt;a href="https://www.atropim.com" rel="noopener noreferrer"&gt;highly adaptable PIM&lt;/a&gt; system built on the &lt;strong&gt;AtroCore&lt;/strong&gt; platform. It stands out for its ease of configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Businesses that need a PIM easily suited to specific data models without complicated coding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Data Model:&lt;/strong&gt; You can add new fields, relationships, and entities instantly without downtime or deployment scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Catalogs:&lt;/strong&gt; Unlike many PIMs that require a single tree structure, AtroPIM allows for multiple independent catalogs (e.g., one hierarchy for the website and a different one for the Print Catalog).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in DAM:&lt;/strong&gt; It has a complete Digital Asset Management system right out of the box, allowing advanced metadata tagging on images and files.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Its modular design allows for the installation of free and paid modules (e.g., for specific data exports or DAM features).&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Master Data Management (MDM)
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Pimcore&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; An enterprise digital platform that combines PIM, MDM, DAM (Digital Asset Management), and a CMS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Enterprises and agencies needing a single platform to manage all digital data and the customer-facing website at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Headless &amp;amp; GraphQL:&lt;/strong&gt; Pimcore is made to be a "Content-as-a-Service" provider. It allows you to supply data to mobile apps, smart devices, and websites via a powerful GraphQL API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web-to-Print:&lt;/strong&gt; It has unique features for automating the creation of PDF catalogs and price sheets directly from product data (Database Publishing).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Digital Asset Management (DAM):&lt;/strong&gt; Its DAM is built-in and effective, handling image transcoding, focal points, and versioning at an enterprise level.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; A highly flexible framework lets developers build custom applications using the data.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;AtroCore&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is it?&lt;/strong&gt; The foundational data platform that powers AtroPIM. As a standalone solution, it functions as a &lt;a href="https://www.atrocore.com" rel="noopener noreferrer"&gt;highly flexible enterprise-ready MDM&lt;/a&gt; software and system integration platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who should use it?&lt;/strong&gt; Developers and businesses looking to create custom master data applications (e.g., managing supplier lists, location data, or complex entity relationships) beyond just products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USPs:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Field-Level Access Control:&lt;/strong&gt; Offers detailed permission settings. You can specify which role can read, edit, or delete specific fields in a record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Engine:&lt;/strong&gt; Comes with a configurable workflow engine to handle data governance processes (e.g., "New Supplier" approval request loop).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queue Manager:&lt;/strong&gt; Built to manage heavy data loads, it includes a background job manager to process imports and exports without slowing down the user interface.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Extensibility:&lt;/strong&gt; Fully modular; serves as the base for creating custom data applications.&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>php</category>
      <category>opensource</category>
      <category>software</category>
    </item>
    <item>
      <title>Create Custom Business Software in Two Hours and Free of Charge: Ditching the Buy-vs-Build Dilemma</title>
      <dc:creator>Alex Werder</dc:creator>
      <pubDate>Wed, 05 Nov 2025 09:05:11 +0000</pubDate>
      <link>https://forem.com/alex_werder/create-tailored-business-software-in-two-hours-and-free-of-charge-ditching-the-buy-vs-build-dilemma-1ghd</link>
      <guid>https://forem.com/alex_werder/create-tailored-business-software-in-two-hours-and-free-of-charge-ditching-the-buy-vs-build-dilemma-1ghd</guid>
      <description>&lt;h2&gt;
  
  
  Issues with Conventional Business Software
&lt;/h2&gt;

&lt;p&gt;Each growing company eventually stagnates because of its operational software. Most companies start with &lt;strong&gt;spreadsheets&lt;/strong&gt; and &lt;strong&gt;ERP&lt;/strong&gt; systems, later they start using &lt;strong&gt;off-the-shelf generic CRMs&lt;/strong&gt;. After a while they may realize they need something additional, more tailored.&lt;/p&gt;

&lt;p&gt;These companies then face the apparently impossible task of deciding &lt;strong&gt;"Buying vs Building"&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Buying&lt;/strong&gt; provides almost immediate return on investment as one gets the software as it is directly, with all featured (needed or not). Still, it forces you to adopt your business processes to the "software flexibility". This may be expensive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Building&lt;/strong&gt; custom software means complete control, a flawless software, and independence from software vendors. However, it can leads to lots of disruption, and it takes a long time with the classical software development. This will be definitely even more expensive.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For small- and medium-sized businesses (SMBs) it is particularly challenging. Although they only require a small portion of the features a large suite offers, they still have to consider the massive &lt;strong&gt;Total Cost of Ownership (TCO)&lt;/strong&gt; for either option. &lt;/p&gt;

&lt;h3&gt;
  
  
  Standard Business Software
&lt;/h3&gt;

&lt;p&gt;Every growing business eventually faces the same dilemma: how to manage its unique processes without breaking the bank or losing agility. When it comes to traditional business software, whether off-the-shelf or tailored, more problems than solutions are commonplace. Off-the-shelf solutions may work for a while, but only until the need for change management arises. When your business requires slight variations, you encounter inflexibility: rigid data structures, gaps and workflows that do not align with how your team operates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom Software Development
&lt;/h3&gt;

&lt;p&gt;At the other end of the spectrum, while custom software development offers unlimited potential, it also brings its own drawbacks in terms of cost, time and ongoing maintenance issues. For SMEs, the 'buy vs. build' dilemma can be confusing. It is common and paradoxical for software to limit functionality in order to contain costs, which can lead to expensive and inflexible systems.  &lt;/p&gt;

&lt;h2&gt;
  
  
  An Overlooked Option: The Rapid Development Platform
&lt;/h2&gt;

&lt;p&gt;Is there a third path? The flexibility of custom development with the profits of the no-code/low-code paradigm?&lt;/p&gt;

&lt;p&gt;The answer is the &lt;strong&gt;Rapid Application Development (RAD)&lt;/strong&gt;. Low-code and no-code is the paradigm where modern software configurations and business applications development is built using visual tools.&lt;/p&gt;

&lt;p&gt;Currently, some rapid application development tools offer a business the ability to develop software without the purchase of a development team, or the expense of a dev team, and without development efforts.&lt;/p&gt;

&lt;p&gt;These tools come with &lt;strong&gt;low-code&lt;/strong&gt; and &lt;strong&gt;no-code&lt;/strong&gt; options, and for deep customization, traditional development remains. Data models, user interfaces, and business logic definitions can be designed in &lt;strong&gt;hours rather than months&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An example of such a tool is &lt;a href="https://github.com/atrocore/atrocore" rel="noopener noreferrer"&gt;&lt;strong&gt;AtroCore&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  AtroCore As Your Digital LEGO Kit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AtroCore&lt;/strong&gt; is a powerful and developer-friendly &lt;strong&gt;open-source framework&lt;/strong&gt; designed for accelerated software creation. It is a free, flexible &lt;strong&gt;xRM (Anything Relationship Management)&lt;/strong&gt; platform that lets you define complex business processes without having to conform to a restrictive template.&lt;/p&gt;

&lt;p&gt;Creating an application involves three primary configuration steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Configure the Data Model:&lt;/strong&gt; Specifying the structure of your Entities (data tables) and Fields (data types).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Configure the User Interfaces:&lt;/strong&gt; Designing your views and layouts using the drag-and-drop interface.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Configure / Develop the Business Logic:&lt;/strong&gt; Creating your rules, automations, and workflows visually.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In less than an hour, you can build a simple, working application to manage any business process and data &lt;strong&gt;without any coding&lt;/strong&gt;. Your advanced and custom business software development can be &lt;strong&gt;with minimal coding&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Best of all, you can create complete, professional business applications at no cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Custom HR and Recruiting System in 120 Minutes
&lt;/h2&gt;

&lt;p&gt;Any business software can be developed using AtroCore Data Platform. In this article, we will build a simple yet functional custom HR and recruiting system. This should take about an hour.&lt;/p&gt;

&lt;h3&gt;
  
  
  Defining the Requirements
&lt;/h3&gt;

&lt;p&gt;We start with requirements. Our software should cover the following areas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Employee Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personal Employee Data (ID, address, emergency contacts)&lt;/li&gt;
&lt;li&gt;Company-related Employee Data (start date, positions, promotions, and transfers)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recruitment&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Candidate management&lt;/li&gt;
&lt;li&gt;Interviewer assignments (multiple interviewers per candidate)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation and Setup (15 minutes)
&lt;/h3&gt;

&lt;p&gt;The first 15 minutes are dedicated to setting up the platform. Refer to the &lt;a href="https://help.atrocore.com/installation-and-maintenance/installation" rel="noopener noreferrer"&gt;official installation manual&lt;/a&gt; for guidance on installation and maintenance. You can install the software either as a Docker container or directly on your virtual machine. It must be a root server; it will not work on a managed server system. You will need at least 2 CPUs and 4 GB of RAM. Once installed, the system will create an admin user for you, which will be used for the next steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure the Data Model (45 minutes)
&lt;/h3&gt;

&lt;p&gt;The data model is a fundamental part of any business software. In AtroCore, the data model can be defined using &lt;strong&gt;entities&lt;/strong&gt;. An entity is a table in which data is stored, and its fields are its columns. Each field has a dedicated data type, meaning that data of this type is validated accordingly.&lt;/p&gt;

&lt;p&gt;For this project, we need to create the following entities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Employee&lt;/strong&gt; – can optionally have a related &lt;code&gt;User&lt;/code&gt; account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Candidate&lt;/strong&gt; – has no &lt;code&gt;User&lt;/code&gt; account in the system, this is a person who applies for a job vacancy. A candidate may apply for only one vacancy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vacancy&lt;/strong&gt; – the position to be filled within the company.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interview&lt;/strong&gt; – direct communication with a candidate to assess their suitability. Multiple interviews can be conducted with a candidate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To configure all the needed data structures and relationships, we need to open the Entity Manager (Administration / Customization / Entities).&lt;/p&gt;

&lt;p&gt;To do this, go to &lt;code&gt;Administration&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3sm5r4p7owctlwbtj6d7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3sm5r4p7owctlwbtj6d7.png" alt=" " width="556" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then scroll down to the customization section and click on &lt;code&gt;Entities&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4zz42z0epsl0yjbr9i6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4zz42z0epsl0yjbr9i6.png" alt=" " width="682" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Create entity &lt;code&gt;Employee&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;To create a new entity, just click on the button &lt;code&gt;Create&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhiakp7yot2j06t3abf32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhiakp7yot2j06t3abf32.png" alt=" " width="647" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter the Code, Type (= Base), Singular Label Name, and Plural Label Name, select the Icon, and click on the button &lt;code&gt;Save&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwre91vxv9ycjiffl0fu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwre91vxv9ycjiffl0fu.png" alt=" " width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Entity is created. Now we need to configure the required fields. We want to add the following fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt; (string) - automatically created in any new entity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt; (string) - automatically created in any new entity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Position&lt;/strong&gt; (string) - current position of the employee.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start Date&lt;/strong&gt; (date) - to store the date when the employee started to work for our company.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Promotion Date&lt;/strong&gt; (date) - date when the employee was last promoted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID Card&lt;/strong&gt; (file) - ID Card of the employee, to be uploaded as a file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Address&lt;/strong&gt; (text) - Textarea where we will store the private address of the employee.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User&lt;/strong&gt; (link) - Linked User Account within the system; this is a many-to-one relation between entities &lt;code&gt;Employee&lt;/code&gt; and &lt;code&gt;User&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To create a new field, scroll down and on the panel for fields, click on the &lt;code&gt;+&lt;/code&gt; icon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkalm6c85u9rxvunqsct4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkalm6c85u9rxvunqsct4.png" alt=" " width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the modal window, set the field name &lt;code&gt;Position&lt;/code&gt;, assign the appropriate data type to &lt;code&gt;String&lt;/code&gt;, and mark the field as required. Click on &lt;code&gt;Save&lt;/code&gt; to add this field to the &lt;code&gt;Employee&lt;/code&gt; entity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvlf8wemq4rixlrfwicu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvlf8wemq4rixlrfwicu.png" alt=" " width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create all the other fields mentioned above.&lt;br&gt;
To create a relationship between &lt;code&gt;User&lt;/code&gt; and &lt;code&gt;Employee&lt;/code&gt;, switch to the &lt;code&gt;User&lt;/code&gt; entity and click the &lt;code&gt;+&lt;/code&gt; icon in the fields panel. In the opened modal window, fill out the fields as shown in the screenshot, then click the &lt;code&gt;Save&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv9dm7lij2acbfq9qwg8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv9dm7lij2acbfq9qwg8.png" alt=" " width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Create entity &lt;code&gt;Vacancy&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Create a new entity &lt;code&gt;Vacancy&lt;/code&gt; to manage all of the company's vacancies.&lt;br&gt;
It should have only the fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name (string)&lt;/li&gt;
&lt;li&gt;Description (text)&lt;/li&gt;
&lt;li&gt;Status (list), with options as on the screenshot below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62xczk65lj5zajgzqog3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62xczk65lj5zajgzqog3.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Create entity &lt;code&gt;Candidate&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Now create a new entity &lt;code&gt;Candidate&lt;/code&gt; (also of type Base) with the following fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name and Description will be automatically created&lt;/li&gt;
&lt;li&gt;E-Mail (email)&lt;/li&gt;
&lt;li&gt;Telephone (string)&lt;/li&gt;
&lt;li&gt;Address (text)&lt;/li&gt;
&lt;li&gt;Vacancy (link)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, add the field &lt;code&gt;Status&lt;/code&gt; of type &lt;code&gt;List&lt;/code&gt; to store the final status for the candidate. As option values we apply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New - this is just a new applicant&lt;/li&gt;
&lt;li&gt;Selected - candidate is selected for interview&lt;/li&gt;
&lt;li&gt;Interviewed - to indicate that all of the candidate's interviews have been conducted.&lt;/li&gt;
&lt;li&gt;Approved - one of the possible final status values to mark the candidate as approved&lt;/li&gt;
&lt;li&gt;Rejected - One of the possible final status values to mark the candidate as rejected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkqjzehrp9zpl2gyz7kk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkqjzehrp9zpl2gyz7kk.png" alt=" " width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Create entity &lt;code&gt;Interview&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Now create a new entity &lt;code&gt;Interview&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;An Interview has the following fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Summary&lt;/strong&gt; (string) - I will rename the standard field &lt;code&gt;Name&lt;/code&gt; for this. In this field, the interviewer will write a summary of their interview with a candidate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt; (text) - any additional information can be stored here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score&lt;/strong&gt; (float) - general score of the Candidate. Let's assume 10 would be our maximum value; this can be set in the field configuration too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Date and time&lt;/strong&gt; (date and time) - when the interview is scheduled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interviewer&lt;/strong&gt; (link) - a relationship to the &lt;code&gt;User&lt;/code&gt; entity, as I want to assign a system user who will be responsible for conducting the interview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt; (list) - field with the following options:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faazy4mrh7zx5rybx0s19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faazy4mrh7zx5rybx0s19.png" alt=" " width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure the User Interfaces (30 minutes)
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Navigation Menu
&lt;/h4&gt;

&lt;p&gt;Click the hamburger menu in the top left corner, then click the gear icon to the right of "Navigation Menu".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy10kxtwy2glckw4fy7x8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy10kxtwy2glckw4fy7x8.png" alt=" " width="452" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use drag-and-drop to configure the desired navigation menu. Add all the entities that were created previously, then click the &lt;code&gt;Save&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdwoet7lllrmf3rzwxy7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdwoet7lllrmf3rzwxy7.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I configured my favorites, and now my navigation menu and toolbar look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4lrwmdck7ow3cwg0ka2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4lrwmdck7ow3cwg0ka2.png" alt=" " width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Entity Layouts
&lt;/h4&gt;

&lt;p&gt;For every entity in the system, we need to configure 2 layouts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;List View&lt;/strong&gt; - is the view where I see all my records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detail View&lt;/strong&gt; - shows a record with all its field values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgm55vzewm9mjn8e28vu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgm55vzewm9mjn8e28vu.png" alt=" " width="685" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For every entity we added, I configure the List View:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5h73korhlpi97ppvjex7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5h73korhlpi97ppvjex7.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... and Detail View:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvf15ar841h6f7z9etsep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvf15ar841h6f7z9etsep.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also want to see which User records are linked with an Employee record, so I configure an additional view of type "Relation" and add Users here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgpvhy2ypk77blxswzlp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgpvhy2ypk77blxswzlp.png" alt=" " width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I perform similar layout configurations for all other entities and the relations between them.&lt;/p&gt;

&lt;p&gt;Now I can manage records for Employees:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9khunod12b3ukaha3tc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9khunod12b3ukaha3tc3.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can manage records for Candidates:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5mpgehjhmlkkktd1bhc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5mpgehjhmlkkktd1bhc.png" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can manage records for Vacancies:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F758k8e65oadmcgnu0cyo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F758k8e65oadmcgnu0cyo.png" alt=" " width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can manage records for Interviews:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvodjq3dxyla3619ei3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvodjq3dxyla3619ei3j.png" alt=" " width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create a new interview for a candidate you've already added, click the "+" icon in the Interviews panel. You can also post comments about the candidate in the right sidebar, and these comments should be available to all system users who have access to them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi04u3n366zbwazqptawp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi04u3n366zbwazqptawp.png" alt=" " width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure Roles (30 minutes)
&lt;/h3&gt;

&lt;p&gt;AtroCore offers advanced access management capabilities from the outset. You can use it to configure different user roles, define access levels for records within the same entity, and apply custom permissions at the field level.&lt;br&gt;
We finalize the application by configuring the necessary roles. Under Administration &amp;gt; Access Management &amp;gt; Roles, we can configure three roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Employee&lt;/li&gt;
&lt;li&gt;Interviewer&lt;/li&gt;
&lt;li&gt;HR Manager.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system can be configured so that a user with the "Employee" role can only see their own employee record in read-only mode.&lt;br&gt;
An interviewer should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See all relevant candidates and make notes, but not edit the candidate record directly.&lt;/li&gt;
&lt;li&gt;Modify their own interview record with the candidate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An HR manager would be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modify all employee records&lt;/li&gt;
&lt;li&gt;Create and manage vacancies&lt;/li&gt;
&lt;li&gt;Control the interview process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Role configuration is the final step before the software can be used in production. With a few more hours invested in configuration, we can easily cover additional business processes, such as vacation and leave management, and much more.&lt;/p&gt;




&lt;p&gt;We can now manage employees and all their private and company-related information. We can manage job openings, interviews, and candidates. We can assign interviewers, set interview scores, and assign statuses to vacancies and candidates. In this example, I wanted to show how basic functionality can be achieved quickly and easily without coding.&lt;br&gt;
The next step would be implementation of automated notifications and tailored workflows. The next step is to implement automated notifications and tailored workflows. A little coding would be needed for both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Possibilities: Scaling Without Starting Over
&lt;/h2&gt;

&lt;p&gt;The beauty of a platform like AtroCore is that you can scale with two key development options when advanced customization is needed:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Create Own Custom Actions
&lt;/h3&gt;

&lt;p&gt;If you need a simple button on a record to perform a specific task (e.g., a "Send Interview Invitation Email" button), you can use &lt;a href="https://help.atrocore.com/developer-guide/custom-action" rel="noopener noreferrer"&gt;&lt;strong&gt;Custom Actions&lt;/strong&gt;&lt;/a&gt;. This low-effort option is perfect for small, targeted pieces of business logic that don't fit into a standard workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create Own Modules
&lt;/h3&gt;

&lt;p&gt;If you need to develop complex, integrated business logic and workflows that run persistently in the background or require entirely new UI components, you can create your &lt;a href="https://help.atrocore.com/developer-guide/own-modules" rel="noopener noreferrer"&gt;&lt;strong&gt;Own Modules&lt;/strong&gt;&lt;/a&gt;. This option allows developers to extend the framework's core logic, giving you the full power of custom code without sacrificing the platform's stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Use Case Examples
&lt;/h2&gt;

&lt;p&gt;The following use cases are already known, besides all use cases mentioned by AtroCore itself (MDM, PIM, BPM):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Management of Content Marketing Activities (Planning and approving articles, monitoring positions for keywords, etc.)&lt;/li&gt;
&lt;li&gt;Project and Issue Management (AtroCore's project management and support activities are powered by the AtroCore software itself)&lt;/li&gt;
&lt;li&gt;Customer Relation Management (leads, opportunities, potentials, etc.)&lt;/li&gt;
&lt;li&gt;Sales Management (sales orders, quotations, etc.)&lt;/li&gt;
&lt;li&gt;Contract Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Know other use cases? Mention them in comments below :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;With tools like AtroCore, the question is no longer "buy or build" – it's &lt;strong&gt;"why not configure?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AtroCore can literally be used for any kind of software that businesses need. A lot can be achieved through simple configurations, even more can be achieved through additional programming. AtroCore provides a solid foundation for rapid application development. There is no need for months of development or huge budgets to create bespoke business software. AtroCore is an excellent tool for those who want to go beyond standard software functionality or for cases where standard business software is not yet available.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>php</category>
      <category>software</category>
    </item>
    <item>
      <title>When Microservices Don't Pay Off: The AtroCore Approach</title>
      <dc:creator>Alex Werder</dc:creator>
      <pubDate>Tue, 28 Oct 2025 14:26:46 +0000</pubDate>
      <link>https://forem.com/alex_werder/when-microservices-dont-pay-off-the-atrocore-approach-550d</link>
      <guid>https://forem.com/alex_werder/when-microservices-dont-pay-off-the-atrocore-approach-550d</guid>
      <description>&lt;p&gt;Few architectural concepts have captured the technology world as much as microservices, and the excitement is somewhat deserved, particularly judging by the years they have been promoted as a silver bullet solution to modern software development issues. While the benefits of microservices are genuine, our attempt to develop &lt;a href="https://github.com/atrocore/atrocore" rel="noopener noreferrer"&gt;AtroCore&lt;/a&gt; as an open-source master data management and integration platform led us to the conclusion that microservices are not always the answer.&lt;/p&gt;

&lt;p&gt;Like any other architectural style, microservices have been getting years of excitement and appreciation from the industry, but their relevance purely comes down to the use case. For AtroCore, we have stripped down the advantages and disadvantages of the features and settled on a &lt;strong&gt;Modern Modular Monolith&lt;/strong&gt; as the architecture foundation for our platform for today. Let us explain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Excitement Of Microservice Architecture
&lt;/h2&gt;

&lt;p&gt;Microservices, by their own definition, structure an application as a collection of smaller independent services. As a result, we are able to achieve the following benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scalability:&lt;/strong&gt; Services can be scaled independently based on load.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fault Isolation:&lt;/strong&gt; The failure of one service doesn't bring down the entire application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agility &amp;amp; Technological Freedom:&lt;/strong&gt; Teams can develop and deploy services independently, choosing the best technology stack for each task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better Maintainability:&lt;/strong&gt; Smaller codebases are easier to understand and manage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusable Code:&lt;/strong&gt; Logic can be packaged and consumed by multiple services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This offers positive results for certain types of projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Heterogeneous complex business systems&lt;/strong&gt; with functional modules or (?) microservices, and can be independently located, owned, developed, maintained or evolved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud-native SaaS Products&lt;/strong&gt; that is multi-tenant and sustains large varied workloads.&lt;/li&gt;
&lt;li&gt;Services, streaming &lt;strong&gt;Real-time Data Processing&lt;/strong&gt; that is isolated to individual services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-traffic systems&lt;/strong&gt; that need to flexibly scale certain critical bottlenecks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Microservices Trap
&lt;/h2&gt;

&lt;p&gt;The Microservices are considerably simpler is in fact, a falsehood. The promise of microservices does come at a high price, a price that is difficult for a lot of organizations and applications to afford.&lt;/p&gt;

&lt;p&gt;Within a tightly integrated platform like AtroCore, it was quickly understood that for AtroCore’s case, the compliance would be more trouble than it was worth.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure Overhead&lt;/strong&gt;: The management of many services, deployment pipelines, containers and service meshes comes at a large cost, due to the massive infrastructure needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distributed Transactions&lt;/strong&gt;: Maintaining separate services and their data, and ensuring that data is consistent for all services, is extremely difficult and often results in complex compensating transactions (Sagas).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Service Communication&lt;/strong&gt;: Within the same data center, network calls are slower and far less reliable than simple in-memory function calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increased Infrastructure Cost&lt;/strong&gt;: More servers and components to monitor, in addition to an increased cloud bill, will all result from more moving parts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Difficult Monitoring and Debugging&lt;/strong&gt;: Monitoring a single user request that spans many services is, by default, far more complicated than monitoring a single application.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Modular Monolith as an Optimal Architecture for Standard Business Software
&lt;/h2&gt;

&lt;p&gt;Standard business applications like ERP, MDM, PIM, and CRM systems revolve around integrated workflows, interlinked data models, and closely connected dependencies within components/modules. These systems generally necessitate concurrent operations across multiple domains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bounded context clarity&lt;/strong&gt;&lt;br&gt;
The Modular Monolith implements bounded contexts through its logical separation into more manageable modules, achieving meaningful separation without separation of undeployed modules which introduces unnecessary complexities in inter-domain transactions. This works nicely for business software where domains (i.e. PIM, CRM) are separate but require deep intertwined interdependency.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Release and version interdependence&lt;/strong&gt;&lt;br&gt;
Monolith software can be simultaneously and consistently deployed while considerably simplifying release management compared to  an orchestrated release of numerous independent microservices. This is especially crucial in an enterprise context where core components are required to be versioned and released  simultaneously (e.g.  an Order Module upgrade must interoperate seamlessly with an Inventory Module).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Centralized business logic&lt;/strong&gt;&lt;br&gt;
For security and compliance needs (ex. GDPR) and regulations, a single application boundary simplifies governance immensely, providing a single, controlled point to enforce critical and cross-cutting business concerns (ex data masking, logging, and audit trails).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-domain development&lt;/strong&gt;&lt;br&gt;
Developing features that span two related domains (e.g. managing accounts and related orders) is far more straightforward.  The developer can perform a full functional change required for an enterprise workflow in a single codebase, thus enhancing velocity considerably, and to be certain, they can be debugged and tested in deployed in a single transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resource Efficiency&lt;/strong&gt;&lt;br&gt;
The Monolith offers better resource efficiency and lower memory overhead in comparison to multiple processes with Operating Systems and containers. This also makes it a more economically viable and environmentally friendly option for the predictable workload profiles encountered in most business software. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skill Set Fit&lt;/strong&gt;&lt;br&gt;
This architecture works more aligned with the skill set of in-house IT teams or systems integrators. It requires strong design skill, but not the expensive, specialized DevOps talent to untangle the complex web of distributed tracing, service meshes, and Kubernetes clusters necessary for independent Microservices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Consistency&lt;/strong&gt;&lt;br&gt;
Latency and consistency are critical, and the failure or delay in communications across business-critical modules can be costly. With a modular monolith, interactions occur within the same process and under a unified transaction scope, which can mitigate the risk of partial failures and optimize rollback complexity. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Internal / External Maintenance&lt;/strong&gt; &lt;br&gt;
Centralized teams with domain expertise typically develop and maintain all standard business software. The modular monolith architecture accommodates this structure because it allows teams to operate within a single unified codebase while retaining distinct, interdependent modules. This helps to boost collaboration while also improving governance and onboarding time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;br&gt;
Business software often needs considerable adjustments to fit particular workflows, regulations, or clients. More customization is possible with a modular monolith since every module is built on a shared structure, and alterations can be made without the complexities of service and deployment projections across disparate systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  AtroCore's Reasoning
&lt;/h2&gt;

&lt;p&gt;We had certain requirements that eliminated the Microservices approach. We specifically did NOT WANT to choose a multi-tenant architecture, where all customers use the same database, as this is extremely prone to data breaches. AtroCore is purpose-built for high-integrity deployed, single tenant environments.&lt;/p&gt;

&lt;p&gt;Our different domains (like PIM, Sales, Projects etc) share a lot of similar core logic, like configurable layout profiles, the data model configuration layer, permission logic, and REST API logic. Code duplication or unnecessary service-to-service dependency hell would result from separation.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Modular Monolith&lt;/strong&gt; architecture is definitely smarter and more pragmatic than the first architecture proposed.&lt;/p&gt;

&lt;p&gt;It still possesses the advantages of a single, unified deployment unit while still respecting the decoupled internal structure coupled with Microservices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Our Modularity Approach
&lt;/h3&gt;

&lt;p&gt;There is a modular approach where the traditional microservices decoupled approach is communication.&lt;/p&gt;

&lt;p&gt;All communication is done “in-process” which is rather fast and reliable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The AtroCore Framework/Core&lt;/strong&gt;: This is the central part of the platform dealing with all the shared concerns (security, user roles, logs, access to the database, settings, etc.). This reduces complexity for each module developer, because they no longer have to build these services from scratch.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Independent Modules&lt;/strong&gt;: The Projects module is logically and structurally separate from the Sales module. While modules are clearly defined, they are designed to extend and/or modify the core logic and the logic provided by other modules.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Benefits for AtroCore Data Platform
&lt;/h3&gt;

&lt;p&gt;Within the "Modular Monolith" architecture, AtroCore is able to enjoy critical benefits without operational complexity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deployment&lt;/strong&gt;: With AtroCore, we no longer need to manually track dependencies and use complex deployment scripts. AtroCore modules are distributed via Packagist with strict versioning. Updates are part of the system and under one administrator action, ensures the system consistency and reliability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing/Debugging&lt;/strong&gt;: It is exponentially easier to trace and debug a request from the start to the end across a single application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt;: Direct function calls and shared memory access are way faster than network calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACID Transactions&lt;/strong&gt;: It is easy to maintain strong ACID transactional consistency (Atomicity, Consistency, Isolation, Durability) across related data, which is crucial for accurate data – for example, order data, or inventory data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Future-Proofing and Data Flexibility
&lt;/h4&gt;

&lt;p&gt;The Modular Monolith comes with a set of base features designed especially for evolution instead of just scaling. This allows AtroCore to remain enterprise-grade, open-source Software and provider of software solutions, while still being scalable and flexible, even as company data becomes more complex or increases in volume.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dealing with Data Volume&lt;/strong&gt;: The architecture does not limit us to a singular type of database. If a customer’s analytics or historical data reaches a Big Data scale, AtroCore is able to implement specialized, tier-one databases, for example, ClickHouse for analytics queries, without requiring a complete system overhaul to microservices. The modules interface with the right tool for the job.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Goal Accuracy&lt;/strong&gt;: There is no need to rewrite a module as a microservice to improve performance. The modular approach works to redesign performance issues in a more targeted manner on a micro level. We only need to isolate high-load core business processes that need tight coupling to modular, serverless functions without needing to extract the entire set of services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prolonged Surplus of Simplicity&lt;/strong&gt;: The obsolescence of service decomposition in AtroCore increases the simpler the system is, and the more maintenance is needed over a decade. This directly converts into a decreased TCO for our clients, guaranteeing that complexity does not build up unnecessarily.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More modular extensions to the core are simpler to build and maintain, and thus the overall system is more sustainable and affordable than supporting a web of individual microservices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;For some large scale, loosely-coupled use cases, microservices as a distinct architecture are more than useful – they are essential. For something as integrated and feature rich business apps as AtroCore, however, they represent over-optimization and an unjustifiable increase in operational and development efforts.&lt;/p&gt;

&lt;p&gt;The Modern Modular Monolith is definitely the best way for similar cases. It provided powerful, tightly integrated, and efficient platform without overwhelming complexity, enabling us to concentrate on the business functionality and not on backend infrastructure issues.&lt;/p&gt;

&lt;p&gt;Before assuming the hottest trend will work for you, assess your project’s real requirements – its size, the level of integration, and your team. Often, the best system design is the one that &lt;strong&gt;keeps things simple&lt;/strong&gt; and maximizes functionality in important areas.&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>architecture</category>
      <category>opensource</category>
      <category>performance</category>
    </item>
  </channel>
</rss>
