Added searxng, onlyoffice, filebrowser, nginx-proxy-manager, portainer, and tailscale to first-boot-containers.sh so fresh ISO installs have all marketplace apps ready. Fixed penpot icon path in Marketplace.vue to use the correct app-icons directory. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
92 lines
4.5 KiB
Markdown
92 lines
4.5 KiB
Markdown
You are running a 2-year production roadmap for Archipelago (Archy) — taking it from developer preview to a flawless, mass-market Bitcoin Node OS (v1.0).
|
|
|
|
Read these files first:
|
|
|
|
1. `loop/plan.md` — Your task checklist (mark items `- [x]` as you complete them)
|
|
2. `CLAUDE.md` — Archy project conventions, architecture, coding standards
|
|
|
|
## Architecture Quick Reference
|
|
|
|
```
|
|
Server: 192.168.1.228 (ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228)
|
|
Frontend: neode-ui/ → builds to web/dist/neode-ui/ → deployed to /opt/archipelago/web-ui/
|
|
Backend: core/archipelago/ → Rust binary → deployed to /usr/local/bin/archipelago
|
|
Nginx: /etc/nginx/sites-available/archipelago (source: image-recipe/configs/nginx-archipelago.conf)
|
|
Systemd: /etc/systemd/system/archipelago.service (source: image-recipe/configs/archipelago.service)
|
|
Deploy: scripts/deploy-to-target.sh, scripts/first-boot-containers.sh
|
|
ISO: image-recipe/build-auto-installer-iso.sh
|
|
```
|
|
|
|
## Key Paths
|
|
|
|
- Views: `neode-ui/src/views/*.vue`
|
|
- Components: `neode-ui/src/components/*.vue`
|
|
- Stores: `neode-ui/src/stores/*.ts`
|
|
- API clients: `neode-ui/src/api/*.ts`
|
|
- Global styles: `neode-ui/src/style.css`
|
|
- Router: `neode-ui/src/router/index.ts`
|
|
- Context broker: `neode-ui/src/services/contextBroker.ts`
|
|
- Types: `neode-ui/src/types/*.ts`
|
|
- Backend entry: `core/archipelago/src/main.rs`
|
|
- RPC handlers: `core/archipelago/src/api/rpc/*.rs`
|
|
- Container mgmt: `core/container/src/*.rs`
|
|
- Security: `core/security/src/*.rs`
|
|
- Identity: `core/archipelago/src/identity/` (to be created)
|
|
- Network: `core/archipelago/src/network/` (to be created)
|
|
- Wallet: `core/archipelago/src/wallet/` (to be created)
|
|
- Nginx config: `image-recipe/configs/nginx-archipelago.conf`
|
|
- Systemd service: `image-recipe/configs/archipelago.service`
|
|
- Web5 docs: `docs/WEB5_NOSTR_IDENTITY.md`
|
|
- Three-mode UI spec: `docs/three-mode-ui-design.md`
|
|
- Port assignments: `apps/PORTS.md`
|
|
|
|
## For each task in loop/plan.md:
|
|
|
|
1. Find the first unchecked `- [ ]` item
|
|
2. Read the task description carefully — it tells you exactly what to do
|
|
3. Read ALL relevant source files before making changes
|
|
4. Make the change following CLAUDE.md conventions strictly:
|
|
- Global CSS classes in style.css, NEVER inline Tailwind in components
|
|
- `<script setup lang="ts">` only, no Options API
|
|
- No `any` types — use proper TypeScript types
|
|
- No `unwrap()`/`expect()` in Rust production code — use `?` operator
|
|
- Use `tracing` for Rust logging — never `println!`
|
|
5. For frontend changes:
|
|
- Run `cd neode-ui && npm run type-check` — fix ALL errors
|
|
- Run `cd neode-ui && npm run build` — must succeed
|
|
- Deploy: `./scripts/deploy-to-target.sh --live`
|
|
- Verify at http://192.168.1.228
|
|
6. For backend changes:
|
|
- Do NOT build Rust on macOS — the deploy script handles it
|
|
- Deploy: `./scripts/deploy-to-target.sh --live`
|
|
- Verify the service is running on the server
|
|
7. For nginx/systemd/infra changes:
|
|
- Deploy the config file to the server (commands in the task description)
|
|
- Validate config before applying (nginx -t)
|
|
- Verify the service works after applying
|
|
8. For new feature development:
|
|
- Create new files in the appropriate module directories
|
|
- Follow existing patterns in the codebase
|
|
- Wire new RPC endpoints through the existing RPC system
|
|
- Add new views to the router
|
|
- Add new stores as needed
|
|
9. Mark it done `- [x]` in `loop/plan.md`
|
|
10. Commit: `type: description`
|
|
11. Move to the next unchecked task immediately
|
|
|
|
## Critical Rules
|
|
|
|
- **Do NOT break existing functionality** — if your change breaks something, fix it before moving on
|
|
- **Read files before editing** — understand before changing
|
|
- **Never skip type-check or build** — if it fails, fix before moving on
|
|
- **Always deploy after completing a task** — changes must be live
|
|
- **Use SSH key, not password**: `ssh -i ~/.ssh/archipelago-deploy archipelago@192.168.1.228`
|
|
- For sudo: pipe the password `echo "EwPDR8q45l0Upx@" | sudo -S <command>`
|
|
- **Follow the design system** — glass cards, glass buttons, existing color tokens, no gradient buttons
|
|
- **Replace dummy data with real backends** — no more hardcoded values in Web5.vue
|
|
- **New Rust modules** go in `core/archipelago/src/` with proper error types
|
|
- **New Vue views** go in `neode-ui/src/views/` with `<script setup lang="ts">`
|
|
- If a task is proving difficult after 15+ genuine attempts, add `(BLOCKED: reason)` to the task and move on
|
|
- Do not stop until all tasks are checked or you hit rate limits
|
|
- Commit after each completed task
|