Hello all, allow me to present our last work called: SOVERI, a project aimed at replacing an existing Web2 project management tool.
Starting point
A nearly 20-year-old PHP application, hosted on traditional cloud infrastructure, helps our company manage project requirements by facilitating a collaborative flow, using the documentation and tasks for both, developers and customers.
We decided to replace the current application for two main reasons: to improve the user experience and to eliminate the need for regular server updates, which will increase efficiency and reduce costs.
What we’ve built
We’ve developed a comprehensive project management tool, featuring modules for users, projects, working time recording, and documentation. It includes advanced filtering and full-text search for tasks and documentation, e-mail notification capabilities for task creation and updates, PDF generation for documentation, and Excel export for working time entries. The project primarily utilizes IC technology, with certain aspects supplemented by dedicated Node.js services which are part of the project and under control of the company.
The project uses several Motoko canisters, each dedicated to specific workloads such as time tracking, indexing, file storage, and backend data management. Below you can see an overview of the architecture.
To ensure data sovereignty, all project components are integrated into a comprehensive environment, leveraging the strengths of both worlds, Web2 and Web3.
Current state of the project
The project is fully operational and currently utilized internally by our employees for daily tasks. This phase aims to assess if the theoretical framework aligns with real-world usage. Assuming no significant obstacles arise, a production rollout is anticipated by October 2025.
In the following a concise overview of each application module is provided, beginning with the three administrative modules, used for application management first.
User Management
The user management module enables user management and onboarding via Internet Identity (II) v2 authentication, offering basic role-based authentication with user and administrator roles. Users can manage their language (currently English and German are supported) and profile settings, such as a personal avatar or theme, through their user profile. Limited personal data is stored to ensure GDPR compliance. Using Angular Material Design builder, the theme for each customer is easily customized. Team leaders provide users with their onboarding keys, allowing them to log into the application using II v2.
Project Management
This module facilitates project creation, allowing users to define timelines and assign project leaders and members. Its core function is to frame project data with designated leaders and members which then enforces access rights throughout the application.
Working Time Management
The final administrative module, the working time management, allows you to set up custom reporting periods, define labour costs for each team member and period, and specify activity types for project reporting. In this way we reach 100% adaptability for different needs.
These modules are built for application administrators, while the following modules are designed for everyday use depending on the user’s role. The entire application, including the administrative sections, is designed with a mobile-first approach and supports a PWA mode as well.
Let’s kick things off with a dashboard.
Dashboard
The application’s welcome screen provides users with a summary of their upcoming tasks, organized by due date, and a record of their reported working hours of the day, with links to the tasks and related documentation for a complete overview.
Tasks
Tasks are central to the application, allowing users to document almost anything with features like CCing users, setting priorities and due dates, tracking time, and sharing files.
An import service also enables automatic task creation or message additions from e-mails at regular intervals. In general, the application relies on four Web2 services, all managed by the company running the application on the IC:
-
e-mail notifications,
-
importing e-mails as tasks or messages,
-
generating PDF documents, and
-
Excel export.
All tasks and messages are fully searchable, and the module’s sidebar layout, combined with filtering options, allows for quick and easy navigation between tasks.
Documentation
The documentation module is as vital as the task module, providing project leaders with all the necessary tools to define and oversee their projects and teams. Clear document tree, clear project overview. Team leaders can easily understand and moderate project status with a clear project overview helper.
The documentation module offers team leaders comprehensive tools for project description and documentation. It currently supports three content elements: Editor, image, and files. Project, specific paths, or individual pages can be exported to PDF, and the entire project documentation is fully searchable. Search functionality is also on-chain.
You can add all related tasks to a service item directly from within each task, allowing comprehensive visibility of all documentation-related tasks.
The docu module has special user rights, categorised for project members and project leaders.
Conclusion
The project is currently undergoing real-world testing, with production slated to commence in October 2025. We’ve been asked why we aren’t utilizing existing project management tools like Jira. Our response is that the IC uniquely enables us to address data sovereignty in a way that was previously unattainable.
Lessons learned
Developing complex business applications on the Internet Computer (IC) differs in some ways from traditional Web2 development. Here are the main points we had to address.
The latency inherent in query and update calls on the IC necessitates that the frontend is designed to react accordingly. While seemingly minor, this issue significantly increases frontend complexity. This necessitates the implementation of multiple frontend caching services for routine requests and to prevent image loading in the documentation module during component creation.
A significant challenge we faced was the absence of an efficient data query mechanism. This necessitated the implementation of an indexing strategy for map data like OrderedMap, specifically for filtering on the frontend data that isn’t solely tied to an entry’s key. This, in turn, escalated the complexity of the backend canister, as maintaining such an index requires constant updates for insert, update, and delete operations. A potential future development effort could involve creating a MOPS library to manage filters and map creation.
Data migration is a critical aspect of development, often overlooked in Web2. When developing, for example, if you need to add a new input field for stable user data, improper migration can lead to the loss of test data with every canister update. This significantly increases development time. Therefore, mastering the ability to update stable data and seamlessly migrate state from point A to point B is an indispensable skill for any developer, and one worth emphasising.
Local mobile testing is hampered by the web crypto library’s restriction to localhost without SSL, preventing access via local IP addresses. While creating a local SSL certificate is a possible workaround, the local environment still prefers localhost over a local IP, leading to a complex and hacky development and testing process.
What’s next
We anticipate gradual improvements in numerous minor details as we gain practical experience with the application.
Our agenda includes three key use case features:
-
Encrypted documentation: Utilizing VetKey for secure documentation entries, without search capabilities.
-
Enhanced documentation quality: Integrating an LLM rephrasing feature to improve documentation or enabling speech-to-text.
-
Streamlined billing: Optimizing the billing process through a dedicated billing workflow for tasks.







