Project: minio-mobile

project-minio-mobile Project Page

active project-page

minio-mobile

Vision

A mobile-first, multi-tenant asset portal for MinIO. Stakeholders log in via Keycloak and see only their project's assets. Admins see everything. Replaces the unusable stock MinIO Console on mobile. Built on a custom S3 SDK with zero third-party dependencies — we own the stack from HTTP signing to pixel rendering.

User Stories

Role Key Story Success Metric
Admin (Lucas) admin-browse Browse all MinIO buckets from phone, view images, upload files, manage objects All bucket/object CRUD functional at 390px viewport
Stakeholder stakeholder-review Log in and see only my project's assets — answer "what have you shared with me?" Tenant-scoped view shows only project prefix, no cross-project leakage
Any user mobile-upload Upload photos from phone camera/gallery with progress feedback Presigned URL upload works on mobile Safari/Chrome, progress bar visible
Any user asset-discovery Browse folders, preview images inline with pinch-zoom Thumbnail grid, full-size preview, breadcrumb navigation all functional at 390px

Consumer Projects

Other projects store assets in MinIO and their stakeholders access them through minio-mobile:
Project MinIO Prefix Asset Types Stakeholders
Westside Basketball <code>assets/westside/</code> Coach photos, sponsor logos, branding, game photos Marcus, coaches, sponsors
mcd-tracker <code>assets/mcd-tracker/</code> Receipt images (future) Lucas
pal-e-docs <code>assets/docs/</code> Documentation images, diagrams Lucas (admin)
These projects don't change code to use minio-mobile. Their assets already exist in MinIO. minio-mobile provides a UI layer on top, scoped by Keycloak group claims.

Plan

Active: plan-minio-mobile
Previous: plan-pal-e-platform Phases 24-27 (SDK + playground completed on platform; API + SvelteKit deferred and superseded by this plan)

Board

board-minio-mobile

Status

  • SDK — v0.1.0 published to Forgejo PyPI. Custom Sig V4 signing, 62 tests, XML escaping fixed (PR #4). Owned by pal-e-platform.
  • Playground — v2 merged. Signin page, admin/stakeholder role-based views, XSS + access control hardened. 6 HTML pages, 1 CSS, 1 JS.
  • API — Phase 2a in progress. FastAPI service wrapping SDK, no auth yet.
  • SvelteKit app — Phase 3, not started. Blocked on API + auth.

Milestones

None yet.

Architecture

System Overview

Key Architectural Decisions

  • Custom S3 SDK, no boto3 — own the stack from HTTP signing to pixel rendering. Full control, no hidden failures.
  • Presigned URLs for file transfer — API generates URLs, browser talks directly to MinIO. File bytes never proxy through the API.
  • Keycloak group claims = tenant scoping — group westside maps to prefix assets/westside/. No per-user MinIO accounts needed.
  • Playground-first development — vanilla HTML/CSS/JS prototype approved on phone before SvelteKit promotion. The playground IS the design contract.
  • Separate project from pal-e-platform — multi-tenant auth + stakeholder access = product, not infrastructure. SDK stays on platform as shared infra.
Detailed architecture diagrams: arch-domain-minio-mobile, arch-dataflow-minio-mobile, arch-deployment-minio-mobile (to be created when architecture stabilizes).

Repos

Repo Platform Role Status
<a href="https://forgejo.tail5b443a.ts.net/forgejo_admin/minio-sdk">minio-sdk</a> Forgejo Pure Python S3 SDK (owned by pal-e-platform, consumed here) active
<a href="https://forgejo.tail5b443a.ts.net/forgejo_admin/minio-playground">minio-playground</a> Forgejo Mobile-first vanilla HTML/CSS/JS prototype with auth flow active
<a href="https://forgejo.tail5b443a.ts.net/forgejo_admin/minio-api">minio-api</a> Forgejo FastAPI REST service with Keycloak auth + tenant scoping active (in development)
minio-app Forgejo SvelteKit production app (to be created in Phase 3) planned

Inbox

Query: list_board_items(board_slug="board-minio-mobile", column="backlog")