
{"id":4075,"date":"2023-06-16T08:51:11","date_gmt":"2023-06-16T08:51:11","guid":{"rendered":"https:\/\/avra.pl\/?page_id=4075"},"modified":"2023-08-14T13:43:49","modified_gmt":"2023-08-14T13:43:49","slug":"cafeteria-system-story","status":"publish","type":"page","link":"https:\/\/avra.pl\/en\/cafeteria-system-story\/","title":{"rendered":"Chapter 1: The Beginning of a Big Project"},"content":{"rendered":"\n<section class=\"block article-subtitle   content-wrapper-placeholder\">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"title-wrapper\">\n                    \t\t\t\t    <h2><span style=\"color: #1c55d9;\">Chapter 1<\/span><span style=\"font-weight: 400;\">: The Beginning<\/span><\/h2>\n\t\t\t\t<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p>This is first part of series of articles about \u201cComplete Set of Tactics for Reducing Tech Debt: Lessons Learned from 14 Years of Building Java Enterprise Systems\u201d.<\/p>\n<ul>\n<li>Part 2: &#8220;<a href=\"https:\/\/avra.pl\/en\/comparative-technological-audit\/\">Comparative Technological Audit<\/a>&#8220;<\/li>\n<li>Part 3: \u201c<a href=\"https:\/\/avra.pl\/en\/new-beginning-with-microservices-architecture\/\">New Beginning with Microservices Architecture<\/a>\u201c.<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">In the beginning of 2010, a client approached <\/span><b>Avra<\/b><span style=\"font-weight: 400;\"> (at that time under the \u2018Makrologic\u2019 brand), the <\/span><b>software development agency<\/b><span style=\"font-weight: 400;\"> I worked for, with a big vision for a new <\/span><b>enterprise system<\/b><span style=\"font-weight: 400;\">. The system was to be a <\/span><b>B2B platform<\/b><span style=\"font-weight: 400;\"> for employers to provide additional benefits to their employees, such as sport cards or free lunches, which employees could purchase using the system or special cards at local restaurants. The client was not familiar with the technology, so my team had the freedom to choose the best-known technologies at the time. The team consisted of Bartek, CEO of Avra, Wiktor \u2013 business analysts and senior backend <\/span><b>Java engineers<\/b><span style=\"font-weight: 400;\"> Wojciech, Piotr, and Kuba, as well as <\/span><b>frontend engineers<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We followed <\/span><b>waterfall methodology<\/b><span style=\"font-weight: 400;\"> and started the project with the <\/span><b>MVC approach<\/b><span style=\"font-weight: 400;\">. For that we applied our <\/span><b>Custom System Solutions service<\/b><span style=\"font-weight: 400;\">. We used jsp and jQuery to develop the system, which was the popular choice at the time. We applied appropriate design and architecture patterns and the best-known practices of the time, such as DRY rules, and <\/span><b>continuous integration<\/b><span style=\"font-weight: 400;\">. We used <\/span><b>Spring Framework<\/b><span style=\"font-weight: 400;\"> and <\/span><b>Hibernate<\/b><span style=\"font-weight: 400;\"> as our go-to frameworks, and the <\/span><b>JVM tech stack<\/b><span style=\"font-weight: 400;\">. However, we were lacking all the good things that are now available, such as containers and clouds.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4336\" src=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153758819.png\" alt=\"\" width=\"402\" height=\"350\" srcset=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153758819.png 402w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153758819-100x87.png 100w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153758819-400x348.png 400w\" sizes=\"auto, (max-width: 402px) 100vw, 402px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The client was a startup, who fought for its first customers and place on the market. It was obvious that they were pushing us to deliver more and more without focusing on the <\/span><b>tech debt<\/b><span style=\"font-weight: 400;\"> that was growing. We kept the client updated about our progress in an iterative way, and Bartek\u2019s presence in the team gave the client confidence that the CEO was keeping an eye on the project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Despite following the best-known practices at the time, we weren\u2019t monitoring the performance of the system sufficiently. The client was pushing to get all their features ready for their <\/span><b>first big client<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Little did we know that this approach would lead to a big failure in the next phase of the project.<\/span><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-subtitle   content-wrapper-placeholder\">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"title-wrapper\">\n                    \t\t\t\t    <h2><span style=\"color: #1c55d9;\">Chapter 2<\/span><span style=\"font-weight: 400;\">: The First Big Client and System Crash<\/span><\/h2>\n\t\t\t\t<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p><span style=\"font-weight: 400;\">It was the day our client had been eagerly waiting for: the launch of the new enterprise system we had been developing for almost a year. However, the excitement quickly turned into a nightmare when our client couldn\u2019t onboard their first big client, with more than 2000 employees, due to the system constantly crashing with only 20 users online. Why did this happen? due to lack of communication between business and technology teams we were not aware about the potential rump-up of the users.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201cHouston we have a performance problem\u201d. The client was devastated, and so were we. We knew we had to act fast to fix the problem and regain their trust. We started by launching <\/span><b>JProfiler<\/b><span style=\"font-weight: 400;\"> to diagnose the issue and found that there were a lot of inefficiencies on the Hibernate level. We also had not adjusted our <\/span><b>load tests<\/b><span style=\"font-weight: 400;\"> after adding new features, which had caused more stress on the system than we\u2019ve expected.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4339\" src=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153908378.png\" alt=\"\" width=\"275\" height=\"342\" srcset=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153908378.png 275w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_153908378-80x100.png 80w\" sizes=\"auto, (max-width: 275px) 100vw, 275px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">I remember working tirelessly for two days straight, starting on Tuesday morning and leaving the office only on Wednesday evening, to fix the issue. We adjusted caching layers and removed bottlenecks diagnosed by JProfiler, and finally, the system started to work properly again.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After the crisis was over, we reflected on what went wrong and what we could have done differently. The urgency to ship new features blindfolded us on non-functional requirements of the projects.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We were surprised how early our freshly developed system required a service that provides <\/span><b>continuous auditing of enterprise systems<\/b><span style=\"font-weight: 400;\"> to ensure optimal performance and prevent critical system failures. This project and all next ones enabled us to create our \u201c<\/span><b>Continuous Performance Auditing<\/b><span style=\"font-weight: 400;\">\u201d service, which offers regular checks and performance profiling to detect potential issues before they become catastrophic. By utilizing this service, CTOs and technical teams can:<\/span><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-list-with-bullets  content-wrapper-placeholder\">\n    <div class=\"container\">\n\n\t\t            <ul class=\"row row-list\">\n\t\t\t\t\n                    <li class=\"col-12 col-lg-7\">\n\t\t\t\t\t\tFocus on delivering features while having peace of mind that their systems are being monitored and improved                    <\/li>\n\n\t\t\t\t\n                    <li class=\"col-12 col-lg-7\">\n\t\t\t\t\t\tUse experience of other companies to rise up the quality of the system, its performance and reduce the tech debt in the early days                    <\/li>\n\n\t\t\t\t\n                    <li class=\"col-12 col-lg-7\">\n\t\t\t\t\t\tUse monitoring tools on the staging and production environment, run performance tests, and compared results                    <\/li>\n\n\t\t\t\t            <\/ul>\n\t\t    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p><span style=\"font-weight: 400;\">This service can be a valuable partner to any enterprise system development project, allowing for continuous improvement and optimization without interrupting the development cycle.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With an <\/span><b>external partner<\/b><span style=\"font-weight: 400;\"> working hand in hand with the team, detect and address issues earlier.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Monitoring the system from the beginning to test the performance of the system can save a lot of work because by finding issues earlier you can improve the system gradually.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Despite the setback, we were able to regain the client\u2019s trust and to continue the project. But we knew that we had to be more vigilant in the future and keep a close eye on the system\u2019s performance to avoid another disaster.<\/span><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-subtitle   content-wrapper-placeholder\">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"title-wrapper\">\n                    \t\t\t\t    <h2><span style=\"color: #1c55d9;\">Chapter 3<\/span><span style=\"font-weight: 400;\">:\u00a0The Growth and the Technical Debt<\/span><\/h2>\n\t\t\t\t<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p><span style=\"font-weight: 400;\">Over the next three years, our development team working on the project grew to more than 12 members, and we worked on various parts of the system still following our <\/span><b>Custom System Solutions service<\/b><span style=\"font-weight: 400;\"> approach. However, our biggest challenge came when the sales department promised a whole new module to a huge end-client, assuming it was very similar to something that already existed in our system, and would be easy for us to develop. This assumption was one of the root causes of the <\/span><b>technical debt<\/b><span style=\"font-weight: 400;\"> that started to grow rapidly.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Since we couldn\u2019t deliver the promised module as a separate new one because it was too expensive, and because it was very similar to the existing one, we were forced to reuse the same module for completely two different domains. The modules looked similar, unfortunately, the business logic was different. This decision caused the <\/span><b>technical debt<\/b><span style=\"font-weight: 400;\"> to accumulate even faster, and we started to feel the consequences.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4341\" src=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154046548-570x606.png\" alt=\"\" width=\"570\" height=\"606\" srcset=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154046548-570x606.png 570w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154046548-94x100.png 94w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154046548-400x425.png 400w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154046548.png 591w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The client hired a new project manager who was very aggressive and pushed us to the limits of our mental capabilities. It was a real battle. We had to break our technical backbone and our rules in developing the project, otherwise, we would lose the client. So, we sacrificed some of our technical best practices to meet promises that none consulted with us and enforced on us.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Moreover, the collaboration model from the very beginning was fixed-price, so we had to estimate every change before we delivered. Because of the broken backbone of our technical best practices, our estimations grew to such big sizes that the client started to question whether we were a good software agency at all. A vicious circle.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As a result, the <\/span><b>lead time (LT) and time to repair (TTR)<\/b><span style=\"font-weight: 400;\"> were growing, and it was challenging to convince the client to invest in <\/span><b>architecture improvements<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Eventually, the LT and TTR grew so much that the client decided to audit our code by an external company, which we\u2019ll describe in the next chapter. Unfortunately, the client lost trust in our team and wanted to ask the external company whether we were a good software agency or not (spoiler alert: we were a good one \ud83d\ude42 )<\/span><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-subtitle   content-wrapper-placeholder\">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"title-wrapper\">\n                    \t\t\t\t    <h3><span style=\"font-weight: 400;\">Lessons Learned in Software Development<\/span><\/h3>\n\t\t\t\t<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p><span style=\"font-weight: 400;\">\u00a0In the beginning, it\u2019s crucial to choose the right technologies and follow best practices. However, monitoring system performance and addressing non-functional requirements should never be neglected. It\u2019s also important to be cautious when making promises to clients, as overlooking technical debt and breaking technical best practices can lead to severe consequences. <\/span><b>Continuous auditing and performance profiling services<\/b><span style=\"font-weight: 400;\"> can play a vital role in maintaining system optimization and preventing critical failures.<\/span><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-subtitle   content-wrapper-placeholder\">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"title-wrapper\">\n                    \t\t\t\t    <h3><span style=\"font-weight: 400;\">Tech Debt Management Strategies<\/span><\/h3>\n\t\t\t\t<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p><span style=\"font-weight: 400;\">Managing technical debt requires a proactive approach. By prioritizing architecture improvements, monitoring system performance, and addressing technical debt early on, organizations can avoid accumulating debt that hampers development speed and quality. Collaboration between business and technology teams is essential to ensure realistic estimations and prevent the erosion of technical best practices. Continuous improvement and optimization, along with external audits, can help mitigate and manage technical debt effectively<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4343\" src=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154209464-570x549.png\" alt=\"\" width=\"570\" height=\"549\" srcset=\"https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154209464-570x549.png 570w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154209464-768x740.png 768w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154209464-100x96.png 100w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154209464-400x386.png 400w, https:\/\/avra.pl\/wp-content\/uploads\/2023\/08\/obraz_2023-08-14_154209464.png 997w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/p>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-subtitle   content-wrapper-placeholder\">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"title-wrapper\">\n                    \t\t\t\t    <h3><span style=\"font-weight: 400;\">Mitigating Technical Debt in Java<\/span><\/h3>\n\t\t\t\t<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n<section class=\"block article-content  content-wrapper-placeholder \">\n    <div class=\"container\">\n        <div class=\"row row-content\">\n            <div class=\"col-12 col-lg-6\">\n\t\t\t\t<div class=\"text-wrapper\">\n\t\t\t\t    <p><span style=\"font-weight: 400;\">In Java development, mitigating technical debt involves adhering to best practices, such as applying appropriate design and architecture patterns, following DRY rules, and leveraging frameworks like Spring and Hibernate. Continuous monitoring of system performance, load testing, and utilizing tools like JProfiler can help identify and address inefficiencies. Additionally, investing in continuous auditing and performance profiling services can aid in detecting and resolving potential issues before they escalate. Prioritizing architectural improvements and maintaining a balance between feature development and debt management are crucial in mitigating technical debt in Java projects.<\/span><\/p>\n<p><strong>Read more:<\/strong><\/p>\n<ul>\n<li>Part 2: &#8220;<a href=\"https:\/\/avra.pl\/en\/comparative-technological-audit\/\">Comparative Technological Audit<\/a>&#8220;<\/li>\n<li>Part 3: \u201c<a href=\"https:\/\/avra.pl\/en\/new-beginning-with-microservices-architecture\/\">New Beginning with Microservices Architecture<\/a>\u201c.<\/li>\n<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t            <\/div>\n        <\/div>\n    <\/div>\n<\/section>","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4075","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v19.0 (Yoast SEO v19.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Chapter 1: The Beginning of a Big Project - Avra Software<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/avra.pl\/en\/cafeteria-system-story\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chapter 1: The Beginning of a Big Project\" \/>\n<meta property=\"og:url\" content=\"https:\/\/avra.pl\/en\/cafeteria-system-story\/\" \/>\n<meta property=\"og:site_name\" content=\"Avra Software\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-14T13:43:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/avra.pl\/#website\",\"url\":\"https:\/\/avra.pl\/\",\"name\":\"Avra Software\",\"description\":\"Automatyzujemy procesy biznesowe i sprzeda\u017cowe\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/avra.pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/avra.pl\/en\/cafeteria-system-story\/\",\"url\":\"https:\/\/avra.pl\/en\/cafeteria-system-story\/\",\"name\":\"Chapter 1: The Beginning of a Big Project - Avra Software\",\"isPartOf\":{\"@id\":\"https:\/\/avra.pl\/#website\"},\"datePublished\":\"2023-06-16T08:51:11+00:00\",\"dateModified\":\"2023-08-14T13:43:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/avra.pl\/en\/cafeteria-system-story\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/avra.pl\/en\/cafeteria-system-story\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/avra.pl\/en\/cafeteria-system-story\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/avra.pl\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chapter 1: The Beginning of a Big Project\"}]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Chapter 1: The Beginning of a Big Project - Avra Software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/avra.pl\/en\/cafeteria-system-story\/","og_locale":"en_US","og_type":"article","og_title":"Chapter 1: The Beginning of a Big Project","og_url":"https:\/\/avra.pl\/en\/cafeteria-system-story\/","og_site_name":"Avra Software","article_modified_time":"2023-08-14T13:43:49+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/avra.pl\/#website","url":"https:\/\/avra.pl\/","name":"Avra Software","description":"Automatyzujemy procesy biznesowe i sprzeda\u017cowe","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/avra.pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/avra.pl\/en\/cafeteria-system-story\/","url":"https:\/\/avra.pl\/en\/cafeteria-system-story\/","name":"Chapter 1: The Beginning of a Big Project - Avra Software","isPartOf":{"@id":"https:\/\/avra.pl\/#website"},"datePublished":"2023-06-16T08:51:11+00:00","dateModified":"2023-08-14T13:43:49+00:00","breadcrumb":{"@id":"https:\/\/avra.pl\/en\/cafeteria-system-story\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/avra.pl\/en\/cafeteria-system-story\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/avra.pl\/en\/cafeteria-system-story\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/avra.pl\/en\/"},{"@type":"ListItem","position":2,"name":"Chapter 1: The Beginning of a Big Project"}]}]}},"_links":{"self":[{"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/pages\/4075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/comments?post=4075"}],"version-history":[{"count":21,"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/pages\/4075\/revisions"}],"predecessor-version":[{"id":4346,"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/pages\/4075\/revisions\/4346"}],"wp:attachment":[{"href":"https:\/\/avra.pl\/en\/wp-json\/wp\/v2\/media?parent=4075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}