Linkvoices lets you create and share crypto invoices (BTC, ETH, USDT, DAI), manage wallets, and publish blog posts stored in Postgres. Authentication and data use Supabase with Row Level Security.
- Multi-currency invoices with shareable public URLs (
invoice_uuid) - Wallet addresses on user profiles
- Blog stored in Supabase (
blog_posts), optional seed fromcontent/*.md - Auth activity logging (
user_activity) for backend/analysis use only - Responsive UI (Tailwind + DaisyUI); design notes in
LINKVOICES_UI_KIT.md
Prerequisites: Node.js 18+, npm/yarn/pnpm, a Supabase project.
-
Clone and install
git clone https://github.com/babakzy/linkvoices.git && cd linkvoices npm install
-
Environment — create
.envin the repo root:SUPABASE_URL=https://your-project.supabase.co SUPABASE_KEY=your-anon-key URL=http://localhost:3000
nuxt.configalso acceptsBASE_URL; keep a trailing slash optional (it is normalized). -
Database — Supabase Dashboard → SQL Editor → run the full file
supabase/migrations/20240101000000_initial_schema.sql. -
Blog seed (optional) —
npm run seed:blog -
Dev server —
npm run dev→ http://localhost:3000
Troubleshooting: Wrong credentials → check .env and restart dev server. Missing tables → re-run migration. Empty blog → run seed or insert rows in blog_posts.
| Doc | Contents |
|---|---|
| docs/DEVELOPMENT.md | Architecture, schema summary, tracking behavior |
| docs/API_REFERENCE.md | Composables (useBlog, useTracking, user helpers) |
| supabase/README.md | Supabase setup and schema notes |
| LINKVOICES_UI_KIT.md | Brand, layout, Tailwind tokens |
linkvoices/
├── components/ # Vue components
├── composables/ # useBlog, useTracking, user.js
├── content/ # Legacy markdown (seed source)
├── pages/ # Routes (dashboard, blog, invoice, …)
├── plugins/ # e.g. auth-tracking.client.ts
├── scripts/ # seed-blog-posts.js
├── supabase/ # migrations + README
├── docs/ # Developer docs
└── nuxt.config.ts
Nuxt 3, Vue 3, TailwindCSS, DaisyUI, Supabase Auth + Postgres, marked, jsPDF/html2canvas for PDF-related flows where used.
- RLS on all application tables.
- Invoice public access uses
invoice_uuid; owners manage invoices when signed in. user_activityholds technical/metadata fields for auth events; treat as privileged data and query with the service role or Supabase dashboard as documented in the migration policies.
npm run dev # Dev server
npm run build # Production build
npm run generate # Static generation
npm run preview # Preview production build
npm run seed:blog # Import content/*.md → blog_postsBuild with npm run build (or npm run generate for static). Set SUPABASE_* and URL/BASE_URL on the host (e.g. Vercel, Netlify, Cloudflare Pages).
Fork, branch, open a PR. Issues and discussions welcome on GitHub.