Skip to main content

How we work

If you're coding at Namtek, you're choosing to do so at a fast-paced, high-standards environment where you will build comprehensive software solutions which cover from A to Z the needs of an end user in a specific domain.

Ther are regular software development teams where you'll have a much more limited scope and that's fine but if you're working with us, you're choosing to step up your game, integrate with sometimes unubiquitous/old technologies and deliver software which is not only functional but also secure, scalable and maintainable.

Development flow

Our continuous integration and continuous deployment (CI/CD) flow allows us to deliver software on time and which satisfies the needs of the end user.

CI CD

1- Plan

We sit down and scope the feature based on:

  • Requirements: we gather the requirements from the client and write them down in a document,
  • Technical plan: we write down the approach we will take to implement the feature, could be a few lines in an issue, a diagram, or a document for more complex features.
  • Estimation: we estimate the time it will take to implement the feature.

Tools used:

  • GitHub: projects and issues,
  • Microsoft Word: sometimes the requirements are written down in a Word document we might link in an issue,
  • Microsoft Excel: for corelated issues, we use Excel to keep track of them.

2- Code

Our tech stack:

  • Frontend: Our frontend stack is minimalistic and basically uses Remix.run. We don't have a state manager or complex routing, we use the built-in features of Remix.run. This is because must of the heavy lifing is centralized in the backend.

    • React.js running on [Remix.run](,
    • Joy UI for the design system
    • React Hook Form to keep track of the form state and light client-side validation (ciritcal or complex validaiton should be done on the server).
  • Backend: Our backend stack is an isolated rails API which lives on the same machine as the frontend.

    • Ruby on Rails MVC (Model View Controller) REST API where the validation is done. The business logic is split between the API and SQL stored procedures and views.
  • Database:

    • We use Microsoft SQL Server as our database. We leverage the stored procedures, views, functions and encryption features of SQL Server to keep the data secure and the business logic centralized.
  • Firebase/Google identity:

    • We use Firebase to provide users a secure way to authenticate and authorize themselves using:
      • Email/password,
      • Google,
      • Microsoft

3- Build

We use development servers running either locally (backend/frontend) or on a staging server (database) to test the feature.

4- Test

Types of testing:

  • Unit testing: we write unit tests for the backend and frontend to make sure the feature works as expected.
  • Manual testing: we test the feature manually to make sure it works as expected.
  • Stress testing: we test the feature under heavy load to make sure it can handle the expected load.

5- Deploy

We deploy the feature on on-premise servers using:

  • Rocky linux VMs,
  • Docker since all our apps are containerized,
  • Kamal-deploy for zero-downtime deployments among multiple servers and secrets management.
  • Azure Container Registry to store the images which kamal pushes and then pulls from the servers.
  • Cloudflare for DNS, SSL, DDOS protection, caching and most importantly load balancing.

6- Operate

We operate the platform using:

  • System administrator mode on the platform to switch between tenants/companies,
  • Administrator-only pages to manage the parameters of the platform,
  • Rails console to debug issues/fulfill user requests,
  • Raw SQL queries to debug issues/fulfill user requests

7- Monitor/Measure

We monitor the feature using: