Project: palinks

project-palinks Project Page

active project

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.md

Roles

  • 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

Board

board-palinks