Skip to content

Learning Management System (LMS) made with Adonis JS framework

License

Notifications You must be signed in to change notification settings

argile-agency/edonis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

92 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Edonis LMS

CI E2E Tests Code Quality CodeQL License

A modern, open-source Learning Management System built with AdonisJS, React, and PostgreSQL.

Edonis LMS combines modern architecture, mobile-first design, and native AI integration to deliver a superior learning experience for educational institutions. Built with TypeScript and featuring comprehensive educational standards compliance (SCORM, xAPI, LTI 1.3, QTI 2.1).

โœจ Key Features

  • ๐ŸŽ“ Complete LMS Functionality: Course management, assignments, gradebook, and assessments
  • ๐Ÿค– AI-Powered Learning: Content generation, personalized paths, automated grading
  • ๐Ÿ“ฑ Mobile-First PWA: Offline support, touch-optimized, cross-platform
  • ๐Ÿ”Œ Extensible Plugin System: WordPress-inspired but type-safe
  • ๐Ÿ“Š Learning Analytics: xAPI/SCORM compliance for detailed insights
  • ๐Ÿ”’ Enterprise-Ready: Multi-tenancy, SSO, role-based access control
  • ๐ŸŒ Standards Compliant: SCORM 2004, xAPI, LTI 1.3, QTI 2.1

๐Ÿ› ๏ธ Tech Stack

  • Backend: AdonisJS 6 (TypeScript, MVC Framework)
  • Frontend: React 19 + Inertia.js + shadcn/ui
  • Database: PostgreSQL (with Supabase optional)
  • Styling: Tailwind CSS v4
  • Package Manager: Bun (preferred) / pnpm / npm
  • Real-time: WebSocket + SSE for live collaboration

Getting Started

Prerequisites

  • Bun installed
  • Docker installed (for database options)

Installation

  1. Clone the repository
  2. Install dependencies:
bun install
  1. Set up your environment:
cp .env.example .env
  1. Choose your database option (see below)

Database Setup Options

You have two options for running PostgreSQL in development:

Option 1: Supabase Local Dev (Recommended) โœจ

Advantages:

  • Full Supabase features (Auth, Storage, Realtime, Row Level Security)
  • Visual database UI (Supabase Studio)
  • Easy sync to production Supabase
  • Includes all Supabase services locally

Setup:

  1. Install Supabase CLI:
brew install supabase/tap/supabase
  1. Start Supabase local:
supabase start
  1. Get your credentials:
supabase status
  1. Update your .env with the values from supabase status:
DB_HOST=127.0.0.1
DB_PORT=54322
DB_USER=postgres
DB_PASSWORD=postgres
DB_DATABASE=postgres

SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_ANON_KEY=<from supabase status>
SUPABASE_SERVICE_KEY=<from supabase status>
  1. Access Supabase Studio:
http://127.0.0.1:54323

Useful Commands:

supabase status      # Check running services
supabase stop        # Stop all services
supabase db reset    # Reset database to fresh state

Option 2: Docker PostgreSQL (Simple) ๐Ÿณ

Advantages:

  • Simpler, fewer dependencies
  • Standard PostgreSQL setup
  • Lightweight

Setup:

  1. Start PostgreSQL with Docker Compose:
docker-compose up -d
  1. Update your .env:
DB_HOST=localhost
DB_PORT=5432
DB_USER=edonis
DB_PASSWORD=edonis_dev_password
DB_DATABASE=edonis_lms

Useful Commands:

docker-compose up -d      # Start PostgreSQL
docker-compose down       # Stop PostgreSQL
docker-compose down -v    # Stop and remove data
docker logs edonis_postgres  # View logs

Running the Application

  1. Run database migrations:
node ace migration:run
  1. Seed the database with demo data:
node ace db:seed
  1. Start the development server:
bun run dev
  1. Open your browser:
http://localhost:3333

Test Accounts

After running seeders, these accounts are available:

Role Email Password
Admin admin@edonis.test password
Manager manager@edonis.test password
Teacher teacher@edonis.test password
Student student@edonis.test password

Development Commands

# Development
bun run dev              # Start dev server with HMR
bun run build            # Build for production
bun start                # Start production server

# Database
node ace migration:run       # Run pending migrations
node ace migration:rollback  # Rollback last batch
node ace migration:fresh     # Drop all tables and re-run
node ace db:seed             # Run database seeders

# Code Generation
node ace make:migration <name>   # Create a migration
node ace make:model <name>       # Create a model
node ace make:controller <name>  # Create a controller
node ace make:validator <name>   # Create a validator

# Code Quality
bun run typecheck        # Type check TypeScript
bun run lint             # Lint code
bun run format           # Format with Prettier

# Testing
bun test                 # Run all tests
node ace test            # Alternative test command
node ace test browser    # Run E2E browser tests

Project Structure

โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ controllers/     # HTTP controllers
โ”‚   โ”œโ”€โ”€ models/         # Database models
โ”‚   โ””โ”€โ”€ middleware/     # Middleware
โ”œโ”€โ”€ config/             # Configuration files
โ”œโ”€โ”€ database/
โ”‚   โ””โ”€โ”€ migrations/     # Database migrations
โ”œโ”€โ”€ inertia/
โ”‚   โ”œโ”€โ”€ pages/          # React pages
โ”‚   โ””โ”€โ”€ components/     # React components
โ”œโ”€โ”€ resources/
โ”‚   โ””โ”€โ”€ views/          # Edge templates
โ””โ”€โ”€ start/
    โ”œโ”€โ”€ routes.ts       # Application routes
    โ””โ”€โ”€ kernel.ts       # Middleware registration

