2026-07-14 12:34:47 +00:00
|
|
|
<!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>
|
|
|
|
|
|
2026-07-14 13:05:04 +00:00
|
|
|
<task-item class="blue hide-content">
|
2026-07-15 15:13:06 +00:00
|
|
|
<task-title>styles.rokojori.com</task-title>
|
2026-07-14 13:05:04 +00:00
|
|
|
<task-content>
|
2026-07-15 15:13:06 +00:00
|
|
|
New asset and font hosting service at styles.rokojori.com. Hosts Google Fonts
|
|
|
|
|
(downloaded and self-served), CSS presets, components, and images for use
|
|
|
|
|
across all rokojori websites.
|
2026-07-14 13:05:04 +00:00
|
|
|
|
2026-07-15 15:13:06 +00:00
|
|
|
Auth via shared JWT cookie from rokojori-auth. Access gated by requireAccess
|
|
|
|
|
middleware (already designed and documented in rokojori-auth workspace).
|
|
|
|
|
PATCH /api/admin/users/:id/products is live in rokojori-auth — assign the
|
|
|
|
|
"styles" product to grant access.
|
2026-07-14 13:05:04 +00:00
|
|
|
|
2026-07-15 15:13:06 +00:00
|
|
|
Pages:
|
|
|
|
|
— / — logged-out or no-permission users see "STYLES" + login button linking
|
|
|
|
|
to account.rokojori.com/login?redirect=https://styles.rokojori.com;
|
|
|
|
|
logged-in users with access see list of available sections
|
|
|
|
|
— /list-fonts — preview-sentence input at top, then all font families rendered
|
|
|
|
|
with that sentence
|
|
|
|
|
— /add-fonts — preview-sentence input + font-family name input; downloads from
|
|
|
|
|
Google Fonts and generates a stylesheet
|
|
|
|
|
|
|
|
|
|
Access rules: role:admin, role:user + product:styles, role:user + product:premium
|
2026-07-14 13:05:04 +00:00
|
|
|
</task-content>
|
|
|
|
|
</task-item>
|
|
|
|
|
|
2026-07-14 12:34:47 +00:00
|
|
|
<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>Internet Tunnel / Port Relay</task-title>
|
|
|
|
|
<task-content>
|
|
|
|
|
Allow local devices — a Stable Diffusion instance, a local LLM, a GDScript language
|
|
|
|
|
server — to be accessible to authorised Roject users over the internet, routed through
|
|
|
|
|
the Roject server via a persistent WebSocket. Primary use case: phone as a thin client
|
|
|
|
|
while the main machine handles all heavy processing.
|
|
|
|
|
</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 — 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>
|