rojects/workspace/boards/backlog.html

113 lines
4.4 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Backlog - Roject</title>
<link rel="stylesheet" href="../_assets_/styles.css">
<link rel="stylesheet" href="../_assets_/nav.css">
<link rel="stylesheet" href="../_assets_/boards.css">
</head>
<body>
<div class="board-page">
<header>
<p class="date">Board</p>
<h1>Backlog</h1>
<p class="subtitle">Big visions and user stories. Too complex or vague for tasks, but important for direction.</p>
</header>
<div class="board">
<div class="lane">
<div class="lane-header">MVP</div>
<task-item class="blue hide-content">
<task-title>Local testing solution for the whole rokojori network</task-title>
<task-content>
A local dev setup that runs all services together: rokojori-auth, styles, tunnel,
and roject. Needs hosts file entries for *.local.rokojori.com subdomains so auth
cookies flow correctly, per-service .env.local files pointing at each other, and
a startup script to launch everything at once. Optionally a local reverse proxy
(Caddy) to avoid port numbers in URLs. Currently, the Electron app is the preferred
workaround for local testing since it injects auth headers directly.
</task-content>
</task-item>
<task-item class="blue hide-content">
<task-title>Local Git Repository Integration</task-title>
<task-content>
Git integration inside the editor: file status indicators in the tree, staging,
commit, push, pull, diffs, and history. Depends on local filesystem access.
Once Roject can open an arbitrary local directory, the git repo is already there.
Implementation via simple-git (thin Node.js wrapper around the git CLI).
</task-content>
</task-item>
</div>
<div class="lane">
<div class="lane-header">Nice To Have</div>
<task-item class="purple hide-content">
<task-title>Reactive one-retry-on-401 fallback for token refresh</task-title>
<task-content>
Considered as part of the auth-update central Token Updater work and deliberately
not built: when a call 401s in the narrow window right after the access token
expired but before the next proactive refresh tick, retry it once after triggering
a refresh, instead of failing immediately. Skipped for now to keep the guarded-call
path simple (calls only care whether access is valid, nothing else); revisit if the
5-minute proactive refresh interval turns out to leave a real-world gap.
</task-content>
</task-item>
<task-item class="purple hide-content">
<task-title>Real-Time Multi-User Collaboration</task-title>
<task-content>
Multiple users editing the same file simultaneously with presence indicators
and conflict resolution. Likely via operational transforms or CRDTs.
Significant architecture work; not planned for the near term.
</task-content>
</task-item>
</div>
<div class="lane">
<div class="lane-header">To The Moon</div>
<task-item class="orange hide-content">
<task-title>Mobile App (PWA first, native shell later)</task-title>
<task-content>
Make Roject usable on a phone or tablet. Quickest path: PWA with a manifest
and service worker — works in Safari and Chrome on Android and iOS without an
app store. If native capabilities are later needed, Capacitor can wrap the same
web app. A React Native or Flutter rewrite is not planned.
The realistic mobile workflow is browsing files, reading output, and light edits
rather than heavy coding.
</task-content>
</task-item>
</div>
</div>
<footer>
Roject &mdash; backlog
</footer>
</div>
<script>var NAV_ROOT = '../';</script>
<script src="../_assets_/nav-data.js"></script>
<script src="../_assets_/nav.js"></script>
<script>
document.querySelectorAll( 'task-title' ).forEach( title =>
{
title.addEventListener( 'click', () =>
{
title.closest( 'task-item' ).classList.toggle( 'hide-content' );
} );
} );
</script>
</body>
</html>