# Fresh developer machine — clone guide

Use on a **clean laptop**. Canonical org: **`ac`** on `git://f0xx.org/ac/*`, branch **`next`**.

## Standard layout (`~/repos/ac`)

```bash
mkdir -p ~/repos/ac && cd ~/repos/ac

git clone --branch next --single-branch git://f0xx.org/ac/ac-workspace .

git submodule sync --recursive
git submodule update --init --recursive

echo 'source "$(git rev-parse --show-toplevel)/ac-be-public-assets/ac-bash.env"' >> ~/.bashrc
source ~/.bashrc
```

You now have every `ac-*` submodule under one directory. Docs: `ac-docs/` (start with [DEVELOPER_SETUP.md](../DEVELOPER_SETUP.md)).

## Stay up to date

From `~/repos/ac`:

```bash
git pull --rebase origin next
git submodule sync --recursive
git submodule update --init --recursive
```

Or, after sourcing `ac-bash.env`: **`ac-pull`**

When child repos change on the server, the workspace root commit updates submodule SHAs — always pull **root first**, then submodule update.

## One-command bootstrap (alternative)

```bash
git clone --branch next --single-branch --depth 1 \
  git://f0xx.org/ac/ac-scripts /tmp/ac-scripts-bootstrap
sh /tmp/ac-scripts-bootstrap/fresh-clone-dev-env.sh -d ~/repos/ac
```

## What you get

| Path | Role |
|------|------|
| `ac-mobile-android/` | Android app |
| `ac-deploy/` | Lab cluster (`sim/cluster0/`) |
| `ac-docs/` | Documentation |
| `ac-be-public-assets/` | Shared `ac-bash.env` (non-secret) |
| `ac-platform-*`, `ac-ms-*`, `ac-be-*` | Backend stack |

**Do not** clone legacy `git://f0xx.org/android_cast` for new work.

## After clone

| Task | Where |
|------|--------|
| Repo map, lab URLs | [DEVELOPER_SETUP.md](../DEVELOPER_SETUP.md) |
| Secrets / recovery | [SECRETS_AND_RECOVERY.md](SECRETS_AND_RECOVERY.md) |
| Cursor + second laptop | [CURSOR_SECONDARY_LAPTOP.md](CURSOR_SECONDARY_LAPTOP.md) |
| Android build | `cd ac-mobile-android && ./gradlew :app:assembleDebug` |

## Lab vs production

| Environment | Issues API |
|-------------|------------|
| Production | `https://apps.f0xx.org/app/androidcast_project/issues/` |
| Lab cluster | `https://acl0.f0xx.org/...` (after FE `ac-fe.conf`) |

## Troubleshooting

| Symptom | Fix |
|---------|-----|
| `git://f0xx.org` unreachable | VPN/LAN to git host |
| Empty submodule dir | `git submodule update --init --recursive` |
| Wrong branch | `git checkout next && git submodule foreach git checkout next` |
