Pulsar Admin Login

{{ loginError }}

Browser Storage Blocked: Your browser settings are preventing the dashboard from saving your session. Please disable "Tracking Prevention" or add this site as an exception.

Traffic Overview

Total Requests

{{ dashboardStats.total_requests }}

Errors

{{ dashboardStats.total_requests > 0 ? ((dashboardStats.total_errors / dashboardStats.total_requests) * 100).toFixed(1) : 0 }}%

Recent Traffic Logs

Time Endpoint Status IP
{{ formatDate(log.occurred_at) }} {{ log.endpoint_path }} {{ log.status_code }} {{ log.client_ip }}

API Configurations

{{ config.name }}

POST /api/ingest/{{ config.endpoint_path }}

{{ config.description || "No description" }}

{{ config.is_active ? 'Active' : 'Inactive' }}

Collected Data

Time Endpoint Payload Preview Sync Status Action
{{ formatDate(item.received_at) }} {{ item.endpoint_name }} ({{ item.endpoint_path }}) [Purged] {{ JSON.stringify(item.payload).substring(0, 50) }}... Success Failed Pending Skipped
No data found.

Export Management

{{ ex.name }}

Source: {{ ex.source_type === 'query' ? 'SQL Query' : ex.source_name }}

{{ ex.output_path || 'Not set' }}

Scheduled: {{ ex.schedule_cron }} Manual Only
No export configurations found. Click "+ New Export Config" to get started.

Database Connections

{{ conn.name }}

{{ conn.db_type }}

{{ maskValue(conn.connection_string) }}

Import Manager (Sync from Excel)

Tip: Use the Import Manager to sync data from Excel files back to your database. You can set independent input paths and schedules for each table.

{{ im.name }}

Scheduled: {{ im.schedule_cron }}

Target Table: {{ im.target_table_name }} | Pattern: {{ im.filename_pattern }}

Source Path: {{ im.input_path }}

Trigger: {{ im.trigger_column }} = '{{ im.trigger_value }}' Elite Mode (Sheet ID) Optimized Diff Audited: {{ im.history_log_table }}

No import tasks configured yet.

{{ editingExportId ? 'Edit' : 'Create' }} Export Configuration

Configure automated data extraction and formatting rules.

Identity & Source

Database Connection is shared across all tabs.

Schedule Execution

Example: 0 0 * * * (Daily at midnight)

Destination & Sync

Elite mode writes directly to existing cells without creating new files.

File Properties

Excel Formatting

Leave empty to protect only frozen areas.

Row Range Coloring

No row ranges defined

Custom Logic Columns

Pre-fills the cell with data from this DB column (prioritized over formula).

Click "+ Add Logic" to define interactive columns.

Running Numbers (Sequences)

Type Year Art Template Number
{{ seq.admission_type }} {{ seq.admission_year }} {{ seq.art_form }}
No sequences generated yet.

Test Tool

{{ testFormatResult }}

Global System Settings

Default limit for all endpoints unless overridden.

User Management

Username Email Group Role Status Actions
{{ user.username }} {{ user.email || '-' }} {{ user.group.name }} None {{ user.role }} {{ user.is_active ? 'Active' : 'Inactive' }}

Group Management

Group Name Description Module Access Actions
{{ group.name }} {{ group.description }}
{{ mod }}

Generated Index History

Full history and status for this generator

Latest Numbers by Art Form (Grouped by Admission Type)

Track:
Art Forms for {{ selectedSummarySubType || selectedSummaryType }}

{{ item.art_form }}

{{ item.index_number }}

Select a track above to view latest index numbers

Click an Admission Type above to view latest index numbers by Art Form

Active Filters: {{ filter.type }} / {{ filter.art }}
Index Numbers Applicant Info Attempt Status Synchronization Generated Date Actions
{{ idx.index_number }} {{ getDisplayAdmissionType(idx.admission_type) }} {{ idx.art_form }}
{{ group.applicant_name }} {{ group.applicant_email || '-' }} ID: {{ group.applicant_identifier }}
ATTEMPT #{{ group.attempt_count || 1 }}
{{ group.indices[0].email_status }}
{{ group.indices[0].db_sync_status }}
{{ formatDate(group.created_at) }}

No records matched your filters.

Showing {{ (indexGenHistoryPage - 1) * indexGenHistoryPageSize + 1 }} to {{ Math.min(indexGenHistoryPage * indexGenHistoryPageSize, getFilteredGroupedHistory().length) }} of {{ getFilteredGroupedHistory().length }} groups

Index Generator

Auto-generate index numbers for SOTA applications

{{ ig.name }}

Format: {{ ig.format_template }}

API Config ID: {{ ig.api_config_id }} | Starting #: {{ ig.starting_number }}

Email: {{ ig.gmail_address }} DB Sync Enabled {{ ig.is_active ? 'Active' : 'Inactive' }}
No index generator configurations found. Click "+ New Config" to get started.

