Skip to content

Custom software

Custom software built around how you work.

We build web apps, dashboards and internal systems that mirror how work flows through your company, using Next.js, React, Node.js and Python.

Laptop with an open HTML code editor in a dim interior

We fit the tool to how your team really works, so people click less, make fewer mistakes and keep all their data in one place.

Overview

A tool for the steps unique to your company.

Off-the-shelf SaaS handles the steps that look the same in every company. The steps unique to you need a dedicated approach: your own approval flow, non-standard availability rules, separate handling for each market, pricing rules too complex for a settings screen. When those steps live outside the system, the work moves into workaround spreadsheets, email threads and decisions made in chat, and the process ends up scattered across many places.

Before we write any code, we map how work runs in your company today, so the tool mirrors your actual workflow. We build on proven, low-maintenance technologies—Next.js, React, Node.js and Python—so the system stays fast and ready for more traffic. We roll it out in stages, so the first module reaches your team early and takes work off their plate from day one.

Pink crayon on graph paper with hand-drawn interface wireframes

Fits how you work

A system that mirrors your workflow step by step.

A dashboard for your team

Your team changes content and settings without a developer.

Single sign-on

OAuth, custom providers and SSO across your company’s apps.

Built in stages

One working module early, with more added stage by stage.

What we build most often.

The 6 types of web apps and internal systems below take repetitive work off your team and keep your data in one place.

See scripts & automation
  • Admin dashboards and CMS

    Configuration modules, toggles for features and page sections, HTML template editors with live preview, change history, roles and permissions. When content or settings need to change, your team does it on its own.

  • Ticketing and case management

    A ticket inbox with priorities, deadlines, assignees, comments and attachments. Separate queues for each department or market, email notifications and a full history of every case.

  • Bookings and calendars

    Open slots calculated to the minute, service durations and buffers, double-booking prevention when 2 requests arrive at once, reminders and sync with external calendars.

  • Customer and partner portals

    A personal account with order history, documents, case statuses and price lists assigned to each business customer. When customers can check the status in the portal themselves, your team fields fewer “where does my case stand?” inquiries.

  • Configurators and calculators

    Step-by-step option selection, dependency and exclusion rules, server-side pricing and a ready-made specification for a quote or order.

  • Reporting tools

    Reports calculated from your own data, filters by period and channel, spreadsheet export and scheduled reports emailed by a CRON job straight to your inbox.

When it pays off

When custom software makes sense.

Many processes run fine on off-the-shelf SaaS. The 8 signs below usually mean your current tool already costs more than its license invoice shows.

  • Your team retypes the same data between a system and a spreadsheet every day, because no single tool has the full picture
  • You pay a subscription for every user and actually use only a handful of features
  • You run a key process through workarounds: email, chat and comments on a shared file
  • An off-the-shelf tool forces you to change the very process that gives you your competitive edge
  • You need roles and permissions beyond what an off-the-shelf system offers—for example, access limited to a single market
  • You want to connect the tool to your warehouse, accounting or payment gateway, and the SaaS vendor doesn’t provide the API you need
  • Your customer data and business results sit in a service that makes a complete export difficult
  • Onboarding a new hire takes weeks, because half of the process rules exist only in someone’s head
  • Next.js
  • React
  • TypeScript
  • Node.js
  • Python
  • PHP
  • PostgreSQL
  • MySQL
  • Tailwind CSS
  • REST API

Dashboard and access

One dashboard, one sign-in.

A dashboard where your team makes changes on its own

Maintenance costs stay lowest when your team can make small changes without filing a ticket with the vendor. That’s why we build the admin dashboard as a core part of the product, so anything that changes in your company every week can be updated in the browser without waiting for a developer.

By default, we deliver configuration modules with toggles for features and page sections, an HTML template editor with live preview before publishing, a change history that shows who edited each record and when, rejected-record reports with the reason for each error, and a “Test connection” button for every integration. Roles and permissions complete the set: whenever someone logs in, they see only the tasks and data their job requires.

  • Admin dashboard
  • HTML template editor
  • Change history
  • Roles and permissions
  • Next.js
  • PostgreSQL

One sign-in for all your company tools

When a company runs several internal tools, one sign-in for all of them keeps each person on their own account. We set up sign-in with company Google or Facebook accounts via OAuth, a proven standard that lets people log in without creating yet another password. Where you need full control, we build a custom server-side authentication system to keep access to your data secure.

One account then opens all your apps (SSO, a single sign-in for many tools), so when someone leaves the company, you revoke their access in one step. We generate session signing keys at random and store them outside the code, so you can rotate them whenever you need to. We check permissions on the server on every request, so access to data truly depends on the user’s role.

  • OAuth
  • SSO
  • Custom auth provider
  • Session key rotation
  • Node.js
  • TypeScript

Comparison

Off-the-shelf SaaS or a custom system.

We recommend custom code only where it pays off in your process. The 6 differences below most often decide the choice.

Comparison of off-the-shelf SaaS and custom software
CriterionOff-the-shelf SaaSCustom software
FitYou adapt your process to the toolThe tool mirrors your workflow
Cost modelSubscription that grows with every new userBuild cost up front, then maintenance and development
DataIn the vendor’s database, with exports in the vendor’s formatOn your server or in your cloud, with full access
IntegrationsLimited to what the vendor’s public API supportsAny API, webhooks, exports and data exchange with your ERP
ChangesA feature request on the vendor’s roadmap, with no guaranteed dateThe next iteration, planned together with you
CodeClosed, tied to a single vendorRepository and documentation in your hands

