Learn to code through interactive challenges — at your own pace, your own difficulty.
Features • Tech Stack • Getting Started • Structure • Contributing • License
Aralify is a next-generation interactive programming education platform. Unlike traditional linear courses, every lesson offers Easy, Medium, and Hard difficulty tiers — letting learners progress at their own pace while being rewarded for mastering harder content.
Why Aralify?
- 🎯 Flexible Difficulty — Pass any tier to progress. Return for harder challenges anytime.
- 💻 Real Code Execution — Write code that actually runs, not just theory.
- 🔥 Meaningful Gamification — XP multipliers, streaks, badges, and leaderboards that reward real effort.
- 📱 Cross-Platform — Web, iOS, and Android with offline support.
- 🌍 Multilingual — English and Filipino, with more languages coming.
- 📚 Structured courses with levels and difficulty tiers (Easy/Medium/Hard)
- ✍️ Interactive lessons with code examples and explanations
- ❓ Multiple quiz types (multiple choice, fill-in-blank, code completion)
- 🖥️ In-browser code execution with instant feedback
- 📊 Progress tracking with mastery percentages
- ⭐ XP system with difficulty multipliers (1x / 2x / 3x)
- 🔥 Daily streak tracking with milestone rewards
- 🏆 Achievements and collectible badges
- 📈 Global and friends leaderboards
- 🎖️ Rank titles based on total XP
- 👥 User profiles with public stats
- 👫 Follow system to connect with friends
- 💬 Comments and discussions on lessons
- 📰 Activity feed showing friend progress
- 🌐 Responsive web application
- 📱 Native mobile apps (iOS & Android)
- 📴 Offline mode with downloadable lessons
- 🌏 Internationalization (EN, FIL)
| Technology | Purpose |
|---|---|
| Next.js 14 | Web framework (App Router) |
| React Native + Expo | Mobile apps |
| TypeScript | Type safety |
| Tailwind CSS | Styling |
| Zustand | State management |
| TanStack Query | Data fetching & caching |
| Monaco Editor | Code editor |
| Technology | Purpose |
|---|---|
| NestJS | Backend framework (REST API) |
| Node.js 20+ | Runtime |
| Prisma | ORM |
| PostgreSQL | Primary database |
| Supabase | Auth, Postgres hosting, storage, realtime |
| Redis | Caching, rate limiting, queues |
| Bull | Background jobs & scheduling |
| Socket.io | Real-time features (activity, leaderboards) |
| Judge0 | Code execution sandbox |
| Technology | Purpose |
|---|---|
| Vercel | Web hosting |
| Expo EAS | Mobile builds |
| Sentry | Error monitoring |
| PostHog | Analytics |
- Node.js 18+
- pnpm 8+
- PostgreSQL (or Supabase account)
-
Clone the repository
git clone https://github.com/your-username/Aralify.git cd Aralify -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env.local
Fill in the required values:
# Database DATABASE_URL="postgresql://..." # Supabase NEXT_PUBLIC_SUPABASE_URL="https://xxx.supabase.co" NEXT_PUBLIC_SUPABASE_ANON_KEY="xxx" SUPABASE_SERVICE_ROLE_KEY="xxx" # Judge0 (Code Execution) JUDGE0_API_URL="https://judge0-ce.p.rapidapi.com" JUDGE0_API_KEY="xxx" # OAuth (optional) GOOGLE_CLIENT_ID="xxx" GOOGLE_CLIENT_SECRET="xxx" GITHUB_CLIENT_ID="xxx" GITHUB_CLIENT_SECRET="xxx"
-
Set up the database
pnpm db:push pnpm db:seed
-
Start the development server
pnpm dev
-
Open the app
- Web: http://localhost:3000
- Mobile: Run
pnpm mobileand scan QR with Expo Go
Aralify/
├── apps/
│ ├── web/ # Next.js web application
│ │ ├── app/ # App router pages
│ │ ├── components/ # React components
│ │ └── lib/ # Utilities
│ └── mobile/ # React Native app
│ ├── app/ # Expo router screens
│ └── components/ # RN components
├── packages/
│ ├── api/ # tRPC routers
│ ├── db/ # Prisma schema & client
│ ├── ui/ # Shared UI components
│ └── config/ # Shared configs
├── docs/ # Documentation
└── scripts/ # Utility scripts
| Command | Description |
|---|---|
pnpm dev |
Start web development server |
pnpm mobile |
Start Expo development server |
pnpm build |
Build for production |
pnpm lint |
Run ESLint |
pnpm test |
Run tests |
pnpm db:push |
Push schema to database |
pnpm db:seed |
Seed database with sample data |
pnpm db:studio |
Open Prisma Studio |
We welcome contributions! Please read our Contributing Guidelines before submitting a PR.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m "feat: add amazing feature" - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
We use Conventional Commits:
feat: add new feature
fix: resolve bug
docs: update documentation
style: formatting changes
refactor: code restructuring
test: add tests
chore: maintenance
- Project setup and architecture
- Phase 1: MVP
- Authentication system
- Course and lesson structure
- Quiz system
- Code execution integration
- Basic gamification (XP, streaks)
- Python & JavaScript courses
- Phase 2: Social
- Friend system
- Comments and discussions
- Activity feed
- Offline mode
- Phase 3: Growth
- Additional languages
- Premium subscriptions
- Certification system
- AI-powered hints
This project is licensed under the MIT License — see the LICENSE file for details.
- Sololearn — Inspiration for interactive learning
- Duolingo — Gamification inspiration
- Judge0 — Code execution API
- Supabase — Backend infrastructure
Build your skills. Forge your future.
