Software development

We take full ownership of the project: from concept through architecture, development, testing, deployment and ongoing maintenance. One team accountable for all of it, and the standards it is built to are written down rather than promised.

Fewer compromises, not more features

An off-the-shelf product makes you adapt to what it happens to do; we build to how your work actually happens. And if a ready-made product would do the same job for less, we say so upfront — our interest is not in selling you a project you do not need.

We cover the whole cycle with one team: from concept through architecture, development, testing, deployment and ongoing maintenance. The common alternative is to buy the stages separately — design from an agency, development from a supplier, operations from a third party — and that works right up until something goes wrong. Then it emerges that the designer assumed one thing, the developer another, and nobody is accountable for what fell between them.

What we do

What software development covers

Nine areas under one team. Most projects touch several of them at once — which is exactly why buying them from separate suppliers rarely works out.

  1. 01

    MVP and validation

    A working product in real users' hands to test the riskiest assumption before a full-scale investment. The first result arrives in two weeks.

  2. 02

    Application architecture

    The architecture is agreed before development and chosen for the load profile you will have in three years. A rewrite later costs more than getting the first decision right.

  3. 03

    Web development

    Web applications that work on every screen — server-rendered where that is required, with performance that is measured rather than hoped for.

  4. 04

    Mobile development

    Native Android and iOS, or one shared codebase, including store publishing and keeping up with platform changes. The architecture integrates with your backend and ERP/CRM.

  5. 05

    Backend development

    Server-side systems carrying the business logic and a growing load. The data model and the interfaces are thought through before, not after the first outage.

  6. 06

    System integration

    APIs and middleware joining separate systems into one whole and removing data silos — including what happens when the other side is down.

  7. 07

    Legacy modernisation

    An old system onto a current platform without stopping the work. Capabilities move one at a time and the old one keeps running until the new has proved itself.

  8. 08

    DevOps and deployment

    CI/CD, containers and infrastructure as code. Releasing has to be routine, not an event you book time in the calendar for.

  9. 09

    Testing and QA

    Unit, integration and end-to-end tests alongside static analysis and security checks. Tests travel with the code rather than forming a phase at the end.

See how we work: four steps, no surprises
Stack

Tech stack

We pick tools that fit together across the layers, and prefer a long support horizon to novelty. The next team has to be able to hire for it.

What you get

The standards we build to

These are not marketing phrases but checkable requirements. Ask for them with every proposal — a supplier who cannot say what they build to is not building to anything.

Architecture

Scalability and maintainability are decided in the first month, not when the load arrives.

  • The 12-factor methodology for building a modern application
  • Stateless by default, which keeps scaling simple
  • Horizontal and vertical scaling built in from the start
  • Architecture decisions recorded as ADRs

Security

Security is not a phase before release; it is part of every sprint — and it can be verified.

  • Threat modelling before any code is written
  • OWASP requirements as the baseline, not pre-audit catch-up
  • SAST and dependency analysis in the CI/CD pipeline
  • Role-based access on the principle of least privilege
  • GDPR: we process only the data that is needed

Quality

Testing is not a separate line in the quote. Without it we don’t consider the software finished.

  • Unit, integration and end-to-end tests, automated
  • Static analysis and mandatory code review on every change
  • Performance checks before production, not after the first outage
  • Technical debt tracked so it cannot accumulate quietly

Management and handover

The state of the project has to be readable without a meeting, and handover has to be possible without us.

  • An agile approach, adapted to the project
  • Scope and responsibilities agreed in writing
  • Infrastructure as code, so an environment can be rebuilt
  • Code in your repository, with runbooks and architecture documentation
  • Cloud cost tracking, so the invoice holds no surprises
Working together

How the engagement runs

Delivery runs in six stages and you are involved in each: discovery, where we agree requirements, technology and architecture; design, with prototypes and API specifications; development in two-week sprints; testing, including performance and security checks; deployment, with data migration, documentation and training; and ongoing support. Every stage ends with something tangible, so you always know where the project stands.

The engagement itself runs in one of three ways, depending on what you already have. With no team in place we cover the whole thing. If you have a product manager and your own developers but not enough hands, we come in as extra capacity inside your process. And if you only need direction — whether this is a software project at all, and what it would cost — that is advisory work you can buy on its own, with no obligation to build anything.

Trusting part of your operation to an outside partner is not an easy decision. Ask who will actually do the work and whether you can talk to them. Ask when the estimate arrives and what it rests on. And ask who owns the repositories and the cloud accounts, and what happens if you want to leave. If any answer does not suit you, better to find that out before rather than after.

Why choose Techbaltics

  • An honest comparison

    We say upfront when an off-the-shelf product would do the same job for less. Our interest is not in selling you a project you do not need.

  • Senior engineers

    The people you meet in the first conversation are the ones writing the code. We don’t sell junior work at a senior rate.

  • The standards are written down

    Architecture, security and quality requirements are documented and checkable rather than a promise in a proposal. They are set out below.

  • Visible every two weeks

    Every sprint ends with something you can click through in staging. The first working result arrives in two weeks.

  • All of it is yours

    Code, design files, repositories and cloud accounts are in your name from the first commit. Handover is an access change, not a migration project.

  • EU jurisdiction and hosting

    We are in Tallinn, in the same timezone and the same contractual framework. Data can stay entirely inside the EU.

Frequently asked questions

How does custom software differ from an off-the-shelf product?

An off-the-shelf product is built for many companies at once and offers a standard set of capabilities serving a broad audience. Custom software is built around your workflows, your compliance requirements and your growth plans. The ready-made product deploys faster, but makes your business adapt to what it happens to do.

