View Issue Details

IDProjectCategoryView StatusLast Update
5836Composrcorepublic2024-08-04 20:08
ReporterChris Graham Assigned ToGuest  
PrioritynormalSeverityfeature 
Status newResolutionopen 
Summary5836: API-first development
DescriptionMove Composr to generate data via an API server, and render the HTML from a JavaScript platform.
This would radically change the Composr programming model and radically improve speeds, while opening up the ability for there to be multiple 'clients' for a Composr site (including mobile apps, etc).
The JavaScript API would be able to render Tempcode and locally cache resources like templates, which would be served through the API server. There'd be much less data transferred by request and most of the load would be moved from the server to the client, greatly improving throughput.

Something like Swoole or ReactPHP (see 5835) would be good to add even higher performance to the API server.

This would all be an enormous amount of effort, almost a rewrite of the system. But to provide extreme performance and responsiveness, I think it's the future.
TagsType: Performance
Attach Tags
Time estimation (hours)10000
Sponsorship open

Sponsor

Date Added Member Amount Sponsored

Relationships

related to 5835 Not AssignedGuest Parallel block generation using Fibers (holding issue) 
related to 5834 Not AssignedGuest Switch to Typescript (Deno) 
related to 2091 Not AssignedGuest JavaScript-heavy forum implementation 
related to 2092 ClosedChris Graham JavaScript-heavy galleries implementation 

Activities

Chris Graham

2024-08-04 15:50

administrator   ~9070

If doing this it would probably also make sense to have some kind of precaching of resources commonly-used on the front end. This could be learned automatically, i.e. resources used by over X% of users should be auto-cached in the background. Templates, images, etc. Probably based on available bandwidth, i.e. don't do over a cellular connection.

Chris Graham

2024-08-04 20:08

administrator   ~9074

I should put in a reference to GraphQL, which is now very popular for APIs. I think we should focus on simple JSON though. If someone then wanted to make that more performant with GraphQL that could be added on in parallel. GraphQL has a lot of complexity and presents caching challenges, so it's not something we should go for unless we identified a need for it.

Add Note

View Status
Note
Upload Files
Maximum size: 32,768 KiB

Attach files by dragging & dropping, selecting or pasting them.
You are not logged in You are not logged in. This means you will not get any e-mail notifications. And if you reply, we will not know for sure you are the original poster of the issue.

Issue History

Date Modified Username Field Change
2024-08-03 22:19 Chris Graham New Issue
2024-08-03 22:20 Chris Graham Relationship added related to 5835
2024-08-03 22:20 Chris Graham Tag Attached: Type: Performance
2024-08-03 22:20 Chris Graham Relationship added related to 5834
2024-08-03 22:21 Chris Graham Relationship added related to 2091
2024-08-03 22:21 Chris Graham Relationship added related to 2092
2024-08-04 15:50 Chris Graham Note Added: 0009070
2024-08-04 20:08 Chris Graham Note Added: 0009074