Skip to content

Repository files navigation

YASPO (Yet Another School Platform Online)

YASPO is a modern, self-hosted Learning Management System (LMS) and educational platform designed for single classes or organizations. It provides a complete suite of tools for educators to manage students, assignments, quizzes, grading, announcements, and live meetings.

Features

  • Classroom Management: Manage students, staff, and comprehensive grade sheets.
  • Assignments & Quizzes: Create AI-assisted quizzes and rich-text assignments.
  • Live Video Meetings: Built-in LiveKit integration for remote lectures and screen sharing.
  • Self-Hosted First: Entirely containerized and ready to deploy on your own infrastructure with zero third-party dependencies required.
  • Mobile Support: Comes with a native mobile application (Flutter) for students and educators.

🚀 Getting Started (Server Setup)

YASPO is designed to be extremely easy to deploy using Docker Compose. The default stack includes:

  • The .NET 9 Backend API (api)
  • The React/Vite Web Frontend (web)
  • A SQL Server Database (db)
  • MinIO for S3-compatible Object Storage (storage)
  • Caddy Reverse Proxy (proxy) for automatic HTTPS

Prerequisites

  • Docker
  • Docker Compose (v2)

1. Configure the Environment

By default, YASPO will use secure default passwords and start up automatically. However, for a production environment, you should create a .env file in the root directory to customize your deployment.

# The domain name your server will use (e.g. yaspo.example.com)
# If left blank or set to an IP address, Caddy will serve over HTTP instead of HTTPS.
DOMAIN=yaspo.example.com
SITE_ADDRESS=https://yaspo.example.com

# A secure password for the SQL Server database
DB_PASSWORD=YourSecurePassword123!

# A secure, random 32-character string for JWT token generation
JWT_SECRET=YourSuperSecretKeyNeedToBeLongEnough

# S3 Storage Configuration
# If you leave these blank, YASPO will use the built-in MinIO container by default.
# S3_URL=http://minio:9000
# S3_ACCESS_KEY=minioadmin
# S3_SECRET_KEY=minioadmin123

2. Start the Stack

Run the following command from the root directory to pull the images and start the services:

docker compose up -d

3. Initialize the First Admin Account

Because YASPO is self-hosted, you need to create your first administrative account to access the dashboard. Send a simple POST request to the backend:

curl -X POST "http://localhost/api/system/setup" \
     -H "Content-Type: application/json" \
     -d '{
           "adminEmail": "admin@yourdomain.com",
           "adminPassword": "SecureAdminPassword123!",
           "organizationName": "My Education Platform"
         }'

(If you configured a domain with HTTPS, change http://localhost to https://yaspo.example.com).

4. You're Done!

Navigate to your server's domain or IP address in your web browser. You can now log in using the admin credentials you just created.


Development

  • Backend: ASP.NET Core 9.0 API. See backend/README.md.
  • Frontend: React + Vite SPA. See web/README.md.
  • Mobile App: Flutter application for Android and iOS. See mobile/README.md.

About

TwoAxis YASPO

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages