Project: palinks
Vision
Multi-user link hub and portfolio — a dashboard for curating, sharing, and tracking URLs. The front door to Lucas Draney's platform: clients, leads, and collaborators discover services; Lucas controls what each audience sees.
Status
Core app shipped: link CRUD, favorites, drag-and-drop reordering, click tracking, canvas layout with filter tabs (popular/favorites/other). Custom domain live at palinks.app via Hetzner edge (Caddy + Tailscale mesh). CI/CD pipeline operational (Woodpecker → Harbor → ArgoCD Image Updater, ~5 min merge-to-live).
iOS shell created: palinks-ios repo (Turbo Native + HotwireNative) with PR #1 merged. Current sprint: TestFlight beta → App Store submission.
Auth/roles/visibility designed (spikes complete) but not yet implemented — deferred until after App Store launch.
Architecture
Rails 8.1 on k3s, PostgreSQL (CNPG), Puma on port 3000, Tailscale Funnel ingress. Hetzner edge node (Caddy + Tailscale) as reverse proxy for palinks.app. iOS: Turbo Native shell in separate repo (palinks-ios). Detailed architecture in repo:
docs/architecture.mdRoles
- superadmin — Lucas. Sees all links, all flags, user management.
- member — Authenticated users (2FA-verified email + phone). Sees public + member links, direct contact info, limited flags.
- (anonymous) — Unauthenticated. Public links and contact form only. Not a Keycloak role.
User Stories
story:containerize-palinks— Containerization and CI/CD pipeline (done)story:sortable-links— Drag-and-drop reordering (done)story:canvas-layout— Canvas view with activity-based card sizing (done)story:custom-domain— Route palinks.app to production (done)story:ios-distribution— Turbo Native iOS shell + TestFlight + App Store (in progress)story:auth-roles— Keycloak auth, roles, visibility, feature flags (backlog)story:ci-testing— Test coverage and CI test step (backlog)
Current Sprint: TestFlight Beta
- #57 — Update stale docs, add CLAUDE.md, iOS docs, app icon (PR #58, in review)
- #59 — Build and upload first TestFlight beta
- #60 — Mobile CSS polish for iOS WKWebView
- #61 — App Store metadata and privacy policy page
- #55 — Fix N+1 query and polish on link filters
- #54 — Add test coverage and CI test step
Repos
- ldraney/palinks — application code
- ldraney/palinks-ios — Turbo Native iOS shell (HotwireNative + Fastlane)
Board
board-palinks