{{ editingIndexGenId ? 'Edit' : 'Create' }} Index Generator

Configure index number format, field mappings, and email settings.

Identity & Source

Use Target Table if collected payloads are purged after sync.

Skip duplicated applications in batch

Record subsequent attempts with new index numbers

Trigger on new API collection

Format & Fields

Placeholders: {admission_type}, {admission_year}, {art_form}, {running_no}

Code Mappings (JSON)

Gmail Email Settings

Generate at myaccount.google.com → Security → App Passwords

Inactive configs will be hidden from the generation workflow.

Daily Email Summary

Daily summary will be sent at this time.

Running Numbers (Sequences)

Type Year Art Template Number
{{ seq.admission_type }} {{ seq.admission_year }} {{ seq.art_form }}
No sequences generated yet.

Test Tool

{{ testFormatResult }}

Audit Logs

System activity, login history, and error events

Loading…
No logs found.
Timestamp (SGT) Event Severity Status Actor IP Target Detail
{{ formatAuditDate(log.created_at) }} {{ log.event_type }} {{ log.severity }} {{ log.status }} {{ log.actor || '—' }} {{ log.ip_address || '—' }} {{ log.target || '—' }} {{ log.detail || '—' }}
Showing {{ auditLogs.length }} of {{ auditTotal }} entries
Page {{ auditPage }}

Error Alert Settings

Send email alerts when critical errors occur. Uses the Gmail configured in the selected Index Generator config.

Separate multiple with commas

Alert on:

Pulsar | Powered by OTM

{{ editingDbId ? 'Edit' : 'Add' }} Database Connection

{{ editingUserId ? 'Edit User' : 'Add User' }}

{{ editingGroupId ? 'Edit Group' : 'Create Group' }}

{{ editingConfigId ? 'Edit' : 'New' }} Endpoint Configuration

/api/ingest/

Rate Limiting

Security

Leave empty to allow all IPs (not recommended).

Data Destination

{{ editingImportId ? 'Edit' : 'New' }} Import Task

Elite Mode & Audit Settings

* Used only when Source Type is Google Drive.

Audit Sync Optimization (Diff Only)

Source File Settings

Sync Conditions

Specify a column name (e.g. `last_synced`) to automatically update with the current time.

Comma-separated list of columns to sync back to DB.

Optional: Map Excel headers to specific database columns.

Which role is authorized to revert changes for this task. Admin can always revert.

Scheduling

Example: 0 * * * * (Every hour)

Sync History Explorer

View and revert changes from previous sync sessions.

Sync Sessions
{{ formatDate(log.occurred_at) }}
{{ log.status }}
{{ log.rows_updated }} rows updated
No sync history yet.
Row Level Changes Session #{{ selectedSessionId }}
Select a session on the left to see details
Match ID: {{ entry.row_match_id }}
Reverted ({{ entry.reverted_by }})
{{ entry.log_text }}
Remark: {{ entry.revert_remarks }}
No row-level details captured for this session

Confirm Revert Action

You are about to restore the row(s) to their original values. This action cannot be easily undone.

Data Details

{{ currentPayloadString }}
Sync Error: {{ currentSyncError }}

History: {{ selectedExportForLogs?.name }}

Time Status Result
{{ formatDate(log.occurred_at) }} {{ log.status }} {{ log.status === 'SUCCESS' ? log.file_saved_at : ('ERROR: ' + log.error_message) }}
No execution history found.

Index Number Generation Preview

Review the index numbers below before confirming generation.

Loading preview...

{{ indexGenPreviewData.total_new || 0 }}

New to Generate

{{ indexGenPreviewData.total_already_generated || 0 }}

Already Generated

{{ indexGenPreviewData.total_errors || 0 }}

Errors

Applicant Email Art Form Index Number Status
{{ item.applicant_name || item.applicant_id || '-' }} {{ item.applicant_email || '-' }} {{ item.art_form_raw || item.art_form || '-' }} {{ item.index_number || '-' }} {{ item.error }} Ready
No new applicants to generate index numbers for.

Generated Index History

Latest Numbers by Art Form

{{ item.admission_type }} / {{ item.art_form }}

{{ item.index_number }}

Index # Attempt Applicant Art Form Email Email Status DB Sync Created Action
{{ idx.index_number }} #{{ idx.attempt_count || 1 }} {{ idx.applicant_name || idx.applicant_identifier }} {{ idx.art_form }} {{ idx.applicant_email || '-' }} {{ idx.email_status }} {{ idx.db_sync_status }} {{ formatDate(idx.created_at) }}
No generated indices found.

Change Your Password

{{ changePasswordError }}
{{ changePasswordSuccess }}

Forgot Password

Enter your username and registered email to receive a temporary password.

{{ forgotError }}
{{ forgotSuccess }}