finos / finos/architecture-as-code

Make Calm Hub ( API / Backend ) Calm HUB UI Independent

Open
#2,943 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
399
Forks
138
Avg merge
2d 14h
Merged PRs (30d)
37

Description

## Feature Proposal

**Current State**

The Calm Hub Server backend API and SPA (Single Page Application) are currently packaged together within the same JAR file. During the Calm Hub build process, the backend module attempts to download Node.js/npm binaries, build the UI, and copy the generated frontend assets into the backend package for serving. As a result, the frontend and backend modules are tightly coupled in terms of build, packaging, deployment, and runtime operations.

**Problem Statement**

In production and enterprise environments, SPAs are typically hosted on dedicated static content platforms (such as CDN-backed storage, web servers, or cloud hosting services) and do not need to be bundled with backend APIs. Keeping both components packaged together limits deployment flexibility and prevents independent scaling of the frontend and backend.

**Proposed Enhancement**

We propose decoupling the frontend and backend components so they can be built, deployed, and operated independently. This approach would:

Enable hosting the SPA on dedicated static hosting platforms.
Allow independent scaling of frontend and backend services.
Simplify deployment and release management.
Improve architectural flexibility for enterprise and cloud-native deployments.
Reduce the backend artifact size by removing bundled frontend assets.

**Expected Outcome**

The backend API can run independently without serving SPA assets, while the SPA can be hosted and managed separately. This aligns with modern enterprise deployment patterns and provides greater operational flexibility.

### Target Project:
...which existing project in the monorepo will this feature be added to?

### Description of Feature:
...what capabilities will the new feature provide, and why is it needed?

### User Stories:
...describe the feature from an end-user perspective, using "As a [role], I want [feature] so that [benefit]" format...

### Current Limitations:
...describe why this functionality isn't possible with the current implementation...

### Proposed Implementation:
...provide details of the intended implementation approach, including:
- Technical design considerations
- API changes (if applicable)
- Data model changes (if applicable)
- Dependencies on other components

### Alternatives Considered:
...what other approaches were considered and why were they rejected?

### Testing Strategy:
...how will this feature be tested? Include unit, integration, and any other testing considerations...

### Documentation Requirements:
...what documentation will need to be created or updated?

### Implementation Checklist:
- [ ] Design reviewed and approved
- [ ] Implementation completed
- [ ] Tests written and passing
- [ ] Documentation updated
- [ ] Relevant workflows updated (if needed)
- [ ] Performance impact assessed

### Additional Context:
...add any other context, diagrams, mockups, or screenshots about the feature request here...

Contributor guide

Open the contributing guide

Research direction

The issue names the Calm Hub backend module, SPA, build process, and JAR packaging, but no files or tests. Start by tracing how the backend downloads Node.js/npm, builds the UI, copies assets, and serves them; done means the API and SPA build, package, deploy, and run independently, with the relevant documentation and workflows updated.

Written by the indexing model from the issue text.

Assessment

Tech stack
nodejs, typescript
Domain
api, build-system, devops, full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.