Three processes worth moving out of spreadsheets.

Each of these 3 processes can be organized in a single tool, so your team works faster and with more confidence, and the data stays in one place.

  • Ticket workflow

    A case whose status nobody can pin down

    How it looks today

    When a ticket passes through several departments, its history lives in individual email inboxes. Customers hear about a decision only once they follow up themselves.

    What’s underneath

    The process rules live in people’s heads, so they’re hard to reconstruct when someone is away. Because no field enforces complete data, a case stalls whenever a photo or a proof-of-purchase number is missing.

    How we solve it

    We map every stage exactly as it runs in your company today, so the system fits real work. Each stage gets an owner, a deadline and the fields required before the case can move on. Every status change sends an email notification, and the time spent at each stage goes into a report, so you always know where a case stands.

    • Next.js
    • Node.js
    • Roles and permissions
    • Transactional email
    • PostgreSQL
  • Configurator

    A quote every salesperson calculates a little differently

    How it looks today

    Quotes come out of a spreadsheet that has accumulated exceptions over the years. Preparing one takes a day or two, and some discounts get applied outside the official policy.

    What’s underneath

    The pricing rules have no single home. Every copy of the spreadsheet holds its own version of the logic, and the only check is the good faith of whoever fills it in.

    How we solve it

    We move the rules to the server and calculate the price in one place, with exclusions and dependencies between parameters. Discount thresholds depend on the user’s role, so each salesperson can grant discounts up to their own limit. The result is saved as a versioned quote with a PDF file and a specification ready for the order.

    • Next.js
    • TypeScript
    • Pricing rules
    • PDF generation
    • PostgreSQL
  • Bookings

    Two appointments booked for the same time slot

    How it looks today

    Appointments are booked by hand into a spreadsheet. Double bookings happen, and so do appointments accepted outside the location’s opening hours.

    What’s underneath

    A person works out availability in their head, and a spreadsheet has no concept of a lock. When 2 bookings come in at once, both land in the same slot, because nothing prevents it.

    How we solve it

    We calculate open slots from 3 inputs: staff schedules, service duration and buffers between appointments. We save each booking in a database transaction that locks the slot, so 2 simultaneous requests can’t land in the same slot. Email confirmations, reminders and a calendar view for your staff complete the setup.

    • Next.js
    • TypeScript
    • PostgreSQL
    • Transactional email
    • CRON

Process

From process map to working system.

We work in short cycles across the 4 stages below and ship working parts of the system along the way, so you see results early and can judge them against real work.

  1. 01

    Workshop and process map

    Before any design work starts, we sit down with the people who do the work every day. We map the workflow step by step and catch the exceptions and the points where data passes through a spreadsheet. Together we decide which system is the source of truth for each piece of data and who holds which permissions.

  2. 02

    Prototype

    We build a clickable wireframe of the key screens and the data model. Your team tests it on real cases before the production code is written, so changes at this stage are quick and inexpensive.

  3. 03

    Iterative rollout

    We deliver module by module, each one tested and ready for daily work. We build in an isolated environment and deploy to production after testing in several browsers and checking every view at widths from 320 pixels up.

  4. 04

    Development and maintenance

    After launch, we gather feedback from real use and plan the next iterations. We stay on with monitoring, backups, updates and documentation, so the system grows along with your company.

FAQ

Questions about custom software.

How long until the first working module goes live?

It depends on the scope, but one rule always applies: after the workshop and prototype, we plan the first module to reach your team as early as possible and take real work off their plate. We add further features iteratively, in an order set by their value to your business, so you see results gradually throughout the rollout.

Isn’t a custom system more expensive than a subscription to an off-the-shelf tool?

At the start, yes—you cover the build cost up front. The math changes once you add fees for every additional user, extra modules and the time your team spends working around the tool’s limits. If our review shows that a ready-made solution fully covers your process, we’ll tell you so directly.

Who owns the code, and where is the data stored?

You own 100% of the code and data. We work in your repository or hand the repository over at the end of the project, together with documentation and setup instructions. We deploy the system on your VPS or in the cloud of your choice, with auto-renewing SSL certificates, backups and monitoring.

Will the new tool connect to the systems we already use?

Yes, and that connection is usually what makes the rollout worthwhile. We connect custom apps to sales platforms, ERP, warehouse and accounting software, payment gateways and email systems—via REST, webhooks or file exchange. When an external system lacks the API you need, we find another way to exchange the data.

What if our process changes after launch?

That’s exactly why we build a configuration dashboard: you make some changes yourself—new lookup values, statuses, content, turning sections on or off. Deeper changes to the logic come as the next iteration, estimated and planned together with you. After handover, the system stays open to further development.

How do you handle security and access?

We base sign-in on proven standards (OAuth or a custom system with single sign-on across multiple tools), and we check permissions on the server on every request, so access to data depends on the user’s role. Whenever users enter data, we filter it to block typical attacks on web applications. We keep passwords and keys in the server configuration, outside the code, so you can replace them whenever needed.

Have a process no off-the-shelf tool can handle?

Email us a short description of how this work runs today and what slows your team down the most. We reply within one business day with questions, then propose a scope for the first module, a timeline and a rollout plan with no downtime for your business.