SSB9 Tech Stack: Step 4 ‐ Frontend Service Layer - Arch-Node/personal_studies GitHub Wiki

Back to SSB9 Tech Stack Overview

4.1 Overview of the Frontend Service Layer

Ellucian Self-Service Banner 9 (SSB9) uses modern JavaScript frameworks to build a responsive and dynamic user interface. The frontend service layer ensures:

  • Seamless interaction between users and backend services.
  • Efficient API communication using JavaScript-based fetch or AJAX requests.
  • Dynamic UI rendering with minimal page reloads.
  • Consistent UI/UX through the Ellucian Design System (EDS).

4.2 Frontend Frameworks: Angular & React

SSB9 predominantly uses Angular, with some newer updates leveraging React.

  • Angular: Most commonly used, leveraging TypeScript, services, and component-based design.
  • React: Found in newer Ellucian updates, offering a lightweight alternative with reusable UI components.

These frameworks enable:

  • Component-based architecture (Modular UI elements).
  • State management for UI updates without full-page reloads.
  • Optimized performance through asynchronous data fetching.

4.3 API Calls from Frontend to Backend

The frontend communicates with the backend using REST API calls.

Example: Fetch API call to get student advising appointments

fetch('https://banner.university.edu/api/student/advising/appointments', {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${localStorage.getItem('jwt_token')}`,
        'Content-Type': 'application/json'
    }
})
.then(response => response.json())
.then(data => console.log(data));
  • The browser sends a request to the backend API.
  • The API returns JSON data, which the frontend dynamically processes.
  • Data is displayed on the UI without a full-page refresh.

4.4 UI Rendering & Component Lifecycle

Angular Example: Fetching and Displaying Appointments

export class AdvisingComponent implements OnInit {
    appointments: any[] = [];
    constructor(private http: HttpClient) {}
    ngOnInit() {
        this.http.get('/api/student/advising/appointments').subscribe(data => {
            this.appointments = data['appointments'];
        });
    }
}
  • Component Lifecycle Hooks ensure that data is fetched when the page loads.
  • Dynamic UI Updates occur when the appointments array is modified.

4.5 CSS & Theming with Ellucian Design System (EDS)

SSB9 follows the Ellucian Design System (EDS) to ensure a consistent UI across applications.

  • Universities can customize styles using CSS/SCSS.
  • Branding adjustments can be made by overriding EDS variables.

Example: SCSS Styling for Custom Header

.banner-header {
    background-color: #003366; /* University branding */
    color: white;
    padding: 10px;
}

4.6 Frontend Authentication Handling

The frontend ensures secure access by storing JWT tokens from the authentication step.

Token Storage Methods:

  • Local Storage: Persisting tokens across sessions.
  • Session Storage: Clearing tokens on session end.
  • HTTP-only Cookies: Enhanced security against XSS attacks.

Example: Including JWT in API Requests

const token = localStorage.getItem('jwt_token');
fetch('/api/user/dashboard', {
    headers: { 'Authorization': `Bearer ${token}` }
})
.then(response => response.json())
.then(data => console.log(data));

4.7 UI Event Handling & User Interactions

The frontend listens for user interactions and sends appropriate requests to the backend.

Example: Booking an Advising Appointment

bookAppointment(appointmentId) {
    fetch('/api/student/advising/book', {
        method: 'POST',
        headers: {
            'Authorization': `Bearer ${localStorage.getItem('jwt_token')}`,
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ id: appointmentId })
    })
    .then(response => response.json())
    .then(data => console.log('Appointment booked!', data));
}

4.8 Error Handling & Alerts

To enhance user experience, error messages are displayed when API calls fail.

Example: Handling API Errors in Angular

this.http.get('/api/student/advising').subscribe({
    next: (data) => this.appointments = data,
    error: (err) => console.error('Error loading appointments', err)
});
  • If the API fails, an error message is logged.
  • Users receive feedback through UI alerts.

4.9 Final HTML Rendering & Dynamic UI Updates

Once data is received, Angular or React dynamically updates the HTML.

Example: Angular Dynamic Rendering of Appointments

<div *ngFor="let appointment of appointments">
    <p><strong>Advisor:</strong> {{ appointment.advisor }}</p>
    <p><strong>Date:</strong> {{ appointment.date }}</p>
    <p><strong>Location:</strong> {{ appointment.location }}</p>
</div>
  • No page reloads: Data updates dynamically.
  • Improved performance compared to older versions of Banner.

Summary Flow Diagram

User → Browser (Angular/React) → API Call to Backend → JSON Response → Dynamic UI Update → HTML Display

Conclusion

The Ellucian SSB9 Frontend Service Layer leverages modern JavaScript frameworks like Angular and React to provide a responsive, efficient, and scalable user interface. By integrating REST API calls, component-based architecture, UI theming, authentication handling, and robust error management, SSB9 ensures a seamless and dynamic experience for users. The adoption of the Ellucian Design System (EDS) further enhances UI/UX consistency across applications. Future improvements may focus on performance optimizations and introducing additional React-based components to enhance maintainability and modularity.



⚠️ **GitHub.com Fallback** ⚠️