Get a quote

System Architecture · Besiktas

System Architecture for Besiktas businesses

If a head office in Besiktas does not keep all its work on its own floor, a floor is refitted one week, a stockroom moves the next, a new point is set up somewhere else. Nobody keeps a current list of which of those addresses is open, because the list changes weekly. That puts the architectural question first: what does the record hang off? On a construction workforce system we built, it hangs off no site table at all. The code says who scanned; the location reading says where.

System Architecture — Besiktas

Besiktas leans on head offices and multi-brand corporate structures. If the decision stays central while the work happens at a different address every week, there is no fixed place for the record to hang off. The closest work to that condition is a construction workforce attendance system. Where it does not reach comes first: written for building sites, it never covered office hours, payroll or statutory timesheets, and we hold no client on the agency or media side here. What travels is one architectural decision. A place is not a row the record points at; it is a reading carried on the record itself. Laravel receives the entries, MySQL keeps them, and the field app runs on a phone in React Native (Expo).

  • The name of a site is never picked from a master table: the code says who scanned, the location says where, and the two readings settle into a single entry row.
  • Payment due is derived rather than stored, worked out when an entry and an exit meet, so no second calculation table stands beside it.
  • An entry whose exit was never scanned is not filled in by guesswork; the row stays incomplete, and the model shows that gap instead of hiding it.

Why Algoriel

  • The parts read one source

    At Tahlil.com the site, the admin panel and the mobile app read the same information instead of behaving as three systems.

  • Where each job is solved comes first

    Which layer handles which job is decided before code, because work that has to move later is expensive to move.

  • The summary recomputes itself

    As the Günlük Hava Durumu archive grows, the climate summary recomputes from it; nobody maintains a monthly table by hand.

  • One rule for file layout

    On the KGM SsangYong site, where a file is written and under what name now follows one rule the upload code obeys.

  • Where the data divides

    When several institutions share one system, each enters through its own domain and student, guardian and payment records stay inside that institution's boundary. This arrangement is what the term multi-tenant describes.

  • What a record attaches to

    Whether service history is written against a person, an address or a device is settled before the schema exists. Reversing that later means re-attaching everything already recorded.

  • Permission held in the data model

    A teacher, a guardian and an institution administrator reach the same timetable record at their own level of access. Permission is part of how the record is defined, not a view switched off on a screen.

  • Splitting the read path

    Which screens are served from a held copy and which go to the database is settled before the first record exists. On Vipkurum a frequently opened screen comes from the copy, and only a read with no copy reaches the database.

  • Interfaces on a single system

    Tahlil.com hangs three interfaces off one system: the patient site, the physician panel and the mobile app read the same record, and no second data model is written per interface.

  • Storage laid out on day one

    The naming and folder scheme files will live under is fixed at the start; a layout imposed afterwards turns into a migration.

Work like this

System Architecture · Case study

Construction workforce record — place comes from the reading at entry

The design started from a constraint: if the list of open sites cannot be kept current, the record cannot hang off that list. So in the data model a site is not a master row. It is two readings carried on the entry itself, one saying who scanned and one verifying where. Duration follows from a matched entry and exit, and an entry with no exit stays an incomplete row until it closes. Payment due is computed from those same pairs rather than held as a field, and hours at different points total apart. React Native (Expo) on the phone, Laravel receiving, MySQL holding.

Read the case study →

Working with Besiktas teams, remotely

We have no office, so work for this city runs remotely and we do not offer on-site support. What was done, and why it was done that way, stays in writing. The project pages mark which builds came out of a partnership.

  • The first release ships as a working piece; extras follow later.
  • Every client we know of is in Turkey.
  • Decisions stay in writing; progress shows in working screens.

Frequently asked

  • Do we still need to keep a list of our sites?

    Not as a master table. The record attaches to the location of the scan rather than to a site row, so a list gone stale does not corrupt what was already written. Use a list to group reports if you like; the correctness of the record stops depending on it.

  • One person works at three addresses in a week. Do the numbers blur?

    They do not, because the hours never pool. Each address totals on its own, so nothing has to be split apart afterwards, and which budget carries which job reads straight off that separation.

  • What happens where the location cannot be verified?

    The row does not close. It stays incomplete rather than being filled in with an estimate, because a guessed hour is the most expensive kind to correct later. The model was built to show the gap.

  • We are not in construction. What does a site attendance system tell us?

    One thing, and we name it: whether the place of a job comes from a master table or from the reading itself. That decision is the same for a refit crew and a maintenance round. We claim nothing beyond building sites; the transferable part is where the anchor of the record sits.

Let us settle where your data divides before any code is written.