Skip to content

ARYPROGRAMMER/Simply-Learn

Repository files navigation

Simply-Learn

Simply Learn

AI-First Learning Management System powered by Xano

TODO (Maybe or Maybe NOT)

  • Likes/Dislikes: Add the ability for users to like or dislike courses, and display total likes/dislikes on course cards and course pages.
  • Views: Track and display view counts for lessons and courses so popular content can be surfaced.
  • Payments: Integrate a payment gateway (e.g., Stripe) to support subscriptions and one-time course purchases; include webhook handling for fulfillment.
  • OAuth: Add OAuth providers (Google, GitHub) for one-click sign-in and easier onboarding.
  • Notes Editor: Add a Monaco-based notes editor (per-lesson, persisted per-user) for personal notes and scratchpad functionality.

Screenshots

Landing page Landing page
Dashboard (student) Student dashboard
Dashboard (teacher) Teacher dashboard
Course preview Course preview
Course creation Course creation
Module creation Module creation
Lesson page Lesson page
Lesson creation Lesson creation
Auth / Login Auth page
Settings Settings
Pricing Pricing
AI chat preview AI chat preview
Course creation - other Course creation
Upgrade complete Upgrade complete
Dashboard (updated) Dashboard updated
MUX storage MUX storage
Xano β€” API & Schema

API builder, scripting and generated Swagger views from the Xano backend.

Xano APIs Xano API scripting Xano generated swagger Xano DB schema Xano DB helper

What is Simply Learn?

This Next.js (secure) and Xano Powered Application is your ultimate Learning and Skill Improving Platform. You can create content and distribute content as well as consume other people's helpful content. Track and Level Up.

The entire backend β€” database, auth, business logic, external integrations β€” runs on Xano. No separate Node.js/Python server needed.

πŸ“š API Documentation (Swagger)


Why Xano?

Capability How Xano Powers It
Database PostgreSQL tables for users, courses, modules, lessons, progress
Auth Built-in JWT authentication with role-based access
API Builder Visual no-code endpoints with XanoScript logic
MUX Integration External API calls for video upload & signed playback
Scalability Production-ready infrastructure, zero DevOps

Xano replaced what would typically be an entire backend codebase. All API logic lives in Xano's visual builder.


Tech Stack

Layer Technology
Backend & Database Xano
Frontend Next.js 16, React 19, Tailwind CSS 4
AI Google Gemini 2.5 Flash
Video MUX (streaming + direct uploads)

Quick Start

git clone https://github.com/ARYPROGRAMMER/simply-learn.git
cd simply-learn
pnpm install
cp .env.example .env.local
pnpm dev

Environment Variables

NEXT_PUBLIC_XANO_API_URL=https://your-instance.xano.io/api:CPmqNnhk
GOOGLE_GENERATIVE_AI_API_KEY=your-gemini-key

Demo Accounts

Use these test accounts to explore the app quickly (no sign-up required on some demo instances):

  • Student: student@gmail.com / Student@123
  • Teacher: teacher@gmail.com / Teacher@123

Database Schema (Xano)

Table Fields
users id, created_at, email, password, first_name, last_name, tier (enum), avatar_url, role (enum), updated_at
categories id, created_at, title, slug
courses id, created_at, title, slug, description, image_url, tier (enum), featured (bool), category (integer), teacher (integer), module_count (integer), lesson_count (integer), updated_at
modules id, created_at, title, order_index (integer), course (integer)
lessons id, created_at, title, slug, description, content, order_index (integer), mux_playback_id, duration (integer), module (integer)
user_progress id, created_at, completed (bool), completed_at, user (integer), lesson (integer)

API Endpoints

πŸ“š Full Documentation: Swagger

Endpoint Method Auth Description
/auth/signup POST No Register / create account
/auth/login POST No Login / obtain auth token
/auth/me GET Yes Get current authenticated user profile
/auth/profile PATCH Yes Update authenticated user's profile
/auth/upgrade-tier POST Yes Upgrade user's subscription tier
/courses GET No List all courses (with modules/lessons)
/courses/featured GET No Get featured courses
/courses/{slug} GET No Get course by slug (includes modules)
/lessons/{slug} GET No Get lesson by slug (full content)
/progress/complete-lesson POST Yes Mark a lesson completed for current user
/search GET No Search courses and lessons
/mux/sign_playback POST Yes Generate signed tokens for MUX playback

API Input Limits (recommended server-side validation)

The frontend enforces input size limits, but these should also be validated server-side in Xano. Add matching precondition checks in your Xano endpoints (visual builder) using the limits below:

  • title: max 200 characters
  • slug: max 120 characters
  • description: max 4000 characters
  • content: max 20000 characters
  • first_name / last_name: max 100 characters
  • avatar_url: max 2048 characters

Also ensure your middleware blocks extremely long URL paths (we added a guard in proxy.ts). | /mux/upload-url | POST | Yes | Generate direct upload URL for teachers | | /mux/get_asset | GET | Yes | Get Mux asset details by asset id | | /mux/get_upload | GET | Yes | Check Mux upload status | | /teacher/courses | GET | Teacher | Get teacher's courses | | /teacher/courses | POST | Teacher | Create a new course | | /teacher/courses/{course_id} | GET | Teacher | Get single teacher course (with modules) | | /teacher/modules | POST | Teacher | Create module for a course | | /teacher/lessons | POST | Teacher | Create lesson for a module |

See xanoscript/ for endpoint implementations.


Features

Students: Browse courses, watch videos, track progress, AI tutor chat (Ultra tier)

Teachers: Create courses, manage modules/lessons, upload videos via MUX

Tiers: Free, Pro, Ultra subscription levels


Project Structure

app/
β”œβ”€β”€ (app)/           # Dashboard, courses, lessons, teacher portal
β”œβ”€β”€ auth/            # Login/signup
└── api/chat/        # AI tutor endpoint
components/          # React components
lib/xano/            # Xano client & auth
xanoscript/          # Xano endpoint logic (20 endpoints)

Xano Setup

  1. Create workspace at xano.com
  2. Create tables (schema above)
  3. Add endpoints from xanoscript/ folder
  4. Set environment variables: MUX_TOKEN_ID, MUX_TOKEN_SECRET

License

MIT License Β© 2025 Arya Pratap Singh


Built with Love and Speed, Thanks to Xano

About

This NextJs (secure) and Xano Powered Application is your ultimate Learning and Skill Improving Platform. You can create content and distribute content as well as consume other people's helpful content . Track and Level Up

Topics

Resources

License

Stars

Watchers

Forks

Contributors