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.

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.
-
- We use Firebase to provide users a secure way to authenticate and authorize themselves using:
- Email/password,
- Google,
- Microsoft
- We use Firebase to provide users a secure way to authenticate and authorize themselves using:
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:
- Axiom for logs,
- Sentry for errors,
- Microsoft Clarity for recording of user sessions,