Skip to main content

Generated page. Written from IdaMilk/Portal at commit 091267c on 2026-07-28, version 1.2.2. The README is the unmodified Vue/Vite scaffold template, so everything below is inferred from source.

Portal

What is it?

A Vue 3 single-page application serving portal.idamilk.com. It presents operational reports — production efficiency, lab results, milk shrink, diversion, SCC compliance — and a lightweight sales lead tracker, to an audience outside the plant floor.

Where SunApps is the operational tool people use to do work, Portal is where people look at what happened.

Purpose

Reporting data lives across NetSuite, the MES and SQL Server, none of which are places a manager or a customer-facing employee should be asked to go. Portal presents that data as fixed, shareable reports with week-based filtering and Excel export.

How it Works

Vue 3 with <script setup>, Vue Router with lazy-loaded report views, and Pinia. Every report view is code-split, so the initial load stays small even though there are a dozen reports.

The interesting structure is in the composables. useReportData centralises fetching and loading/error state; useWeekPicker handles the week-based period selection every report shares; useSortable and SortableTh.vue give every table consistent column sorting; useExcelExport turns the current view into a spreadsheet via SheetJS. A new report is mostly a matter of composing those four.

All data comes through Portal API — the front-end never talks to an internal service directly, and never sees internal URLs or field names.

Routing enforces authentication: unauthenticated navigation redirects to home carrying a redirect query, and several guards bounce invalid report keys back to the reports index.

Core Features

AreaScreens
Reports indexReport picker
ProductionMachine efficiency, finished product rework
QualityLab results, SCC compliance
Raw milkShrink — organic, A2 and conventional variants
Milk logisticsMilk trucks, milk diversion
LinksLink sheets index and per-sheet view
LeadsLead list and lead detail, with note capture
AccountLogin, set password, forgot password, reset password

Three separate raw-milk shrink reports — organic, A2, conventional — reflect that the three streams are tracked and reconciled independently.

Tech Stack

TechnologyVersionPurpose
Vue3.5.34Framework
Vue Router5.1.0Routing with lazy-loaded views
Pinia3.0.4State management
Bulma1.0.4CSS framework
Font Awesome7.2.0Icons
SheetJS (xlsx)0.18.5Excel export
Vite(dev)Build tool

Branding assets in public/logos/ are the Ida Milk seal and wordmark — the same marks used by the marketing site and this wiki.

Interfaces

SystemDirectionPurpose
Portal APIoutboundAll data, via src/api/client.js

src/services/ splits that into leadsService, linkService and the general api client.

Operations

Three GitHub Actions workflows: production_deploy.yml, auto_tag.yml and first_build.yml — an auto-tagging release flow rather than the manual release-publish trigger the SunApps services use.

The repository carries a .claude/skills/verify/SKILL.md, so verification steps for this project are defined for Claude Code as a repo-local skill.

Repository

RepositoryIdaMilk/Portal
Version1.2.2
Primary languageVue / JavaScript
Files68
Last activity2026-07-24
StatusActive

The README is still the stock Vue + Vite template. It describes neither what Portal is nor how to run it against the API. CHANGELOG.md is maintained, so release history is available even though the README is not.