Functional Product Specification¶
Progress Credit Union Website¶
Version: 1.0 Date: 2026-02-28 Authors: Double Shore Development Team Audience: All teams — Technical, Management, Commercial, Client Stakeholders
Disclaimer
This specification is based on the Progress Credit Union (progress.ie) core database migration. Content, users, and permissions vary from site to site. This document should be used as a reference guide, not a single source of truth.
Purpose
This document describes what the Progress Credit Union website does from a functional perspective. It catalogs every page type, every component editors can use, how the grid system works, what user groups exist, and what permissions they have. Use it to verify that every v8 feature exists in v17, to train content editors, and to plan future enhancements.
1. Product Overview¶
The Progress Credit Union website is a public-facing financial services website built on Umbraco CMS. It serves members and prospective members with:
- Information pages — loans, savings, membership, services, about, contact
- Financial calculators — loan repayment, savings projections, budget planning
- News & events — articles, announcements, press releases
- Member services — online banking links, FAQ, help center
- Marketing — hero banners, testimonials, galleries, social feeds
- Compliance — privacy policy, cookie consent, terms & conditions, data protection
Content editors manage the site through the Umbraco backoffice using a block-based page builder (BlockGrid) that provides drag-and-drop composition of 120+ reusable components.
2. Page Types & Templates¶
The website uses 46 page templates organized into functional groups. Each template defines the structure and available content areas for a specific type of page.
2.1 Main Content Pages¶
| Template | Purpose | Grid Type | Notes |
|---|---|---|---|
homeGrid |
Homepage | Homepage Grid (1151) | Hero slider, feature sections, news, testimonials |
homeFullWidthSection |
Homepage variant | Full Width Grid | Full-width breakout sections |
standardPage |
General content | Standard Page Grid (1257) | Most versatile — 20 layout options |
standardPageNew |
Updated standard | Std Page Full Width (1803) | 11 layouts, career and cookie variants |
standardPageWithImageText |
Content with header image | Standard Page Grid | Image + text header above grid |
standardPageWow |
Animated content | Animated Grid (1534) | WOW.js scroll animations |
article |
News/blog post | Article Grid (1683) | Date, author, categories, share buttons |
articleType2 |
Alternative article | Article Grid | Different header layout |
gallery |
Photo gallery | Standard Page Grid | Image gallery with lightbox |
galleryList |
Gallery index | Standard Page Grid | Grid of gallery thumbnails |
2.2 Special Purpose Pages¶
| Template | Purpose | Notes |
|---|---|---|
contactus |
Contact form + map | Contact Us Grid (1093), Google Maps integration |
cookies |
Cookie policy | Cookie Grid (1709), Cookiebot integration |
privacyPolicy |
Privacy policy | Standard content with GDPR compliance sections |
termsAndConditions |
Terms & conditions | Standard content page |
TermsAndConditionsMobile |
Mobile T&C | Simplified layout for mobile app webview |
help |
Help center | Standard content with FAQ-style sections |
Faq |
FAQ page | FAQ accordion with categories |
FaqWithSchema |
FAQ with SEO | FAQ accordion with schema.org JSON-LD markup |
testimonials |
Testimonials | Testimonial carousel and cards |
TestimonialsBlock |
Testimonials variant | Block-based testimonial layout |
error |
Error pages | 404, 500, custom error messages |
search |
Search results | Full-text search with highlighting |
sitemap |
XML sitemap | Auto-generated sitemap for search engines |
robots |
Robots.txt | Search engine crawl directives |
2.3 Authentication Pages¶
| Template | Purpose | Notes |
|---|---|---|
Login1 |
Member login | Redirects to online banking |
MasterLogin |
Login master layout | Stripped-down layout for auth pages |
CustomerOnlyPage1 |
Members-only content | Content visible only after login |
TokenAuthentication |
Token-based auth | API token authentication page |
2.4 Framework Templates¶
| Template | Purpose | Notes |
|---|---|---|
master |
Site-wide wrapper | Header, footer, navigation, scripts, SEO meta |
masterNoHeaderNoFooter |
Minimal wrapper | For embedded/iframe content |
StandardPageThirdParty |
Third-party embed | External content integration |
SPALoader |
SPA application loader | Loads single-page applications (e.g., loan enquiry form) |
popUpForms |
Popup form launcher | Modal forms triggered by user action |
2.5 Configuration Pages (Not Public)¶
These pages are only visible in the backoffice and store site-wide configuration:
| Page | Purpose | Location in Content Tree |
|---|---|---|
| Website Configuration | Global settings, logos, contact info | Root level |
| SEO Configuration | Default meta tags, OG images | Under Home |
| Menu Configuration | Navigation structure, mega menu items | Under Home |
| Footer Configuration | Footer links, social media, legal links | Under Home |
| Homepage Slider Configuration | Hero slider images and CTAs | Under Home |
| Calculators Configuration | Calculator parameters, rates, terms | Under Home |
| Loan Boxes Configuration | Loan product cards and rates | Under Home |
| Google Map Configuration | Map markers, API settings | Under Home |
| Google Tag Manager Configuration | GTM container ID, scripts | Under Home |
| Cookie Configuration | Cookiebot settings, consent text | Under Home |
| Site Style Configuration | Colors, fonts, brand variables | Under Home |
| Privacy Policy Configuration | Data controller details, DPO info | Under Home |
| 2FA Settings | Two-factor authentication config | Root level |
3. BlockGrid System — Page Builder¶
The BlockGrid is the core page-building system. It replaces the v8 Grid Layout with a structured 4-level hierarchy that gives editors precise control over page composition.
3.1 How It Works¶
Editors build pages by:
- Adding a Row — choose a row configuration (e.g., "1-column", "2-column", "sidebar")
- Selecting a Layout — choose how the row is divided into columns (e.g., 50/50, 33/33/33, 75/25)
- Dropping Components — drag components into each column area
- Configuring — set properties on each component (text, images, colors, links)
3.2 The 4-Level Hierarchy¶
Row Config → Controls which layouts are available in this row
└─ Layout → Defines column structure (e.g., 6|6 = two equal columns)
└─ Area Wrapper → Carries cell-level styles (background, padding, animation)
└─ Content → The actual component (hero, card, calculator, etc.)
Each level has its own settings:
| Level | Settings Available | Example |
|---|---|---|
| Row Config | Row background, container class, section breakpoint | Full-width hero row with no container |
| Layout | Column breakpoint, merge area classes | 2-column layout that stacks on mobile |
| Area Wrapper | Cell background, padding, animation, visibility | Left column with blue background |
| Content | Component-specific properties | Hero with image, title, and CTA button |
3.3 Available Grid Types¶
The system has 14 BlockGrid datatypes, each configured for a specific page type with appropriate layouts and components.
| Grid Type | Used By | Layouts | Components | Purpose |
|---|---|---|---|---|
| Standard Page Grid | standardPage, gallery | 20 | 108 | Most versatile — all general content |
| Std Page Full Width | standardPageNew | 11 | 41 | Modern pages with full-width sections |
| Homepage Grid | homeGrid | 5 | 61 | Homepage-specific components |
| Animated Grid | standardPageWow | 6 | 50 | Pages with scroll animations |
| Footer Grid | footer | 7 | 31 | Footer section layout |
| Article Grid | article, articleType2 | 4 | 35 | News and blog articles |
| Date Time Picker Grid | various | 6 | 34 | Pages with date/time selection |
| Contact Us Grid | contactus | 5 | 14 | Contact page with map |
| Cookie Grid | cookies | 5 | 8 | Cookie consent page |
| Services Grid | services | 4 | 16 | Service listing pages |
| Nav Left Grid | SP with nav left | 4 | 12 | Pages with left sidebar navigation |
| Full Width Grid | full-width pages | 4 | 8 | Simple full-width content |
| Full Width Bottom | bottom sections | 4 | 1 | Bottom-of-page full-width area |
| Test Grid | testing only | 4 | 0 | Development testing (no content blocks) |
3.4 Layout Patterns (Column Combinations)¶
Editors can choose from 27 unique layout patterns across all grid types. Here are the most commonly used:
| Layout | Columns | Bootstrap Grid | Common Use |
|---|---|---|---|
| Full Width | 1 | col-12 |
Hero banners, full-width content |
| Half & Half | 2 | col-6 + col-6 |
Text + image, comparison |
| Thirds | 3 | col-4 + col-4 + col-4 |
Card grids, feature highlights |
| Quarters | 4 | col-3 + col-3 + col-3 + col-3 |
Icon grids, stats |
| Sidebar Left | 2 | col-4 + col-8 |
Navigation sidebar + content |
| Sidebar Right | 2 | col-8 + col-4 |
Content + sidebar widgets |
| Text + Button | 2 | col-8 + col-4 |
Content with CTA |
| Two-Thirds + Third | 2 | col-8 + col-4 |
Main content + sidebar |
| Five + Seven | 2 | col-5 + col-7 |
Asymmetric content |
| Seven + Five | 2 | col-7 + col-5 |
Asymmetric content (reversed) |
| Nine + Three | 2 | col-9 + col-3 |
Wide content + narrow sidebar |
| Icon Calc | 3 | col-6 + col-4 + col-2 |
Calculator icon layout |
| Membership Benefits | 3 | col-6 + col-6 + col-12 |
Mixed column layout |
| Sixths | 6 | col-2 x6 |
Footer links, icon rows |
| Loan Process | 5 | col-12 + col-3 x4 |
Step-by-step process |
Responsive behavior: All layouts use Bootstrap 5 breakpoints. The column breakpoint varies per grid type:
| Grid Type | Breakpoint | Stacks Below |
|---|---|---|
| Homepage, Standard Page New, FAQ | xl (1200px) |
Desktop |
| Standard Page, Error, Testimonials | md (768px) |
Tablet |
| Footer, Bottom Grid | lg (992px) |
Small desktop |
3.5 Standard Page Grid — Full Layout Reference¶
The Standard Page Grid (datatype 1257) is the most versatile with 20 layouts and 108 content components. This is the grid editors use most often.
Available Layouts:
| # | Layout Name | Columns | Column Widths |
|---|---|---|---|
| 1 | Full Width | 1 | 12 |
| 2 | 1 Column Layout | 1 | 12 |
| 3 | Half | 2 | 6 + 6 |
| 4 | Thirds | 3 | 4 + 4 + 4 |
| 5 | Fours | 4 | 3 + 3 + 3 + 3 |
| 6 | Sidebar | 1 | 12 (with sidebar styling) |
| 7 | Left Nav | 2 | 4 + 8 |
| 8 | Left Sidebar | 2 | 4 + 8 |
| 9 | Right Sidebar | 2 | 8 + 4 |
| 10 | Text + Button Block | 2 | 8 + 4 |
| 11 | Five + Seven | 2 | 5 + 7 |
| 12 | Car Draw Text | 2 | 7 + 5 |
| 13 | Two-Four-Two-Four | 4 | 2 + 3 + 2 + 3 + 2 |
| 14 | Icon Calc | 3 | 6 + 4 + 2 |
| 15 | Services | 1 | 12 |
| 16 | FAQ Home | 1 | 12 |
| 17 | Full & Thirds Thirds | 7 | 12 + 4 + 4 + 4 + 4 + 4 + 4 |
| 18 | Loan Application Process | 5 | 12 + 3 + 3 + 3 + 3 |
| 19 | Membership Benefits | 3 | 6 + 6 + 12 |
| 20 | Animated Layout | varies | WOW animation variants |
4. Component Catalog — What Editors Can Use¶
The website provides 120 BlockGrid components and 7 BlockList components organized into 25 functional categories. Each component is a self-contained, reusable content block that editors drag into grid areas.
4.1 Hero & Banner Components (6)¶
| Component | Description | Key Properties |
|---|---|---|
| Hero Element | Full-width hero section | Heading, subheading, paragraph, background image, CTA buttons |
| Hero Item | Hero variant | Similar to Hero Element with different layout |
| Header | Page header block | Title, paragraph, background image |
| Header Element | Header variant | Alternative header styling |
| Anchor | Jump-link bookmark | Anchor ID for in-page navigation |
| CTA Curves | Curved CTA section | Decorative curved borders, background color |
4.2 Text & Content Components (10)¶
| Component | Description | Key Properties |
|---|---|---|
| Rich Text Editor | WYSIWYG content block | Full TipTap editor (bold, italic, links, tables, images) |
| Grid RTE | Grid-migrated RTE | Rich text from v8 grid cells |
| Embed Element | oEmbed / iframe content | URL for YouTube, Vimeo, social embeds |
| CTA Text | Text with call-to-action | Content text with highlighted CTA |
| Heading Element | Standalone heading | H1-H6, custom styling |
| Heading Item | Heading variant | Alternative heading styles |
| Quote | Blockquote | Quote text, attribution |
| Text Slide | Text carousel item | Text content for slider rotation |
| Media Element | Image with alt text | Image picker, alt text, caption |
| Grid Media | Grid-migrated media | Image from v8 grid cells |
4.3 Call to Action Components (6)¶
| Component | Description | Key Properties |
|---|---|---|
| CTA Element | Call-to-action block | Background color, text, link, icon |
| CTA Item | Individual CTA | Button text, URL, style variant |
| BlockList CTA | CTA in block list | Nested CTA within other components |
| Loan Input CTA | Loan calculator CTA | Loan amount input + apply button |
| Button Widget | Standalone button | Label, URL, style, size |
| Button Modal | Button that opens modal | Modal content, trigger button |
4.4 Media & Video Components (12)¶
| Component | Description | Key Properties |
|---|---|---|
| Fancy Video | Video with poster overlay | Video URL, poster image, play button style |
| Video Full Width | Full-width video player | Video source, autoplay, background color |
| Video Popout | Lightbox video | Thumbnail, popup video player |
| YouTube Controls | YouTube embed | YouTube URL, oEmbed integration |
| YouTube Slide | YouTube in carousel | YouTube video as carousel item |
| YouTube Slide Grid | YouTube grid | Grid of YouTube videos |
| Vimeo Slide | Vimeo in carousel | Vimeo video as carousel item |
| Grid Vimeo Slide | Vimeo grid variant | Grid layout for Vimeo |
| Internal Video Slide | Self-hosted video | MP4/WebM video file, carousel item |
| Grid Internal Video | Self-hosted grid variant | Grid layout for internal videos |
| Audio Tag Element | HTML5 audio player | Audio file, controls |
| Parallax Image | Parallax scroll image | Image, scroll speed, overlay |
4.5 Card Components (8)¶
| Component | Description | Key Properties |
|---|---|---|
| Card Grid Controls | Grid of cards | BlockList of card items, columns |
| Card Item | Individual card | Image/icon, title, text, link |
| Flip Card Controls | Flip cards | Front content, back content, flip animation |
| Testimonial Card | Testimonial card | Avatar, name, quote, rating |
| Picture Slide Grid | Picture cards | Image grid with opacity controls |
| Spotlight Control | Featured item | Highlighted content card |
| Spotlight Controls | Multiple spotlights | Row of featured cards |
| Spotlight Grid | Spotlight grid | Grid layout of featured items |
4.6 List Components (10)¶
| Component | Description | Key Properties |
|---|---|---|
| Numbered List | Ordered list | Numbered items with descriptions |
| Striped List | Alternating rows | Zebra-striped list items |
| Styled List | Custom styled list | Custom bullet icons, colors |
| Link List | List of links | URL list with icons |
| Link List Element | Individual link item | Single link with description |
| Image List | Image gallery list | Images with captions |
| Image with Link | Clickable image | Image + hyperlink |
| Image Gallery | Photo gallery | Grid of images with lightbox |
| Icon List / Contact Info | Icon + text list | Contact details, service features |
| FAQ Items | FAQ list items | Question/answer pairs for accordion |
4.7 Accordion & Expandable Components (7)¶
| Component | Description | Key Properties |
|---|---|---|
| Accordion Controls | Accordion container | BlockList of accordion items |
| Accordion Button Element | Accordion item (button) | Title, collapsible content |
| Accordion Button Main | Accordion main content | Expanded content area |
| FAQ Controls | FAQ accordion | FAQ items with flip card effect |
| FAQ Element | FAQ item | Question, answer |
| FAQ with Schema | SEO FAQ list | Schema.org FAQ markup for Google |
| Feature Controls | Feature accordion | Show/hide feature descriptions |
4.8 Slider & Carousel Components (7)¶
| Component | Description | Key Properties |
|---|---|---|
| Grid Slider | Multi-slide carousel | Slick.js carousel, slide count, autoplay |
| Split Picture Slider | Split-screen slider | Two-panel image slider |
| Address Slider | Address carousel | Branch locations in carousel |
| News Slider | News carousel | Latest articles carousel |
| Testimonial Slider | Testimonial carousel | Testimonial cards in carousel |
| Announcement Controls | Announcement banner | Scrolling announcements |
| Announcement Scroll | Scrolling items | Auto-scrolling announcement text |
4.9 Chart & Data Components (6)¶
| Component | Description | Key Properties |
|---|---|---|
| Bar Chart | Bar/pie chart | Chart.js data, colors, labels |
| Bar Chart Item | Chart data point | Value, label, color |
| Donut Chart | Donut/ring chart | Segments, center text |
| Donut Chart Item | Donut segment | Value, color, label |
| Donut Chart List | Multiple donuts | Row of donut charts |
| Comparison Table | Data table | Rows, columns, highlights |
4.10 Form Components (3)¶
| Component | Description | Key Properties |
|---|---|---|
| Umbraco Form Element | Umbraco Forms embed | Form GUID, theme |
| Contact Us Widget | Contact form | Name, email, message fields |
| Cookies Element | Cookie consent | Consent categories, accept/reject |
4.11 Navigation Components (4)¶
| Component | Description | Key Properties |
|---|---|---|
| Sticky Nav | Sticky navigation bar | Page section links, scroll behavior |
| Quick Link Dropdown | Dropdown menu | Link categories, dropdown trigger |
| Submenu | Sub-navigation | Child page links |
| Coordinate | Location pin | Coordinate for map navigation |
4.12 Finance & Calculator Components (5)¶
| Component | Description | Key Properties |
|---|---|---|
| Main Calculator Controls | Calculator container | BlockList of calculator tabs |
| Calculator Controls | Calculator element | Calculator type, parameters |
| Calculators Grid Editor | Calculator grid | Grid layout for calculator widgets |
| Loan Input CTA | Loan calculator input | Amount slider, term, rate |
| Main Loan Box Widget | Loan product cards | Loan types with rates and CTAs |
4.13 Social & Integration Components (7)¶
| Component | Description | Key Properties |
|---|---|---|
| Facebook Controls | Facebook feed | Page URL, feed type |
| Instagram Controls | Instagram feed | Username, grid layout |
| Twitter Controls | Twitter/X timeline | Handle, tweet count |
| YouTube Controls | YouTube channel | Channel URL, video count |
| Trustpilot Widget | Trustpilot reviews | Widget ID, theme |
| Release Notes Widget | Release notes | Version, changelog |
| Sticky Social | Floating social buttons | Fixed-position social share icons |
4.14 Map Components (4)¶
| Component | Description | Key Properties |
|---|---|---|
| Google Map | Google Maps embed | Markers, zoom, API key |
| Large Google Map | Full-width Google Map | Site-wide map from settings |
| Large Leaflet Map | Leaflet.js map | Open-source map alternative |
| Career Locations | Career location map | Job locations with pins |
4.15 Footer Components (3)¶
| Component | Description | Key Properties |
|---|---|---|
| Footer Links | Footer link group | Title, list of links |
| Footer List | Footer list | Display styles (inline, stacked) |
| Social Footer | Footer social icons | Social media icon links |
4.16 Authentication Components (6)¶
| Component | Description | Key Properties |
|---|---|---|
| Login Element | Login form | Username, password fields |
| Login Widget | Login wrapper | Login form with branding |
| Login Status Element | Login state display | Logged in/out message |
| Login Status Widget | Login status wrapper | Status with action buttons |
| Register Element | Registration form | Member registration fields |
| Data Protection DPO | DPO information | Data Protection Officer details |
4.17 Staff & Career Components (3)¶
| Component | Description | Key Properties |
|---|---|---|
| Staff Members | Team member grid | Photos, names, titles, bios |
| Staff Member | Individual staff card | Photo, name, role, contact |
| Career Widget | Job listings | Open positions with details |
4.18 Data Protection Components (4)¶
| Component | Description | Key Properties |
|---|---|---|
| Data Protection Name | Organization name | Legal entity name display |
| Data Protection Statements | Privacy statements | Specific data processing statements |
| Data Protection Summary | Summary table | Data processing summary table |
| Data Protection We Are | Organization description | "We are" section for privacy |
4.19 News Components (7 partials)¶
These are specialized partials used by the news/article system:
| Partial | Description | Layout |
|---|---|---|
| Top Story | Featured article + 4 supporting | Large card + 4 small cards |
| Top Story 5 Articles | Featured + 5 supporting | Large card + 5 small cards |
| News List | Paginated article list | Vertical list with thumbnails |
| 4 Across News | News grid | 4 cards per row |
| News Slider | Basic news carousel | Carousel with card items |
| News Slider Detailed | Detailed news carousel | Cards with excerpts |
| News Slider Image | Image-focused carousel | Large images with overlay text |
4.20 Loan Box Display Modes (4 partials)¶
Loan product information can be displayed in four different modes:
| Display Mode | Description |
|---|---|
| Card Grid | Card layout with modals for detail |
| Accordion | Expandable accordion items |
| Flip Cards | Interactive flip card animation |
| Accordion + Contact | Accordion with contact information |
4.21 Address & Location Components (7)¶
| Component | Description |
|---|---|
| Global Address Widget | Main address display |
| Address List | Multiple addresses |
| Address No Labels | Compact address format |
| Opening Times | Business hours display |
| Footer Address | Footer address block |
| Address Slider | Address carousel |
| Two Column Address | Two-column address layout |
4.22 Utility Components (4)¶
| Component | Description |
|---|---|
| QR Code | QR code generator/display |
| Counter | Animated number counter |
| Services List | Service items with descriptions |
| Services List Image | Service items with images |
5. Content Tree Structure¶
The website's content tree organizes all pages into a logical hierarchy:
Root
├── Home (homeGrid) ─────────────────── Public homepage
│ ├── Membership ────────────────────── How to join, switch account
│ │ ├── How to Switch your Current Account
│ │ ├── How to Join
│ │ └── Open a Credit Union Account
│ ├── Loans ─────────────────────────── Loan products
│ │ ├── Motor Loan
│ │ ├── Holiday Loan
│ │ ├── Home Improvement Loan
│ │ ├── Education Loan
│ │ ├── Green Loan
│ │ ├── Bridging Loan
│ │ ├── Apply Now
│ │ └── (other loan types)
│ ├── Savings ───────────────────────── Savings products
│ ├── Services ──────────────────────── Service offerings
│ ├── About ─────────────────────────── About the credit union
│ ├── Contact ───────────────────────── Contact page with map
│ ├── News & Events ─────────────────── Article listing
│ │ └── News Categories (AGM, Company, Loans, Misc)
│ ├── FAQ ───────────────────────────── FAQ with categories
│ │ ├── Loans FAQ
│ │ ├── Savings FAQ
│ │ ├── Insurance FAQ
│ │ ├── Current Account FAQ
│ │ ├── Online Services FAQ
│ │ └── (more categories)
│ ├── Help ──────────────────────────── Help center
│ ├── Search ────────────────────────── Site search
│ ├── Calculators (config) ──────────── Calculator settings
│ ├── Loan Application Boxes (config) ─ Loan product cards config
│ ├── Menu Configuration ────────────── Navigation settings
│ ├── Footer Configuration ──────────── Footer settings
│ ├── Homepage Slider (config) ──────── Hero slider settings
│ ├── SEO Configuration ─────────────── SEO defaults
│ ├── Site Styles (config) ──────────── Brand settings
│ ├── Google Maps (config) ──────────── Map settings
│ ├── Google Tag Manager (config) ───── Analytics settings
│ ├── Cookie Configuration ──────────── Cookie consent settings
│ ├── Privacy Policy Configuration ──── Privacy settings
│ ├── Popup Forms ───────────────────── Modal form configuration
│ ├── Error ─────────────────────────── Error page
│ ├── SiteMap ───────────────────────── XML sitemap
│ ├── Robots ────────────────────────── Robots.txt
│ ├── Testimonial Categories ────────── Testimonial management
│ │ ├── Loans, General, Bursaries
│ │ ├── Budget, Membership
│ │ └── Current Account
│ ├── Privacy Policy ────────────────── Privacy policy page
│ ├── Terms and Conditions ──────────── T&C page
│ ├── Terms and Conditions Mobile ───── Mobile T&C
│ ├── Cookie Notice ─────────────────── Cookie notice page
│ ├── Register ──────────────────────── Registration page
│ ├── Lost Your PIN ─────────────────── PIN recovery
│ ├── Loan Enquiry (SPA) ────────────── Online loan form
│ └── Form Submitted ────────────────── Form confirmation
├── Website Configuration ─────────────── Global settings (root)
├── 2FA Settings ──────────────────────── Two-factor auth config (root)
└── (test pages) ──────────────────────── Development test pages
Total content nodes: 116 (including test pages)
6. User Groups & Permissions¶
6.1 User Group Overview¶
The system has 8 user groups with different access levels. The two primary groups for credit union staff are Credit Union Administrators and Credit Union Editors.
| Group | Purpose | Content Access | Media Access | Sections |
|---|---|---|---|---|
| Administrators | Full system control | All content | All media | All 8 sections |
| Credit Union Administrators | CU staff with full content access | All content | All media | Content, Forms, Media, Users |
| Credit Union Editors | CU staff with restricted access | Home and below only | All media | Content, Media |
| Editors | Extended editors | All content | All media | Content, Forms, Media, Settings, Translation |
| Writers | Content authors | All content | All media | Content only |
| Translators | Translation staff | All content | All media | Translation only |
| Sensitive Data | Data access flag | Permission-only group | Permission-only group | None (permissions only) |
| uSync Remote Browser | System integration | All content | All media | Content, Media |
6.2 Permission Details¶
Administrators (Full Access)¶
- All permissions: Create, Update, Delete, Move, Duplicate, Sort, Rollback, Public Access, Culture & Hostnames, Publish, Permissions, Unpublish, Read, Create Blueprint, Notifications, Property Value Read/Write
- All sections: Content, Forms, Media, Members, Packages, Settings, Translation, Users
- Start node: Root (all content)
Credit Union Administrators¶
- Permissions: Read, Create, Publish, Unpublish, Update, Duplicate, Move, Sort
- Cannot: Delete content, Rollback, Manage permissions, Manage public access
- Sections: Content, Forms, Media, Users
- Start node: Root (all content, including Website Configuration)
Credit Union Editors¶
- Permissions: Read, Publish, Unpublish, Update
- Cannot: Create new pages, Delete, Move, Duplicate, Sort
- Sections: Content, Media
- Start node: Home (node 2122) — cannot see Website Configuration, 2FA Settings
Key Restriction
Credit Union Editors can only see content under the Home node. They cannot access Website Configuration, 2FA Settings, or root-level test pages. This prevents accidental changes to site infrastructure.
6.3 Current Users¶
| User | Role | Groups |
|---|---|---|
| Kevin Owens | Staff | Admin, Editor, Sensitive Data, Writer |
| Austin O'Halloran | Staff | Admin, Editor, Sensitive Data, Writer |
| Antonio Bianco | Staff | Admin, Editor, Sensitive Data, Writer |
| Kevin Kelly | Staff | Admin, Editor, Sensitive Data, Writer |
| Ronilto Vargas | Staff | Admin, Editor, Sensitive Data, Writer |
| Luis Bras | Staff | Admin, Editor, Sensitive Data, Writer |
| Jordan Gray | Staff | Admin, Editor, Sensitive Data, Writer |
| Tom O'Connor | Staff | Admin, Editor, Sensitive Data, Writer |
| Ciara Ni Bhrolchain | Staff | Admin, Editor, Sensitive Data, Writer |
| Mark Sunderland | Staff | Admin, Editor, Sensitive Data, Writer |
| Radek Zielinski | Staff | Admin, Editor, Sensitive Data, Writer |
| CU Admin Test | Test account | CU Admin, CU Editor, Sensitive Data |
| CU Editor Test | Test account | CU Editor only |
| Joao Moita | Developer | Admin, Editor, Sensitive Data, Writer |
| Marco Teodoro | Developer | Admin |
| admin@progresssystems.ie | System | Admin, Sensitive Data |
Total users: 22 (16 real + 4 test accounts + 1 MCP API user + 1 2FA test)
6.4 Two-Factor Authentication (2FA)¶
- Enabled for all non-administrator user groups
- Admin users are exempt from 2FA requirement
- Configuration stored in the 2FA Settings root node
- Implementation: ASP.NET Core Identity with INotificationHandler pattern
6.5 User Group Protection¶
Two notification handlers protect critical user groups from accidental modification:
- UserGroupSaveProtectionHandler — prevents non-admin users from modifying the
creditUnionAdministratorsgroup - UserGroupDeleteProtectionHandler — prevents deletion of
creditUnionAdministratorsandcreditUnionEditorsgroups
7. Site Layout & Navigation¶
7.1 Header Structure¶
The site header consists of multiple configurable sections:
| Section | Description | Configurable |
|---|---|---|
| Top Bar | Announcement bar, phone number, quick links | Yes (Menu Config) |
| Logo + Search | Brand logo and search bar | Yes (Website Config) |
| Main Navigation | Primary menu with mega-dropdown | Yes (Menu Config) |
| Menu 2 | Secondary navigation with login buttons | Yes (Menu Config) |
| Menu 3 | Tertiary navigation | Yes (Menu Config) |
| Menu 4 | Additional navigation variant | Yes (Menu Config) |
| Social Links | Header social media icons | Yes (Menu Config) |
7.2 Footer Structure¶
The footer uses a dedicated Footer Grid (datatype 1127) with 7 layouts:
| Layout | Columns | Use Case |
|---|---|---|
| Full Width | 1 | Copyright, legal notice |
| Thirds | 3 | Links, address, social |
| Nine + Three | 2 | Wide content + logo |
| Six + Five + One | 3 | Links + address + small |
| Five + Four + Three | 3 | Asymmetric footer |
| Sixths | 6 | Footer link columns |
The footer can contain 31 different component types including links, address blocks, social icons, and maps.
7.3 Navigation System¶
- Dynamic navigation built from content tree structure
- Mega-dropdown menus with multi-column layouts
- Login/logout buttons integrated into header
- Social links in both header and footer
- Sticky navigation option for long-scroll pages
- Breadcrumbs auto-generated from content hierarchy
8. Financial Features¶
8.1 Calculators¶
The calculator system provides interactive financial tools configured through the Calculators Configuration node:
| Calculator | Purpose | Input Fields |
|---|---|---|
| Loan Repayment | Monthly payment calculation | Amount, term, interest rate |
| Savings Projection | Savings growth over time | Initial amount, monthly deposit, term |
| Budget Planner | Income vs expenses | Income categories, expense categories |
| Mortgage Calculator | Mortgage payment estimate | Property value, deposit, term, rate |
Architecture:
- Calculator parameters (rates, terms, limits) stored in CMS content
- JavaScript frontend with jQuery for real-time calculation
CalculatorServiceprovides server-side data via APICalculatorCacheInvalidationComposerauto-clears cache when parameters change- Dictionary items for label localization (31 keys in v8, 25 confirmed in v17)
Dictionary Migration Complete
All 169 v8 dictionary items (including 28 calculator-specific keys) have been migrated 1:1 to v17 with identical keys, GUIDs, and translations. V17 views corrected to use original v8 key names (commit 2ac8a4f).
8.2 Loan Products¶
Loan products are managed through the Loan Boxes Configuration node and displayed using the Loan Box components:
- Card Grid — Visual cards with "Apply Now" buttons
- Accordion — Expandable details for each product
- Flip Cards — Interactive front/back cards
- Accordion + Contact — Product details with contact info
Each loan product includes: name, description, representative APR, minimum/maximum amount, term range, and CTA link.
8.3 Common Bond Area¶
The Common Bond system validates member eligibility based on postal/area codes:
- ~2,500 postcodes in v8 database
- Used by membership application and loan enquiry forms
Per-Client Data
The CommonBondRange table exists in both v8 and v17 but has 0 rows in v8 for this client. The table is auto-created by v17's CreateCommonBondTableMigration. Each client populates this with their geographic area postcodes. No migration needed — data population is a per-client setup task.
9. Integrations¶
| Integration | Purpose | Status |
|---|---|---|
| Google Maps | Branch locations, contact page | DONE — API key in appsettings.json |
| Leaflet.js | Alternative map provider | DONE |
| Mapbox | Map styling | DONE — token in appsettings.json |
| Google Tag Manager | Analytics, tracking | DONE — container ID in CMS |
| Cookiebot | Cookie consent management | DONE — configured in CMS |
| Trustpilot | Customer reviews widget | DONE — widget ID in CMS |
| Social feed embed | DONE | |
| Social feed embed | DONE | |
| Twitter/X | Social timeline embed | DONE |
| YouTube | Video embeds | DONE — oEmbed integration |
| Vimeo | Video embeds | DONE — oEmbed integration |
| Umbraco Forms | Form builder | DONE |
| Online Banking | Member login redirect | DONE — external link |
| SPA Loan Enquiry | Single-page loan form | DONE — SPALoader template |
10. URL Routing & Redirects¶
10.1 URL Rewrites¶
URL rewrites (server-side, browser URL unchanged) are managed via the ProgressUrlRewrites database table with a custom backoffice dashboard.
- Middleware:
DynamicUrlRewriteMiddlewareprocesses regex-based rewrite rules - Caching: Rules are cached in memory with a 5-minute TTL for performance
- Management: Custom backoffice dashboard at
/api/progress-url-rewrite/rulesfor CRUD operations - Testing: Built-in test endpoint to validate rules before enabling them
- Import: Legacy IIS rewrite rules from v8
web.configcan be bulk-imported via the/import-webconfigAPI endpoint
10.2 URL Redirects¶
URL redirects (301/302, browser URL changes) are managed via Skybrud.Umbraco.Redirects:
- Full backoffice UI for creating and managing 301/302 redirects
- Supports regex patterns and query string handling
- No developer intervention needed for day-to-day redirect management
10.3 SEO URL Rules¶
Trailing slash removal and lowercase URL enforcement are handled automatically by SeoRedirectMiddleware (built-in, not configurable):
- Trailing slashes removed via 301 redirect (e.g.,
/loans/→/loans) - Uppercase URLs lowercased via 301 redirect (e.g.,
/About-Us→/about-us)
10.4 Migration¶
Legacy IIS rewrite rules from v8 web.config are automatically extracted and imported during migration:
- Rewrites (type="Rewrite") → imported into the
ProgressUrlRewritestable - Redirects (type="Redirect") → managed via Skybrud.Umbraco.Redirects
- IIS capture group syntax (
{R:1}) is automatically translated to .NET regex syntax ($1)
11. Summary Statistics¶
| Metric | Count |
|---|---|
| Page templates | 46 |
| BlockGrid components | 120 |
| BlockList components | 7 |
| SiteLayout partials | 18 |
| Calculator partials | 7 |
| News partials | 7 |
| Loan box partials | 4 |
| Total views | 223 |
| BlockGrid datatypes | 14 |
| Unique layout patterns | 27 |
| Content element types | 455 |
| Non-element document types | 111 |
| Content nodes | 116 |
| User groups | 8 |
| Users | 22 |
| Third-party integrations | 14 |
| Client CSS files | 163 |
| JavaScript files | 60 |
12. Known Limitations & Remaining Items¶
| Feature | Impact | Status | Notes |
|---|---|---|---|
| jQuery UI slider | Calculator sliders render as standard number inputs | Visual change only | Calculator logic and functionality unchanged |
| Email notifications | Template structure available | Per-client setup | Configured during client onboarding with client's SMTP settings |
| Instagram feed | Feed not available | Removed | Meta deprecated the API in 2024 |
| Client-side form validation | HTML5 native validation | Changed approach | Server-side validation works. HTML5 validation replaces jQuery Validate. |
For detailed technical status, see Technical Specification.
Appendix A: Component Availability Per Grid Type¶
This matrix shows which component categories are available in each grid type:
| Category | Standard | Std Full Width | Home | Animated | Footer | Article | Contact | Cookie | Services |
|---|---|---|---|---|---|---|---|---|---|
| Hero/Banner | Yes | Yes | Yes | Yes | -- | Yes | -- | -- | -- |
| Text/Content | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| CTA | Yes | Yes | Yes | Yes | Yes | Yes | -- | -- | -- |
| Media/Video | Yes | Yes | Yes | Yes | -- | Yes | -- | -- | -- |
| Cards | Yes | Yes | Yes | Yes | -- | Yes | -- | -- | -- |
| Lists | Yes | Yes | Yes | Yes | Yes | Yes | -- | -- | Yes |
| Accordions | Yes | Yes | Yes | Yes | -- | Yes | -- | -- | -- |
| Sliders | Yes | Yes | Yes | Yes | -- | -- | -- | -- | -- |
| Charts | Yes | Yes | Yes | Yes | -- | -- | -- | -- | -- |
| Forms | Yes | Yes | Yes | -- | -- | -- | Yes | Yes | -- |
| Navigation | Yes | Yes | -- | -- | -- | -- | -- | -- | -- |
| Calculators | Yes | Yes | Yes | Yes | -- | -- | -- | -- | -- |
| Social | Yes | Yes | Yes | Yes | Yes | -- | -- | -- | -- |
| Maps | Yes | Yes | Yes | -- | Yes | -- | Yes | -- | -- |
| Footer | -- | -- | -- | -- | Yes | -- | -- | -- | -- |
| Auth/Login | Yes | Yes | -- | -- | -- | -- | -- | -- | -- |
| Staff | Yes | Yes | -- | -- | -- | -- | -- | -- | -- |
| Data Protection | Yes | -- | -- | -- | -- | -- | -- | -- | -- |
| Address | Yes | Yes | Yes | -- | Yes | -- | Yes | -- | -- |
Appendix B: Document Type Reference¶
Page Types (Allow Children)¶
| Document Type | Allowed Children | Purpose |
|---|---|---|
homeGrid |
Most page types | Homepage — site root |
standardPage |
None | General content page |
standardPageNew |
None | Modern content page |
standardPageWithImageTextHeader |
None | Content with image header |
article |
None | News article |
articleList |
newsCategoryItems |
News archive |
faqs |
faqQuestionItem |
FAQ container |
gallery |
None | Photo gallery |
galleryList |
gallery |
Gallery index |
help |
helpDetail |
Help center |
testimonialCategories |
testimonialCategoryItem |
Testimonial container |
newsCategories |
newsCategoryItems |
News category container |
careers |
job |
Job listings |
Configuration Types (No Public URL)¶
| Document Type | Properties | Purpose |
|---|---|---|
websiteConfiguration |
Logo, contact info, social URLs | Site-wide settings |
menuConfiguration |
Menu items, mega-menu structure | Navigation config |
footerConfiguration |
Footer grid content | Footer layout |
calculatorsConfiguration |
Rates, terms, limits | Calculator parameters |
loanBoxesConfiguration |
Loan products, APR rates | Loan product display |
sEOConfiguration |
Default meta, OG image | SEO defaults |
siteStyleConfiguration |
Brand colors, fonts | Visual theming |
googleMapConfiguration |
Map markers, zoom levels | Map settings |
googleTagManagerConfiguration |
GTM container ID | Analytics tracking |
cookieConfiguration |
Cookiebot ID, consent text | Cookie management |
homepageSliderConfiguration |
Slider images, CTAs | Homepage hero |
privacyPolicyConfiguration |
DPO details, statements | Privacy settings |
twoFASettings |
2FA enable/disable | Authentication |