diff --git a/bincio/serve/server.py b/bincio/serve/server.py index 3646648..1b07965 100644 --- a/bincio/serve/server.py +++ b/bincio/serve/server.py @@ -286,11 +286,18 @@ async def register(request: Request) -> JSONResponse: # Create per-user directories dd = _get_data_dir() - (dd / handle / "activities").mkdir(parents=True, exist_ok=True) - (dd / handle / "edits").mkdir(parents=True, exist_ok=True) + user_dir = dd / handle + (user_dir / "activities").mkdir(parents=True, exist_ok=True) + (user_dir / "edits").mkdir(parents=True, exist_ok=True) + + # Write an empty index.json so the shard URL resolves immediately, + # even before the user uploads any activities. + from bincio.extract.writer import write_index + index_path = user_dir / "index.json" + if not index_path.exists(): + write_index([], user_dir, {"handle": handle, "display_name": display or handle}) # Update root manifest so the new user's shard is discoverable immediately - # (Astro dev re-evaluates getStaticPaths() on each request from this file) from bincio.render.cli import _write_root_manifest _write_root_manifest(dd)