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>
4.5 KiB
4.5 KiB
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:
loop/plan.md— Your task checklist (mark items- [x]as you complete them)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:
- Find the first unchecked
- [ ]item - Read the task description carefully — it tells you exactly what to do
- Read ALL relevant source files before making changes
- 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
anytypes — use proper TypeScript types - No
unwrap()/expect()in Rust production code — use?operator - Use
tracingfor Rust logging — neverprintln!
- 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
- Run
- 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
- 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
- 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
- Mark it done
- [x]inloop/plan.md - Commit:
type: description - 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>
- For sudo: pipe the password
- 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