Webtools is a secure, private intranet application designed to streamline key internal tasks for software development and localization teams. Built specifically for internal use, Webtools provides a centralized interface that simplifies common tasks, such as initiating and tracking Azure DevOps pipelines, managing and retrieving build versions, and translating software to Norwegian and Swedish.
Technologies Used
The application has been developed with two distinct technology stacks, evolving to suit new requirements:
Initial Version: Built using Blazor and hosted on Azure Static Apps with Azure Functions for backend processes. The infrastructure was generated using Pulumi, eliminating the need for manual Azure configuration. MudBlazor components enhanced the user interface, while role-based access control was managed directly in Azure.
Current Version: Rewritten with SvelteKit and hosted on Vercel, Webtools now leverages Supabase for user authentication and authorization, simplifying user management with an integrated system. The UI was revamped with Shadcn-Svelte components, and Resend.com supports transactional emails for essential communication with users.
- Blazor
- Azure Static Apps
- Azure Functions
- Pulumi
- MudBlazor components
- SvelteKit
- Vercel
- Supabase
- Shadcn-Svelte components
- Resend.com
- SQL Server
- Azure Blob Storage
- Azure DevOps
- Azure AI API
Architecture
Webtools uses a front-end/back-end separated architecture, hosted on Vercel for rapid deployment and streamlined maintenance. Initially, SQL Server and Azure Blob Storage managed build files, metadata, and translations, while in the current version, Supabase now handles data storage and user authentication, providing a fully integrated solution for role-based access. This architecture supports scalability and robust access control across Admin, Contributor, and Translator roles, ensuring a secure and organized environment for the client’s internal teams.
Key Features
Automated DevOps Pipeline Integration: Users can start Azure DevOps pipelines directly from Webtools, building new software versions (in .msi, .exe, or .msix formats) with just a click.
Build Status Tracking: Project managers can view the status of recent builds at a glance, avoiding complex Azure DevOps navigation.
Build History and Download: The application displays all previous builds in a searchable, sortable table with essential details—version, size, date, and changelog—eliminating the need for Azure Explorer.
Multi-Language Translation Support: Webtools provides both manual and AI-powered translation options (via the Azure AI API) for localizing software into Norwegian and Swedish, allowing team members to translate text elements individually as needed.
Role-Based Access Control: Built-in access levels (Admin, Contributor, Translator) ensure users only access the tools and data relevant to their roles, enhancing security and usability.
Key Challenges
The development of Webtools involved overcoming several technical hurdles:
- Infrastructure Automation: For the Blazor version, Pulumi was utilized to automate infrastructure setup in Azure, minimizing the need for manual configuration and reducing deployment errors.
- Role Management: The original setup required manual role assignments in Azure. In the SvelteKit version, Supabase streamlined this process, allowing for more efficient user management with scalable role-based permissions.
- Localized Translation Integration: Translating specific software components with Azure AI API posed initial compatibility challenges, particularly in managing translations efficiently within SQL Server, requiring custom logic to support both automated and manual translation workflows.
Target Audience
Webtools is custom-built to meet the specific internal needs of a single client, providing a streamlined and secure environment for handling essential workflows. Its centralized interface minimizes complexity, enabling users to initiate tasks swiftly and focus on high-priority objectives without navigating multiple platforms.
Access
Webtools is a private application accessible only to authorized users within the client’s intranet environment, ensuring high security and exclusivity.