A modern digital asset marketplace built with Next.js, enabling creators to sell and users to purchase digital assets securely.
Built with a scalable, production-ready architecture supporting secure authentication, seamless payments, order management, and seller monetization.
🌐 Live Demo: https://assetlyapp.vercel.app
-
🔐 Authentication & Authorization
- Secure authentication with NextAuth (Auth.js v5)
- Protected routes for checkout, dashboard, and seller actions
- Role-based access (Buyer / Seller)
-
🛒 Asset Marketplace
- Browse, purchase, and download digital assets
- Free and paid asset support
- Add assets to cart or purchase directly
-
💳 Payments
- Stripe integration for secure checkout
- Order is finalized only after successful payment
- Order lifecycle:
PENDING -> PAID
-
📊 Seller Dashboard
- Earnings overview
- Sales count tracking
-
🎨 Modern UI
- Material UI (MUI v7)
- Fully responsive design
- Optimized for desktop & mobile
- Unit & service tests using Vitest
- Full end-to-end testing with Playwright (purchase flow)
- CI-based regression testing via GitHub Actions
- Production error monitoring and observability using Sentry
- Next.js 16
- React 19
- Material UI
- Zustand
- React Hook Form + Zod
- Next.js Server Actions
- Prisma ORM
- PostgreSQL
- Supabase (storage / infra)
- NextAuth (Auth.js v5)
- Stripe
- Vitest
- Playwright
- Sentry
- GitHub Actions
- Vercel
git clone https://github.com/iankitkd/assetly.git
cd assetly
npm install
Create a .env file in the root directory:
AUTH_SECRET=your_auth_secret
DATABASE_URL=your_database_url
AUTH_GOOGLE_ID={CLIENT_ID}
AUTH_GOOGLE_SECRET={CLIENT_SECRET}
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
SUPABASE_SECRET_KEY=your_supabase_secret_key
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret
NEXT_PUBLIC_APP_URL=http://localhost:3000
npx prisma generate
npx prisma migrate dev
npm run dev
Visit: http://localhost:3000
This project is licensed under the MIT License.