Skip to content

AMT Console Technology Stack

Mike edited this page May 29, 2024 · 1 revision

Date: 02/13/2024

Status: Declined

After much discussion, we have decided in favor of leveraging our existing UI and will build a new go-based back-end to support the specific needs of direct connect capabilities in an enterprise environment.

Business Implications

Minimal. The decision aligns with the current team's expertise and technological ecosystem, ensuring rapid development and ease of maintenance. Additionally, it addresses a critical need in the enterprise environment due to the discontinuation of MeshCommander, providing a valuable tool for managing AMT devices.

Context

The AMT Console project is initiated in response to the growing need for a modern, efficient, and responsive web interface to manage and monitor AMT machines deployed in enterprise environments. The discontinuation of MeshCommander has left a significant gap in the market, necessitating an alternative solution for enterprise customers to manage their AMT devices effectively. The requirement for a single executable that is cross-platform is paramount to cater to our diverse user environments. The team's existing familiarity with Go, combined with the need for quick iteration and a robust, scalable solution, necessitates a technology stack that leverages current skills while delivering high performance and ease of use. While .NET presents a compelling option for its integration with Microsoft server technologies and rich ecosystem, it requires the team to adopt a new language and framework, which could slow down development and increase the learning curve. Given the recent amount of change and restructuring within the team, introducing a new language and environment would be detrimental to performance and efficiency.

Decision

After careful consideration, we have decided to use HTMX with Tailwind CSS for the front-end development of the AMT Console and Go for the backend. This decision is based on the following considerations:

  • Cross-Platform Single Executable Requirement: Go's ability to compile to a single binary that is cross-platform meets our core requirement for the AMT Console. This approach simplifies deployment and usage across different operating systems, fulfilling our objective of broad accessibility.

  • Filling the Gap Left by MeshCommander: The development of the AMT Console is directly aimed at providing an alternative to MeshCommander, ensuring that enterprise customers have a reliable and modern tool for managing their AMT devices. This necessity adds urgency and focus to our project.

  • Team's Familiarity with Go: The team's existing expertise in Go will be leveraged to accelerate the backend development process. This familiarity will also ensure that we maintain high code quality and efficient development practices.

  • Alignment with Technology Stack: Utilizing Go for both the backend and integration with the front-end technologies (HTMX and Tailwind CSS) promotes alignment within our technology stack. This consistency aids in reducing context switching for developers and enhances the reusability of code across projects.

  • Ease of Development with HTMX and Tailwind CSS: HTMX allows us to build dynamic, responsive web interfaces without the complexity of a full-fledged JavaScript framework. When combined with Tailwind CSS for styling, we can rapidly develop a modern and user-friendly UI with minimal overhead. This choice enables us to focus on delivering features without getting bogged down by the intricacies of more complex front-end frameworks.

Consequences

  • We address a critical market need by providing a modern and efficient tool for managing AMT devices in enterprise environments, filling the void left by MeshCommander.
  • Leveraging the team's existing Go expertise accelerates development and reduces the learning curve, ensuring high productivity and code quality.
  • The decision to use HTMX and Tailwind CSS for the front-end development supports the creation of a responsive and modern UI with a focus on productivity and minimal complexity.
  • Opting against .NET may limit out-of-the-box integration capabilities with some Microsoft server technologies, but this is mitigated by Go's flexibility and the availability of libraries and tools for integration.
  • The team will need to familiarize themselves with HTMX and Tailwind CSS, requiring some training. However, this is considered less demanding than ramping up on a new language like C#, given the team's existing web technology context and awareness.

Questions Answered

  • How do we provide an efficient and modern alternative to MeshCommander for managing AMT devices in enterprise environments?
  • How do we ensure that our technology choices align with the team's expertise and project requirements?
  • How do we build a responsive and modern web interface for the AMT Console while ensuring the backend is robust and scalable?

References