Learn like a duelist, earn like a degenerate. A Duolingo‑style language app powered by Solana, NeonDB, Stripe & more!
Whether you're stacking sats, stacking tokens, or stacking vocab, DegenLingo is your one‑stop Web3‑infused language playground. Level up your language skills while minting NFTs, earning tokens for progress, and celebrating every win with confetti! 🎉
- Interactive Lessons
Bite‑sized exercises, progress bars, and confetti celebrations for each milestone (
react-circular-progressbar,react-confetti,sonner). - Dual‑Mode Payments Accept both Stripe (fiat) and Solana (crypto) for premium packs and in‑app purchases.
- On‑Chain Badge Minting Early adopters earn exclusive NFT badges via Metaplex as proof of OG status.
- Token Rewards Earn native tokens for lesson completions, streaks, and special challenges—redeemable for perks or swapped on-chain.
- Serverless NeonDB + Drizzle ORM
Lightning‑fast data storage with zero‑config migrations & Drizzle Studio UI (
drizzle-kit,@neondatabase/serverless). - Solana Wallet Login
Connect your Phantom or Solflare wallet in one click using
@solana/wallet-adapter-react+@wallet-adapter-wallets. - Clerk Authentication
Magic links, OAuth, and passwordless flows (
@clerk/nextjs). - Admin Dashboard
Spin up a React‑Admin panel in seconds to manage users, content, tokens, and badge drops (
react-admin,ra-data-simple-rest). - Dark/Light Themes
Toggle between cozy dark mode or bright light mode with
next-themes. - TypeScript & Next.js 15 Future‑proof stack with the latest Next.js turbo‑charged capabilities.
| Layer | Tech / Library |
|---|---|
| Framework | Next.js 15, React 19 |
| Styling | Tailwind CSS 4, tailwind-merge, Animate.css |
| State Management | Zustand |
| ORM & DB | Drizzle ORM + migrations/seeds, NeonDB |
| Web3 | Solana Web3.js, Metaplex UMI, UMI adapters |
| Payments | Stripe, Solana Program payments |
| Auth | Clerk |
| Admin UI | React Admin + Simple REST provider |
| Notifications | Sonner |
| Logging | Winston |
| Misc | Confetti, Progress Bars, CVA, clsx |
-
Clone & install
git clone https://github.com/KitsuneKode/degenlingo.git cd degenlingo bun install # or `npm install` / `yarn`
-
Environment Variables Create a
.envat project root with:DATABASE_URL=… # NeonDB connection string CLERK_SECRET=… # Clerk API key NEXT_PUBLIC_CLERK=… # Clerk frontend key STRIPE_SECRET_KEY=… # Stripe secret key SOLANA_RPC_URL=… # (optional) custom Solana RPC endpoint TOKEN_MINT_ADDRESS=… # Your SPL token mint for rewards NFT_COLLECTION=… # Metaplex candy machine or collection ID
-
Generate & Migrate DB
bun run db:generate # produce Drizzle definitions bun run db:migrate # apply latest migrations bun run db:seed # seed with sample lessons & users
-
Run Locally
bun dev # http://localhost:3000 bun run db:studio # Drizzle Studio at http://localhost:8080
-
Build & Start
bun run build bun start
We ❤️ community magic! To join:
- Fork the repo
- Create a branch:
git checkout -b fix/amazing-feature - Commit:
git commit -m "feat: add pirate mode" - Push & open a PR!
Run bun run format & bun run lint before each PR.
| Script | Description |
|---|---|
dev |
Start Next dev server |
build |
Compile & optimize for production |
start |
Run the built app |
lint |
Run ESLint checks |
format |
Run Prettier formatting |
db:generate |
Generate Drizzle ORM types |
db:migrate |
Apply DB migrations |
db:seed |
Seed the database |
db:studio |
Launch Drizzle Studio UI |
db:reset |
Drop & reset DB |
deploy:vercel |
- Link your GitHub repo to Vercel
- Add environment variables in Vercel dashboard
- Push to
main→ automatic builds & deploys
docker build -t degenlingo .
docker-compose up- NFT Badge Mint: First 500 sign-ups get an exclusive on-chain badge!
- Token Airdrop: Milestone-based token distributions—complete 10 lessons to unlock your first token batch.
- License: MIT
- Code of Conduct: Be awesome to each other. No rug pulls allowed!
Built with 🦊 by KitsuneKode. Questions, feedback, or degen memes? Open an Issue or DM me!
“To learn a language is to have one more window from which to look at the world.” And one more wallet to connect, of course. 😉