Production Deployment

When deploying to production with Supabase:

  1. Create a project at supabase.com
  2. Update .env with production credentials:
DB_HOST=db.xxxxx.supabase.co
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=<your-production-password>
DB_DATABASE=postgres

SUPABASE_URL=https://xxxxx.supabase.co
SUPABASE_ANON_KEY=<your-production-anon-key>
  1. Run migrations:
node ace migration:run --force

๐Ÿ”’ Security

Edonis LMS takes security seriously, especially given that LMS platforms handle sensitive student data.

Automated Security Scanning

  • CodeQL Analysis: Runs on every PR and weekly, scanning for:
    • SQL/Command injection vulnerabilities
    • Cross-Site Scripting (XSS)
    • Authentication/authorization flaws
    • Sensitive data exposure
    • Cryptography issues
  • Dependency Review: Checks for vulnerable dependencies on PRs
  • Security Audit: bun audit runs in CI to detect known vulnerabilities

Reporting Vulnerabilities

If you discover a security vulnerability, please report it responsibly:

  1. Do not open a public issue
  2. Email security concerns to the maintainers
  3. Allow time for a fix before public disclosure

See GitHub Security Advisories for known issues.

๐Ÿค Contributing

We welcome contributions! Please see our CLAUDE.md for architecture details and development guidelines.

Quick Start for Contributors

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes following our coding standards
  4. Run tests: bun test
  5. Commit with conventional commits: git commit -m "feat: add amazing feature"
  6. Push and create a Pull Request

๐Ÿ“„ License

Apache License 2.0

Copyright 2025 argile agency

Licensed under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

This project uses Apache 2.0 for:

  • ๐Ÿ›ก๏ธ Patent protection for users and contributors
  • ๐Ÿข Enterprise-friendly adoption
  • ๐Ÿ”’ Trademark protection for the "Edonis" brand
  • โš–๏ธ Clear contribution terms

See LICENSE and NOTICE files for details.

๐ŸŒŸ Why Edonis?

Compared to existing LMS solutions:

Feature Edonis Moodle Canvas Blackboard
Modern Stack โœ… TypeScript/React โŒ PHP โŒ Ruby โŒ Java
AI Integration โœ… Native โš ๏ธ Plugins โš ๏ธ Limited โš ๏ธ Limited
Mobile-First โœ… PWA โŒ โš ๏ธ โš ๏ธ
License Apache 2.0 GPL AGPL Proprietary
Developer Experience โœ… Excellent โŒ โš ๏ธ โŒ
Plugin System โœ… Type-safe โœ… โš ๏ธ โŒ

๐Ÿ—บ๏ธ Roadmap

See CLAUDE.md for detailed architecture and feature roadmap.

Phase 1 (MVP) - Q4 2025 (Current)

  • โœ… User management with RBAC
  • โœ… Authentication & authorization
  • โœ… Dynamic homepage system with role-based content
  • โœ… Theme system (light/dark/system)
  • ๐Ÿšง Course management system
  • ๐Ÿšง Course enrollment workflows
  • ๐Ÿšง Assignment workflow & evaluations
  • ๐Ÿšง Gradebook & progress tracking
  • ๐Ÿšง Communication tools (forums, messaging)

Phase 2 (AI & Mobile) - Q1-Q2 2026

  • ๐Ÿ”ฎ AI content generation (quizzes, summaries, objectives)
  • ๐Ÿ”ฎ Personalized learning paths
  • ๐Ÿ”ฎ Automated assessment & essay scoring
  • ๐Ÿ”ฎ AI tutoring chatbot
  • ๐Ÿ”ฎ PWA with offline support
  • ๐Ÿ”ฎ Mobile optimization & touch gestures
  • ๐Ÿ”ฎ Push notifications

Phase 3 (Advanced Features) - Q3-Q4 2026

  • ๐Ÿ”ฎ Plugin marketplace & ecosystem
  • ๐Ÿ”ฎ Advanced learning analytics
  • ๐Ÿ”ฎ Video conferencing integration (Zoom, Google Meet)
  • ๐Ÿ”ฎ Gamification features (badges, leaderboards)
  • ๐Ÿ”ฎ Real-time collaboration tools
  • ๐Ÿ”ฎ Multi-language support (i18n)

Phase 4 (Enterprise & Scale) - 2027

  • ๐Ÿ”ฎ Advanced multi-tenancy features
  • ๐Ÿ”ฎ SSO integrations (SAML, OAuth)
  • ๐Ÿ”ฎ Full standards compliance (SCORM 2004, xAPI, LTI 1.3, QTI 2.1)
  • ๐Ÿ”ฎ Advanced security features
  • ๐Ÿ”ฎ Performance optimization for 10k+ users
  • ๐Ÿ”ฎ Enterprise support & SLA options

๐Ÿ’ฌ Support

๐Ÿ™ Acknowledgments

Built with amazing open-source projects:


Made with โค๏ธ by argile agency | Website | Documentation

About

Learning Management System (LMS) made with Adonis JS framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •