Professional Experience: Sigaweb (SIGA)

Posted on March 15, 2026

For approximately three and a half years, I worked as a full-stack developer at Activesoft Consultoria, contributing to the development and maintenance of Sigaweb (SIGA) — a large-scale educational management system used by schools and universities. The system covers everything from student enrollment and academic records to financial billing and institutional reporting.

By the time of my departure in August 2024, the platform served over 700 schools across Brazil, impacting more than 1 million users. Activesoft, founded in 2002, had integrated with the Arco Group in 2023, becoming the official school management system of the largest basic education group in Latin America.

Throughout this period, I contributed around 2,765 commits across 810 working days, modifying over 1,600 unique files across more than 10 major modules of the application. My contributions added over 123,000 lines of code, with a net contribution of approximately +85,000 lines.


Numbers at a Glance

2,765

Commits

96

Feature cards delivered

+85k

Net lines of code

1,600+

Files modified

53

Pull requests merged


Technologies

Frontend (1,304 files): React 16, TypeScript (strict mode), Styled-components, Redux, Formik, Webpack, Storybook

Backend (236 files): Python, Django, Django REST Framework, Microsoft SQL Server

Infrastructure & Tools: Docker, AWS, Cypress, Git, CI/CD pipelines


Yearly Contribution and Growth

My engagement with the project was consistent throughout the years. I went from learning a large, unfamiliar codebase to autonomously delivering complex features across multiple modules:

  • 2021: 445 commits — onboarding and first feature deliveries, learning the architecture and conventions of a codebase with over 20 years of history
  • 2022: 484 commits — deepening specialization in the financial module, delivering features end-to-end (frontend and backend)
  • 2023: 492 commits — peak year, taking on more complex features, expanding into academic and training modules, and contributing during the Arco Group integration
  • 2024: 151 commits (through August) — continued delivery until departure

Technical Challenges

Working on a system of this scale brought challenges that went beyond writing code for individual features:

  • Large collaborative codebase: Coordinating with 57 contributors required disciplined use of pull request reviews, changelog documentation, and consistent coding conventions to avoid conflicts and maintain code quality
  • Multi-tenant architecture: Each institution had its own set of enabled features and configurations, so both frontend and backend code needed to adapt dynamically — rendering conditional fields, adjusting queries, and checking permissions based on the institution's profile
  • Version compatibility: The system maintained multiple versions simultaneously for different clients, requiring version-aware code that could modify behavior (including SQL query segments) based on which version a given institution was running
  • Financial data at scale: Bulk operations on billing data (batch tax generation, title modifications across hundreds of records) demanded careful handling of database transactions and user feedback for long-running processes

How I Built: Frontend

The user-facing side of the application was built with React using functional components and hooks. I used patterns such as custom hooks to encapsulate reusable logic (for example, a selection hook that manages toggling, partial selection, and disabled states across lists), and component composition to build complex interfaces from smaller, focused pieces rather than relying on inheritance.

Forms — central to a management system — were handled with Formik combined with Yup for schema-based validation. This allowed me to build multi-step forms with conditional field visibility, asynchronous validation (such as ZIP code lookups), and nested validation rules, all while keeping the validation logic separate from the interface code.

Styling followed a CSS-in-JS approach using Styled-components, integrated with a design system that provided theme tokens (colors, fonts, spacing) for visual consistency. Components supported variant systems (for example, buttons with primary, secondary, danger, and link variants) and responsive behavior through screen-size detection hooks.

All code was written in TypeScript with strict mode enabled, using interfaces for component props, enums for domain constants, and generics in reusable utilities. This strictness helped catch errors at compile time rather than in production.

How I Built: Backend

The backend was powered by Django and Django REST Framework, where I worked with serializers to transform data between the database and the API, and with class-based views organized through mixins — reusable building blocks that add specific capabilities (such as versioning or access control) to API endpoints without code duplication.

For complex financial queries and reports, I wrote parameterized SQL with dynamic query segments that adapted based on the system version and the user's permissions. This approach allowed the same report endpoint to serve different institutions with different feature sets, while keeping the queries safe from injection attacks.

Access control was enforced at the API level through a permission system that checked whether the user's institution had a given feature enabled before allowing operations, ensuring that financial data was only accessible to authorized users.

How I Built: Integration

Frontend-to-backend communication went through a layer of API client classes built on top of Axios. Each client was responsible for a single domain (such as billing or payment methods) and handled data transformation between the backend's naming conventions and the frontend's, including date format conversions and field mapping for entities with dozens of attributes.

For file operations such as uploading return files for payment processing, I used FormData-based uploads with metadata attached. Async select dropdowns with pagination and caching were also part of the integration patterns I used frequently, allowing users to search large datasets without loading everything at once.


Financial Module

My primary area of specialization was the financial module, where I delivered 77 feature cards. On the frontend, this meant building complex forms for invoice configuration, receivables processing, and payment term management — forms that often spanned multiple tabs, had conditional fields, and required inline validation against business rules. On the backend, I implemented serializers for financial data structures, report views with configurable filters, and bulk operation endpoints for batch tax generation and title modifications.

I also participated in the Pix payment integration, contributing API implementations, the receivables listing screen, a modal for linking services to instant Pix, a transfer/Pix receivable component, the redesign of the Pix payment method registration form, and the Pix boleto feature with QR code generation.

Communication System

I was a significant contributor to the institution's multi-channel communication system (SMS, email, and in-app notifications), responsible for 30% of the component's commits. My contributions included improvements to the multi-step modal workflow (built as a composition of step components sharing state through Formik context), custom text template management with save/edit capabilities, test message functionality for previewing messages before sending, message counter fixes, and various UX adjustments requested during code reviews.

Academic and Training Features

I delivered 14 feature cards on the academic and training side of the system, including historical transcript generation for different school types, final grade report sheets, student portal features with medical forms, customized report configurations per educational institution, and training module features for institutional staff development.

CRM Module

I worked on 5 feature cards for the CRM module, implementing partnership and customer relationship management features for the institutional sales workflow.

Development Workflow

The project followed a structured workflow with pull request reviews, comprehensive changelog documentation, and CI/CD pipelines. Components were documented in Storybook for visual reference, and end-to-end tests were written with Cypress. The codebase was organized in a feature-based architecture with clear layer separation: design system components, UI components, domain-specific business logic, and API client classes.

The project had 57 contributors and over 1,000 releases during my time on the team, reflecting a fast-paced and well-organized delivery cadence.