In practice the difference comes down to four things. Features: an off-the-shelf product carries many you will never use and often lacks the one you need. Integration: a custom system connects directly to what you already run, where a ready-made one frequently needs expensive middleware. Scaling: a custom solution grows along your plans, where a product can become the constraint. Total cost: custom software takes a larger upfront investment but carries no recurring licence fees.

If your process is not a competitive advantage and a product covers the need, we will recommend the product. That happens more often than our business model would suggest.

Can you start without a finished specification?

Yes — that’s how most projects start. Discovery exists precisely to produce the specification: we map the domain, agree the scope, and give you an architecture and a budget you can plan against.

Who owns the finished software?

You do, in full. All intellectual property, source code and project artefacts are yours from the first commit.

We work in your repositories and your infrastructure accounts, so transferring ownership needs no separate step — it is an access change. There are no licence restrictions and no lock-in: you can modify the code, maintain it yourselves, or hand it to any other partner.

Before work starts we sign an NDA covering your trade secrets and processes. Documentation hands over with the code: architecture decisions, API descriptions, the data model and runbooks, so your team can keep the system running on its own if it needs to.

Many clients stay on a support retainer afterwards, but that is a choice rather than a condition.

What happens after launch?

Two options, both normal: continue on a support retainer where we monitor and maintain, or take the system fully in-house. In the second case handover and training your team are included in the project price.

How long does development take?

It depends on scope, but there are reliable orders of magnitude. You see the first working result in two weeks. A clearly bounded MVP usually reaches users within six. A full business product with user management, integrations and an admin side is more like four to nine months. An enterprise system replacing something that already exists runs longer.

We don’t give a date before discovery. Its output is the delivery plan, with each phase estimated and approved separately — so you never have to commit to the whole project to see the first part.

How involved does our team need to be?

Less than people fear, but not nothing. We need one decision-maker who answers questions within a day or two, and roughly an hour a week for the sprint review. Discovery is heavier — six to ten hours per key person, spread across interviews.

What we genuinely depend on is access to the people who currently do the work. Most wrong assumptions come from asking a manager how the process runs rather than the person who runs it every day.

Will you sign an NDA?

Yes, and we do it before you tell us anything substantive. We have a standard mutual NDA we can send straight away, but we’re equally happy to sign yours — it rarely needs negotiation.

Confidentiality applies without a separate document too: we don’t name clients or show work we don’t have permission to show. If you later allow us to reference your name, that’s a separate written agreement rather than something in the small print.

What does your delivery process look like?

Six stages, and you are involved in each. Discovery: workshops to establish the business need, agree requirements, choose the technology and set the architecture. Design: UX/UI, prototypes, a design system and API specifications. Development: two-week sprints covering frontend, backend, mobile and integrations. Testing: automated and manual tests, performance checks and a security review. Deployment: the production environment, data migration, a zero-downtime release, documentation and training. Support: monitoring, fixes and further development.

Every stage has a tangible output — a requirements document, a prototype, a CI/CD pipeline, a test report, a working application — so you never have to ask where the project stands.

How do you estimate timelines and budget?

The estimate comes after discovery, not before. Until then nobody has enough information, and a number given at that point is a sales argument rather than an estimate.

We estimate the whole delivery chain rather than developer hours alone: requirements analysis, design, development, testing, project management, meetings and non-working days. Most budget overruns come from having estimated only the time spent writing code. The output is a delivery plan with each phase estimated and approved separately — you never have to commit to the whole project at once.

How do you approach architecture?

By the load profile and the team, not by fashion. Microservices solve an organisational problem — several teams that want to release independently — and charge you in networking, observability and data-consistency problems in return. With one team, a well-partitioned monolith is almost always the better choice, and it can be split later.

Event-driven and stateless design are our defaults, because they keep scaling simple. For multi-tenant SaaS we design the data isolation in from the start; retrofitted, it is one of the most expensive changes you can make. Every significant decision is written up as an ADR with its reasoning, so the next person knows why it was done that way.

How do you handle security and data protection?

Security is part of every sprint rather than a check before release. Before any code is written we do threat modelling: what can go wrong, who the attacker is and what they want. During development, static analysis and dependency vulnerability scanning run in the CI/CD pipeline, so a problem surfaces at merge rather than at audit.

Access is role-based and follows least privilege. We encrypt in transit and at rest, keep secrets in a vault, and log who did what and when. On GDPR the starting point is data minimisation: we collect only what the system genuinely needs, and the retention policy is written down before rather than after.

How do documentation and handover work?

The code is in your repository from the start rather than ours — handover is an access change, not a migration project. Alongside the code you get architecture documentation, ADRs with the reasoning behind decisions, runbooks, and a list of known technical debt.

Infrastructure is described as code, so an environment can be rebuilt from nothing without anybody having to remember which settings were once changed by hand. The aim is simple: your team or a new supplier has to be able to continue without asking us.

Do you build mobile apps as well?

Yes, and they sit inside the same service. The choice between native and a shared codebase depends on what the app does: where much of it is device-specific — camera, background processing, maps — native earns its keep, and where most of it is business logic and screens, one shared codebase is faster to build and cheaper to maintain.

A mobile app is not a separate project: it needs a backend, integrations and the same access model as the rest of the system. That is exactly why they live together here — bought separately, the things that fall between those two are the most common source of trouble. We also cover App Store and Google Play publishing and keeping up with platform changes.

Related services

Let’s talk about it.

Describe your situation in a couple of sentences. We reply within one working day.