Annual Report System
System Overview
The Cores Annual Report system is a stand-alone system for storing and managing the content necessary for the generation of the annual report in it's various forms. Access to the system is controlled by the University DUO 2FA system with a fallback to a magic link email based login system.
Tech Stack
The system uses the following technologies:
- NodeJS - Core Javascript Engine
- ExpressJS - HTTP Server Framework
- PugJS - HTML Templating Engine
- TailwindCSS - CSS Framework, Included as part of DaisyUI
- DaisyUI - CSS UI Component Preset Framework
- ViteJS - Application Template and Development Support Framework
AI Usage
This system has AI written and reviewed code. AI usage during development of this system consisted of use of the following models for code review purposes:
- unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q4_K_M
- unsloth/Qwen3.6-27B-GGUF:Q8_0
All models were run locally on the developer M2 MacBook using llama.cpp and OpenCode. No cloud hosted models were used. Any code generated directly by OpenCode in build agent mode was fully reviewed prior to commit. The RecordManager component was developed using OpenCode as the developing agent. The initial prompt for the component is located in the opencode_prompts folder.
Facility Manager Section Management Guide
Overview
As part of the Annual Report process facility managers are required to review and update the content associated with their facility every year. To assist in this process managers will receive an email annually from the Cores Admin office that contains a reminder of this requirement and a link to access their content for the current fiscal year. This link will be valid for 2 weeks from the date of the email and allows them to edit specific content blocks for their sections of the annual report. If they are unable to complete the editing process within that time period a new link with an updated expiration date can be requested from the Cores Administration office.
General Structure
Facilities should generally follow the structure outlined below when designing their content sections:
Sections
- Overview - This section should include a 1-5 paragraph overview of the facility.
- Services - This section should include a list of available services and instrumentation for the facility
- Advisory Board / Committee - Where applicable all facilities that have an Advisory Board (Required for Core Facilities) should list the members of the board and the last date an advisory meeting occurred
- Previous Fiscal Year Update - This section should include a 1-5 paragraph explanation of major events from the previous fiscal year. This should include an explanation of how met goals were accomplished and evaluation of why unmet goals were missed.
- Upcoming Fiscal Year Goals - This section should identify a list of 2 or more goals for the the upcoming fiscal year. These goals should include justifications and proposed plans for meeting said goals.
- Revenue/Expenses
The components of this section are not editable and will be provided by the Cores Admin office. This section contains graphs and information derived from data in the Resource and BOS systems. Data displayed here is for the report Fiscal Year. If you have issues with the charts / data please contact the Cores Administration office to resolve the problem.
- Publications List - Facilities that directly support researchers should list new publications that were published in the last fiscal year that reference the facility.
Some sections will not be editable. These sections are normally added by the Cores Admin office to display critical data such as revenue graphs. Un-editable sections will have a red background on their section identifier icon and if you click on the icon a red lock will appear in place of the usual controls.
Notification Email
In the notification email you will find a link to the section editor interface. The URL for this link will take the following format:https://annual-report.cores.utah.edu/section_edit?token=<long-jwt-text>
This link is good for 2 weeks after it was emailed to you.
This link is UNIQUE to your section of the report for the current fiscal year. Do not share this link with anyone you don't want to have access to edit your section.
Editing Interface
The main editing interface consists of the header section followed by a list of content blocks.
Header
The header will display the Fiscal Year you are editing and 4 controls.
To facilitate ease of editing the header section is "sticky" and will follow you down the page as your scroll/edit.
Content Block
Content blocks contain the report content and come in a number of types depending on what type of content you want to display
-
Header Blocks
-
Paragraph Blocks - Used for editing plain text. No styling supported
-
Markdown Blocks - Used for editing markdown text. Limited styling supported
-
Page Break - Used to control render flow and page spacing. Primary used to push a graph onto the next page when it doesn't fit properly.
-
Lists - Used to display lists with a red dot. The list element allows you to upload a newline delimited file to replace the existing content in the list.
-
Tables - Used to display tables.
The remaining 4 Icons represent the various graphs and are generally not editable. All data for the graphs comes from system data imported from the resource system.
Note regarding Paragraph and Markdown blocks:
Paragraph blocks only display text. No formatting is possible on these blocks.
Markdown blocks support the following element types:
- Headings
- Paragraphs and line breaks according to CommonMark specification
- Bold and italic text
- List (unordered and ordered)
- Links
- Horizontal Rules
- Code Blocks
- Inline Code
- Blockquotes (basic support)
Note that markdown lists will use black dot's instead of the preferred red for lists in the annual report.
For more information about markdown support see the following sites:
https://github.com/fellmann/pdfkit-markdown
https://www.markdownguide.org/cheat-sheet/
Content Block Controls
The content block controls can be accessed by clicking on the block type icon. From this menu you can (in display order)
- Remove this block
- View the lock status of the block
- Move this block up one space
- Move this block one space down
- Open the block add sub-menu
The block add sub-menu allows you to add new blocks to the configuration. From this menu you can (in display order)
- Close the block add menu
- Change the insert position to above or below the current block (defaults to inserting below)
- Add a header block
- Add a paragraph block
- Add a markdown block
- Add a page break
- Add a list
- Add a table
- Add a YoY Revenue Graph
- Add a Revenue by Source Graph
- Add a Revenue by Department Graph
- Add a Top Users by Revenue table