CACiC Event Manager Documentation
website·Indexed 30 days ago
https://docs.eventos.cacic.com.brTechnical and user documentation for the CACiC Event Manager, covering backend development with NestJS and GraphQL, frontend implementation with Angular, and administrative manuals for event management, attendance collection, and certificate issuance.
What's inside CACiC Event Manager
- The public interface is designed for participants, speakers, attendance collectors, team representatives, and match officials. It provides access to public queries and personal actions without requiring full administrative panel access. The available tabs and their positions may vary based on user authentication, context, and enabled features; therefore, the order of tabs should not be treated as a fixed workflow.
Introduction to CACiC Event Manager Frontend Development
The Frontend section provides guidance for developing the CACiC Event Manager. Developers should prioritize reviewing the Storybook and the Testing and Validation documentation before modifying interface flows. Additionally, if changes involve caching, IndexedDB, offline presence collection, wallets, preferences, or Service Worker (PWA) updates, the 'Off-line and service worker' documentation must be consulted.Overview of CACiC Event Manager
CACiC Event Manager (referred to as 'CACiC Eventos' in public communications) is a web application developed by CACiC for the FCT-Unesp student community. It automates event management workflows, specifically focusing on Computer Science course events (such as standalone short courses and larger events like SECOMPP), though it remains flexible for other event types. Key automated features include:
- Event registration
- Participation certificate issuance
- Attendance collection
Understand the purpose of the Administrative Panel
The administrative panel is designed for event organizers to perform registration, verification, correction, and auditing of system data. For field operations—specifically attendance collection during an event—the public interface should be used instead, as the administrative panel is less optimized for mobile devices or limited connections and requires broader permissions.Understand the Event structural hierarchy
The system uses three primary structures to organize activities. The hierarchy is as follows:
- Major Event: The top-level aggregator. Can contain multiple Events and Event Groups.
- Event Group: A collection of Events that are interdependent. Can be standalone or part of a Major Event.
- Event: The smallest unit. Represents a single activity. Can be standalone, part of an Event Group, or part of a Major Event.
Standalone Event Standalone Event Group ├── Event └── Event Major Event ├── Event ├── Event └── Event Group ├── Event └── EventImplement landing page for Google Cloud OAuth approval
To obtain approval from Google Cloud for OAuth usage, a landing page is required. This page must provide information about the project. Additionally, the application must automatically redirect users who are already logged in from the landing page to the calendar page.Organize feature groups within /src/app
Components sharing the same context are organized into groups within
/src/app. The primary groups are:about: Project information, licenses, privacy policy, and support.auth: Login page.development-tools: Pages used only in development environments (excluded from production).landing: Application home page (index).modals: Global modals that interrupt user navigation. (Note: Non-intrusive modals belong inshared/modals).profile: User profile related pages.restricted-area: Pages containing content protected by administration claims.tabs: Pages displaying tabs.validate-certificate: Certificate validation page.
Understand the Event Manager permission model
Administrative permissions in the Event Manager are based on responsibilities. Access is determined by combining the following elements:
- Role (Cargo): A collection of permissions required for a specific responsibility.
- Assignment (Atribuição): Links a role to a specific person or a permission group.
- Scope (Escopo): Limits the data reachable by an assignment (e.g., Global, Event, Group).
- Validity (Validade): Defines the time window during which an assignment or its scopes grant access.
- Permission Group (Grupo de permissões): A collection of people exercising a recurring responsibility (distinct from event groups).
Note: Keycloak handles initial authentication and entry into the panel, while business authorizations are managed within the Event Manager.
Understand the CACiC Event Manager authorization architecture
The CACiC Event Manager uses a multi-layered authorization system where the backend is the final authority. It combines four sources to determine access:
- Keycloak: Handles authentication, session management, and the
super-adminbypass. - Shared Catalog: Defines permission names, labels, presets, and tab requirements.
- Database Grants: Stores effective permissions per user, including scope and validity periods.
- Domain Rules: Applies contextual restrictions (e.g., frozen resources, collection windows, or event links).
Key maintenance files include:
libs/shared-permissions/src/lib/shared-permissions.tsapps/backend/src/app/auth/guards/keycloak-scope.guard.tsapps/backend/src/app/authorization/authorization-policy.service.tsapps/backend/src/app/authorization/permission-grants.service.tsapps/backend/src/app/authorization/permission-grants.resolver.tsapps/admin/src/app/shared/services/workspace-permissions.service.tsapps/admin/src/app/shared/services/workspace-people.service.ts
- Keycloak: Handles authentication, session management, and the
Establish an automated testing strategy
Automated testing is a fundamental requirement for development to detect regressions early and increase reliability. The recommended strategy includes:
- Unit Tests: To validate business rules.
- Integration Tests: To verify communication between components.
- Interface Tests: To validate critical user flows.
Understand the Event Form domain model
Event forms are designed to collect responses linked to events or 'large events' (grandes eventos) without requiring separate flows for each case. A form consists of the following components:
- Administrative Owner: Either an event or a large event (used for organization in the admin panel).
- Links (Vínculos): Determines where the public can respond.
- Form Fields: The set of questions/inputs.
- Publication State: Current visibility status.
- Secrecy Rule: Controls who can see identities and responses.
- Response Counting Mode: Method used to count responses.
Justification for using Angular and NestJS for the FCT App
Angular (frontend) and NestJS (backend) were selected for the FCT App rewrite to mitigate risks related to project organization, lack of standardization, and high developer turnover. Both frameworks are heavily based on TypeScript and provide well-defined architectural structures that favor modularization, scalability, and long-term maintenance. This combination is particularly suited for administrative 'dashboard' applications requiring complex forms, authentication, authorization, and CRUD operations.