Skip to content

Add OpenFGC Portal Frontend#36

Merged
VimukthiRajapaksha merged 163 commits into
wso2:feature/portalfrom
rashmithachamikara:feature/portal
Jun 24, 2026
Merged

Add OpenFGC Portal Frontend#36
VimukthiRajapaksha merged 163 commits into
wso2:feature/portalfrom
rashmithachamikara:feature/portal

Conversation

@rashmithachamikara

@rashmithachamikara rashmithachamikara commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Purpose

Bootstrap and initialize the OpenFGC Portal frontend with the core UI infrastructure, project setup, and consent management pages.

Goals

  • Establish the portal frontend with React/TypeScript component structure
  • Set up linters, configurations, tests, and project structure
  • Add CI/CD scripts for the frontend project
  • Implement core UI pages for consent management
  • Integrate Oxygen UI components and responsive layouts

Approach

  • Built the portal frontend using React 19, TypeScript, Vite, and pnpm
  • Used Oxygen UI components and Oxygen Design System patterns
  • Implemented user-facing consent management pages and reusable UI components
  • Added frontend tooling, linting, formatting, and testing configurations
  • Organized project structure for scalability and maintainability

User stories

  • Portal users can access a modern web interface for consent management
  • Portal provides a responsive UI with Oxygen Design System components
  • Developers can extend frontend features with an established project structure

Documentation

  • README initiated for portal/frontend
  • AGENTS.md and Copilot instructions added for development guidance

Automation tests

  • Unit tests added for frontend components and utilities

Security checks

✓ Followed secure coding standards in WSO2 Secure Engineering Guidelines
✓ Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 46 out of 60 changed files in this pull request and generated 4 comments.

Comments suppressed due to low confidence (1)

portal/frontend/src/features/consent-registry/components/ConsentRevocationDialog.tsx:144

  • Button labels use translation keys that already have English strings (e.g., revocation.confirm/cancel), but the fallback defaults here ('Revoke All Data' / 'Keep Permissions') do not match the resource values ('Revoke Consents' / 'Cancel'). Align the fallback defaults with the i18n resources (or omit the defaults) to avoid confusion and inconsistent copy if the translation key is ever missing.

Comment thread portal/frontend/src/features/consent-registry/components/ConsentRegistryTable.tsx Outdated
Comment thread portal/frontend/src/features/consent-registry/ConsentDetailsPage.tsx Outdated
- Pending UI filter now sends only backend-supported CREATED.
- Rows-per-page options are centralized in portal/frontend/src/features/consent-registry/constants.ts and reused by both URL parsing and the table.
- Revocation dialog fallback strings now match the English i18n resources.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Comment thread portal/frontend/src/main.tsx Outdated
Comment thread portal/frontend/src/utils/apiClient.ts Outdated
Comment thread portal/frontend/src/utils/apiClient.ts
Comment thread portal/frontend/src/utils/dateTime.ts Outdated
Comment thread portal/frontend/src/features/consent-registry/ConsentDetailsPage.tsx Outdated
Comment thread portal/frontend/src/features/consent-registry/data/consents.ts Outdated
Comment thread portal/frontend/src/types/consent.ts Outdated
Comment thread portal/frontend/src/App.tsx Outdated
Comment thread portal/frontend/src/main.tsx Outdated
Comment thread portal/frontend/src/features/consent-registry/ConsentRegistryPage.tsx Outdated
Comment thread portal/frontend/tsconfig.app.json Outdated
Comment thread .github/workflows/portal-frontend-ci.yml
Comment thread portal/frontend/eslint.config.js Outdated
1. `main.tsx` non-null root assertion: true.
2. `apiRequest` returning `undefined as T` for 204: true.
3. `apiClient` absolute URL risk: false as written. This code concatenates first, so `http://...` becomes part of the path; base is not silently ignored. Guard is still reasonable.
4. `EPOCH_MILLISECONDS_CUTOFF` magic constant: true.
5. `ConsentDetailsPage` too large / should split: true.
6. Large commented lifecycle block: true.
7. Unused mock data under `src/features`: true.
8. `ConsentRecord.status` should use `ConsentAPIStatus`: mostly true, but ensure it includes normalized status values actually used by UI.
9. `key={location.search}` remounting page: true.
10. Inline row/action handlers allocation concern: technically true, but low-priority micro-optimization.
11. `import App from './App.tsx'` inconsistency: true.
12. Clear button accessibility: true, since text is just `Clear`.
13. Native `type="date"` accessibility/browser concerns: true, but recommendation depends on dependency decision.
14. Approval dialog focus: plausible/needs verification; not proven from code.
15. `50ms` skeleton debounce too aggressive: true.
16. Test globals in `tsconfig.app.json`: true.
17. CI localhost env comment: true, but only documentation hygiene.
18. ESLint config ignoring itself needs comment / FlatCompat note: true, but documentation hygiene.
19. Migrate deprecated props to reccomended alternatives
@VimukthiRajapaksha VimukthiRajapaksha merged commit 4e954a6 into wso2:feature/portal Jun 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type/New Feature Represents a request or task for a new feature Type/UX Refers to user experience-related tasks or issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants