Issues with Conventional Business Software
Each growing company eventually stagnates because of its operational software. Most companies start with spreadsheets and ERP systems, later they start using off-the-shelf generic CRMs. After a while they may realize they need something additional, more tailored.
These companies then face the apparently impossible task of deciding "Buying vs Building".
Buying 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.
Building 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.
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 Total Cost of Ownership (TCO) for either option.
Standard Business Software
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.
Custom Software Development
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.
An Overlooked Option: The Rapid Development Platform
Is there a third path? The flexibility of custom development with the profits of the no-code/low-code paradigm?
The answer is the Rapid Application Development (RAD). Low-code and no-code is the paradigm where modern software configurations and business applications development is built using visual tools.
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.
These tools come with low-code and no-code options, and for deep customization, traditional development remains. Data models, user interfaces, and business logic definitions can be designed in hours rather than months.
An example of such a tool is AtroCore.
AtroCore As Your Digital LEGO Kit
AtroCore is a powerful and developer-friendly open-source framework designed for accelerated software creation. It is a free, flexible xRM (Anything Relationship Management) platform that lets you define complex business processes without having to conform to a restrictive template.
Creating an application involves three primary configuration steps:
- Configure the Data Model: Specifying the structure of your Entities (data tables) and Fields (data types).
- Configure the User Interfaces: Designing your views and layouts using the drag-and-drop interface.
- Configure / Develop the Business Logic: Creating your rules, automations, and workflows visually.
In less than an hour, you can build a simple, working application to manage any business process and data without any coding. Your advanced and custom business software development can be with minimal coding.
Best of all, you can create complete, professional business applications at no cost.
Building a Custom HR and Recruiting System in 120 Minutes
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.
Defining the Requirements
We start with requirements. Our software should cover the following areas:
Employee Management
- Personal Employee Data (ID, address, emergency contacts)
- Company-related Employee Data (start date, positions, promotions, and transfers)
Recruitment
- Candidate management
- Interviewer assignments (multiple interviewers per candidate)
Installation and Setup (15 minutes)
The first 15 minutes are dedicated to setting up the platform. Refer to the official installation manual 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.
Configure the Data Model (45 minutes)
The data model is a fundamental part of any business software. In AtroCore, the data model can be defined using entities. 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.
For this project, we need to create the following entities:
-
Employee – can optionally have a related
Useraccount. -
Candidate – has no
Useraccount in the system, this is a person who applies for a job vacancy. A candidate may apply for only one vacancy. - Vacancy – the position to be filled within the company.
- Interview – direct communication with a candidate to assess their suitability. Multiple interviews can be conducted with a candidate.
To configure all the needed data structures and relationships, we need to open the Entity Manager (Administration / Customization / Entities).
To do this, go to Administration.
Then scroll down to the customization section and click on Entities.
Create entity Employee
To create a new entity, just click on the button Create.
Enter the Code, Type (= Base), Singular Label Name, and Plural Label Name, select the Icon, and click on the button Save.
The Entity is created. Now we need to configure the required fields. We want to add the following fields:
- Name (string) - automatically created in any new entity.
- Description (string) - automatically created in any new entity.
- Position (string) - current position of the employee.
- Start Date (date) - to store the date when the employee started to work for our company.
- Promotion Date (date) - date when the employee was last promoted.
- ID Card (file) - ID Card of the employee, to be uploaded as a file.
- Private Address (text) - Textarea where we will store the private address of the employee.
-
User (link) - Linked User Account within the system; this is a many-to-one relation between entities
EmployeeandUser.
To create a new field, scroll down and on the panel for fields, click on the + icon.
In the modal window, set the field name Position, assign the appropriate data type to String, and mark the field as required. Click on Save to add this field to the Employee entity.
Create all the other fields mentioned above.
To create a relationship between User and Employee, switch to the User entity and click the + icon in the fields panel. In the opened modal window, fill out the fields as shown in the screenshot, then click the Save button.
Create entity Vacancy
Create a new entity Vacancy to manage all of the company's vacancies.
It should have only the fields:
- Name (string)
- Description (text)
- Status (list), with options as on the screenshot below.
Create entity Candidate
Now create a new entity Candidate (also of type Base) with the following fields:
- Name and Description will be automatically created
- E-Mail (email)
- Telephone (string)
- Address (text)
- Vacancy (link)
Also, add the field Status of type List to store the final status for the candidate. As option values we apply:
- New - this is just a new applicant
- Selected - candidate is selected for interview
- Interviewed - to indicate that all of the candidate's interviews have been conducted.
- Approved - one of the possible final status values to mark the candidate as approved
- Rejected - One of the possible final status values to mark the candidate as rejected.
Create entity Interview
Now create a new entity Interview.
An Interview has the following fields:
-
Summary (string) - I will rename the standard field
Namefor this. In this field, the interviewer will write a summary of their interview with a candidate. - Description (text) - any additional information can be stored here.
- Score (float) - general score of the Candidate. Let's assume 10 would be our maximum value; this can be set in the field configuration too.
- Date and time (date and time) - when the interview is scheduled.
-
Interviewer (link) - a relationship to the
Userentity, as I want to assign a system user who will be responsible for conducting the interview. - Status (list) - field with the following options:
Configure the User Interfaces (30 minutes)
Navigation Menu
Click the hamburger menu in the top left corner, then click the gear icon to the right of "Navigation Menu".
Use drag-and-drop to configure the desired navigation menu. Add all the entities that were created previously, then click the Save button.
I configured my favorites, and now my navigation menu and toolbar look like this:
Entity Layouts
For every entity in the system, we need to configure 2 layouts:
- List View - is the view where I see all my records.
- Detail View - shows a record with all its field values.
For every entity we added, I configure the List View:
... and Detail View:
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:
I perform similar layout configurations for all other entities and the relations between them.
Now I can manage records for Employees:
I can manage records for Candidates:
I can manage records for Vacancies:
I can manage records for Interviews:
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.
Configure Roles (30 minutes)
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.
We finalize the application by configuring the necessary roles. Under Administration > Access Management > Roles, we can configure three roles:
- Employee
- Interviewer
- HR Manager.
The system can be configured so that a user with the "Employee" role can only see their own employee record in read-only mode.
An interviewer should be able to:
- See all relevant candidates and make notes, but not edit the candidate record directly.
- Modify their own interview record with the candidate.
An HR manager would be able to:
- Modify all employee records
- Create and manage vacancies
- Control the interview process.
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.
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.
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.
Advanced Possibilities: Scaling Without Starting Over
The beauty of a platform like AtroCore is that you can scale with two key development options when advanced customization is needed:
1. Create Own Custom Actions
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 Custom Actions. This low-effort option is perfect for small, targeted pieces of business logic that don't fit into a standard workflow.
2. Create Own Modules
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 Own Modules. 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.
Other Use Case Examples
The following use cases are already known, besides all use cases mentioned by AtroCore itself (MDM, PIM, BPM):
- Management of Content Marketing Activities (Planning and approving articles, monitoring positions for keywords, etc.)
- Project and Issue Management (AtroCore's project management and support activities are powered by the AtroCore software itself)
- Customer Relation Management (leads, opportunities, potentials, etc.)
- Sales Management (sales orders, quotations, etc.)
- Contract Management
Know other use cases? Mention them in comments below :)
Final Words
With tools like AtroCore, the question is no longer "buy or build" – it's "why not configure?"
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.






















Top comments (0)