An interactive gamified platform for creating and delivering learning modules, quizzes, and assessments โ similar to Google Forms but with built-in gamification, rich media support, and progress tracking. Originally built for English learning, now designed for any subject or purpose.
- Hearts System: Limited attempts per session that regenerate over time
- XP & Levels: Earn experience points and level up as you progress
- Progress Tracking: Track completion and performance across modules
- Retry Mechanism: Learn from mistakes with the ability to retry questions
- Modular Structure: Organized learning paths with headers, materials, and assessments
- Rich Media Support:
- Material with markdown formatting
- Images (with URL or file upload support)
- Videos (YouTube, Vimeo, or direct video files)
- Multiple Question Types:
- Multiple Choice
- Word Arrangement (drag-and-drop)
- Image Selection
- Multiple Choice with Images
- Questions with Image/Video context
- Module Management: Create, edit, delete, and reorder learning modules
- Drag-and-Drop Reordering: Intuitive content organization
- Rich Text Editor: Markdown-based content creation with WYSIWYG preview
- Media Uploader: Support for file uploads and direct URL inputs (including CDN links)
- Real-time Preview: See changes as you build content
- Elegant Minimalist Design: Clean, modern interface with smooth animations
- Responsive Layout: Works seamlessly on desktop and mobile devices
- Dark Mode Support: Theme switching capability (infrastructure ready)
- Toast Notifications: Clear feedback for user actions
- Markdown Rendering: Consistent formatting across editor and player
- Framework: Next.js 16 (App Router, Turbopack)
- Language: TypeScript
- Styling: Tailwind CSS 4
- Database: SQLite with Drizzle ORM
- Authentication: NextAuth.js
- UI Components: Radix UI + shadcn/ui
- Rich Text: @toast-ui/editor
- Drag & Drop: @dnd-kit
- Animations: Framer Motion
- Notifications: Sonner
- Markdown: react-markdown + remark-gfm
- Node.js 18.x or higher
- npm, yarn, pnpm, or bun
-
Clone the repository
git clone https://github.com/w4nnnn/questly.git cd questly -
Install dependencies
npm install # or yarn install # or pnpm install
-
Set up environment variables
Create a
.envfile in the root directory:# Database DATABASE_URL=./local.db # NextAuth NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your-secret-key-here # OpenRouter Chatbot OPENROUTER_API_KEY=your-openrouter-api-key OPENROUTER_MODEL=openai/gpt-oss-120b OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 OPENROUTER_APP_NAME=Questly English Learning OPENROUTER_APP_URL=http://localhost:3000 # Optional: PocketBase (if using external media storage) POCKETBASE_URL=your-pocketbase-url POCKETBASE_ADMIN_EMAIL=admin@example.com POCKETBASE_ADMIN_PASSWORD=your-password POCKETBASE_MEDIA_COLLECTION=demo_english_learn POCKETBASE_FILE_FIELD=file
-
Initialize the database
npm run db:push npm run db:seed
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
After seeding the database, you can log in with:
- Username:
admin - Password:
admin123
- Browse available modules on the home page
- Select a module to start
- Complete materials and answer questions
- Track your progress with XP and hearts
- Retry questions if you get them wrong
- Log in with admin credentials
- Navigate to
/adminto access the admin panel - Create new modules or edit existing ones
- Add various content types (headers, materials, questions)
- Drag and drop to reorder items
- Publish modules for users
questly/
โโโ app/ # Next.js app directory
โ โโโ admin/ # Admin panel pages
โ โโโ api/ # API routes
โ โโโ login/ # Authentication pages
โ โโโ modules/ # User module pages
โ โโโ globals.css # Global styles
โโโ components/ # React components
โ โโโ admin/ # Admin-specific components
โ โโโ modules/ # Module player components
โ โโโ question-types/ # Question type components
โ โโโ ui/ # Reusable UI components
โโโ lib/ # Utilities and configurations
โ โโโ actions/ # Server actions
โ โโโ db/ # Database schema & seed
โ โโโ auth.ts # Authentication configuration
โโโ public/ # Static assets
The platform supports multiple media input methods:
- File Upload: Direct file uploads via the media uploader
- URL Input: Paste direct URLs to images or videos
- CDN Support: Works with URLs containing query strings or additional paths
- YouTube/Vimeo Embeds: Automatically converts share links to embeds
- Multiple Choice: Traditional multiple-choice questions with text options
- Arrange Words: Drag-and-drop word arrangement to form sentences
- Select Image: Choose the correct image from visual options
- MC Image: Multiple choice with image-based options
- Question Image: Show an image, then ask a multiple-choice question
- Question Video: Show a video, then ask a multiple-choice question
- Module completion percentage
- Individual item completion status
- XP accumulation and level progression
- Hearts regeneration system
The application uses NextAuth.js with credentials provider. Users are stored in SQLite with bcrypt-hashed passwords.
Key tables:
users: User accounts and authenticationmodules: Learning modulesmodule_items: Individual content items within modulesuser_module_progress: Track user progress per moduleuser_item_responses: Store user answers and responses
The application uses CSS custom properties for theming. Modify app/globals.css to customize:
- Color palette (primary, secondary, accent)
- Border radius
- Shadow styles
- Animation timing
Seed data is located in lib/db/seed.ts. Customize the initial modules and content to fit your needs.
npm run build
npm run startThe easiest way to deploy is using Vercel Platform.
Make sure to set all required environment variables in your deployment platform.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is private and not licensed for public use.
Platform interaktif dengan gamifikasi untuk membuat dan menyajikan modul pembelajaran, kuis, dan asesmen โ mirip Google Forms namun dengan gamifikasi bawaan, dukungan media kaya, dan pelacakan progres. Awalnya dibangun untuk pembelajaran Bahasa Inggris, kini dirancang untuk subjek atau kebutuhan apapun.
- Sistem Hati: Percobaan terbatas per sesi yang regenerasi seiring waktu
- XP & Level: Dapatkan poin pengalaman dan naik level seiring progres
- Pelacakan Progres: Lacak penyelesaian dan performa di seluruh modul
- Mekanisme Retry: Belajar dari kesalahan dengan kemampuan mengulang pertanyaan
- Struktur Modular: Jalur pembelajaran terorganisir dengan header, materi, dan penilaian
- Dukungan Media Kaya:
- Materi dengan format markdown
- Gambar (dengan URL atau upload file)
- Video (YouTube, Vimeo, atau file video langsung)
- Berbagai Jenis Pertanyaan:
- Pilihan Ganda
- Susunan Kata (drag-and-drop)
- Pilih Gambar
- Pilihan Ganda dengan Gambar
- Pertanyaan dengan konteks Gambar/Video
- Manajemen Modul: Buat, edit, hapus, dan susun ulang modul pembelajaran
- Drag-and-Drop Reordering: Organisasi konten yang intuitif
- Rich Text Editor: Pembuatan konten berbasis markdown dengan preview WYSIWYG
- Media Uploader: Dukungan untuk upload file dan input URL langsung (termasuk link CDN)
- Preview Real-time: Lihat perubahan saat membangun konten
- Desain Minimalis Elegan: Antarmuka bersih dan modern dengan animasi halus
- Layout Responsif: Bekerja sempurna di desktop dan perangkat mobile
- Dukungan Dark Mode: Kemampuan switching tema (infrastruktur siap)
- Notifikasi Toast: Feedback jelas untuk aksi pengguna
- Rendering Markdown: Format konsisten di editor dan player
- Framework: Next.js 16 (App Router, Turbopack)
- Bahasa: TypeScript
- Styling: Tailwind CSS 4
- Database: SQLite dengan Drizzle ORM
- Autentikasi: NextAuth.js
- Komponen UI: Radix UI + shadcn/ui
- Rich Text: @toast-ui/editor
- Drag & Drop: @dnd-kit
- Animasi: Framer Motion
- Notifikasi: Sonner
- Markdown: react-markdown + remark-gfm
- Node.js 18.x atau lebih tinggi
- npm, yarn, pnpm, atau bun
-
Clone repository
git clone https://github.com/w4nnnn/questly.git cd questly -
Install dependencies
npm install # atau yarn install # atau pnpm install
-
Setup environment variables
Buat file
.envdi root directory:# Database DATABASE_URL=./local.db # NextAuth NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=kunci-rahasia-anda-disini # OpenRouter Chatbot OPENROUTER_API_KEY=api-key-openrouter-anda OPENROUTER_MODEL=openai/gpt-oss-120b OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 OPENROUTER_APP_NAME=Questly English Learning OPENROUTER_APP_URL=http://localhost:3000 # Opsional: PocketBase (jika menggunakan external media storage) POCKETBASE_URL=url-pocketbase-anda POCKETBASE_ADMIN_EMAIL=admin@example.com POCKETBASE_ADMIN_PASSWORD=password-anda POCKETBASE_MEDIA_COLLECTION=demo_english_learn POCKETBASE_FILE_FIELD=file
-
Inisialisasi database
npm run db:push npm run db:seed
-
Jalankan development server
npm run dev
-
Buka browser
Navigasi ke http://localhost:3000
Setelah seeding database, Anda bisa login dengan:
- Username:
admin - Password:
admin123
- Browse modul yang tersedia di halaman utama
- Pilih modul untuk memulai
- Selesaikan materi dan jawab pertanyaan
- Lacak progres Anda dengan XP dan hati
- Ulangi pertanyaan jika jawaban salah
- Login dengan kredensial admin
- Navigasi ke
/adminuntuk mengakses panel admin - Buat modul baru atau edit yang sudah ada
- Tambahkan berbagai jenis konten (header, materi, pertanyaan)
- Drag and drop untuk menyusun ulang item
- Publikasikan modul untuk pengguna
questly/
โโโ app/ # Direktori app Next.js
โ โโโ admin/ # Halaman panel admin
โ โโโ api/ # Route API
โ โโโ login/ # Halaman autentikasi
โ โโโ modules/ # Halaman modul pengguna
โ โโโ globals.css # Style global
โโโ components/ # Komponen React
โ โโโ admin/ # Komponen khusus admin
โ โโโ modules/ # Komponen player modul
โ โโโ question-types/ # Komponen jenis pertanyaan
โ โโโ ui/ # Komponen UI reusable
โโโ lib/ # Utilitas dan konfigurasi
โ โโโ actions/ # Server actions
โ โโโ db/ # Schema & seed database
โ โโโ auth.ts # Konfigurasi autentikasi
โโโ public/ # Asset statis
Platform mendukung berbagai metode input media:
- Upload File: Upload file langsung via media uploader
- Input URL: Paste URL langsung ke gambar atau video
- Dukungan CDN: Bekerja dengan URL yang mengandung query string atau path tambahan
- Embed YouTube/Vimeo: Otomatis convert link share menjadi embed
- Multiple Choice: Pertanyaan pilihan ganda tradisional dengan opsi teks
- Arrange Words: Drag-and-drop susunan kata untuk membentuk kalimat
- Select Image: Pilih gambar yang benar dari opsi visual
- MC Image: Pilihan ganda dengan opsi berbasis gambar
- Question Image: Tampilkan gambar, lalu ajukan pertanyaan pilihan ganda
- Question Video: Tampilkan video, lalu ajukan pertanyaan pilihan ganda
- Persentase penyelesaian modul
- Status penyelesaian item individual
- Akumulasi XP dan progresi level
- Sistem regenerasi hati
Aplikasi menggunakan NextAuth.js dengan credentials provider. User disimpan di SQLite dengan password ter-hash bcrypt.
Tabel utama:
users: Akun user dan autentikasimodules: Modul pembelajaranmodule_items: Item konten individual dalam moduluser_module_progress: Lacak progres user per moduluser_item_responses: Simpan jawaban dan respons user
Aplikasi menggunakan CSS custom properties untuk theming. Modifikasi app/globals.css untuk kustomisasi:
- Palet warna (primary, secondary, accent)
- Border radius
- Style shadow
- Timing animasi
Seed data terletak di lib/db/seed.ts. Kustomisasi modul awal dan konten sesuai kebutuhan Anda.
npm run build
npm run startCara termudah untuk deploy adalah menggunakan Vercel Platform.
Pastikan untuk set semua environment variables yang diperlukan di platform deployment Anda.
Kontribusi sangat diterima! Silakan submit Pull Request.
Project ini bersifat private dan tidak dilisensikan untuk penggunaan publik.