Open-source digital business card platform by ASYA.
Each user gets a public profile page at /<username> with links, contact info, avatar, and vCard export.
- Public card pages with custom links
- vCard endpoint (
/<username>/vcard) for contact import - Optional contact form per card
- Page analytics (views, link clicks, form submissions, vCard downloads)
- SSO authentication (OIDC via NextAuth)
- Role-based access (
user/admingroups) - Admin panel for user management and default settings
- Avatar upload + crop
- Public card pages use the user
displayNameas the page title - All other pages use
Asya business cards
- Next.js 16 (App Router)
- React 19
- TypeScript
- Tailwind CSS v4
- Drizzle ORM
- PostgreSQL 17
- NextAuth v5 (beta)
- Docker Compose
- Node.js 22+
- pnpm
- Docker
pnpm install
cp .env.example .env
docker compose up db -d
pnpm db:migrate
pnpm devApp runs at http://localhost:3000 in local dev.
docker compose up -d --buildCompose services:
db(PostgreSQL)migrate(runs Drizzle migrations once)app(Next.js standalone server)
Default published app port in compose: 3017:3000.
| Command | Description |
|---|---|
pnpm dev |
Start dev server |
pnpm build |
Production build |
pnpm start |
Start production server |
pnpm lint |
Run ESLint |
pnpm db:generate |
Generate migration files |
pnpm db:migrate |
Apply pending migrations |
pnpm db:push |
Push schema directly (dev only) |
pnpm db:studio |
Open Drizzle Studio |
All required variables are documented in .env.example.
Do not commit real secrets. Keep .env private.
Before pushing public commits:
- Ensure
.envis not tracked - Ensure no private keys/certs are tracked
- Keep only template values in
.env.example - Review
docker-compose.ymlfor hardcoded credentials - Run
git statusand verify only intended files are staged
Add your preferred license file (for example MIT) before publishing.