README.md

June 8, 2026 · View on GitHub

Equip logo

Equip

A free, open-source learning management system built for Bible schools, church ministries, and nonprofit educational programs.

MIT License Backend CI Frontend CI Good first issues Code coverage OpenSSF Scorecard

Live demo · Roadmap · Contributing · Support · Changelog


Screenshots

Equip login page — two-column layout with scripture on the left and a clean sign-in form on the right
Sign in (light)
Equip login page in dark mode
Sign in (dark)
Equip account creation with a Student or Teacher role chooser
Account creation — student / teacher role picker
Equip sign-in on a 390px mobile viewport
Mobile (390px)

Live at equipbible.com. Teacher and admin views (gradebook, course editor, analytics) are behind sign-in — create a free account to explore.


Why this project?

Hundreds of small Bible schools, home churches, and missionary training programs around the world still manage courses on paper, WhatsApp, or spreadsheets. Commercial LMS platforms are expensive, overkill, or require technical expertise that volunteer-run organizations simply don't have.

Equip is designed to change that:

  • Free forever — MIT-licensed, no paywalls, no "premium" tiers.
  • Simple to deploy — one-click Vercel deploy with a free Supabase database. No Docker, no servers to manage.
  • Built for small scale — optimized for 20-100 students, not enterprise pricing models.
  • Contributor-friendly — clear docs, conventional commits, issue templates, and a welcoming community.

Features

AreaWhat you get
Course authoringCourses, modules, chapters, rich content blocks (TipTap editor with images, YouTube, callouts, audio)
AssessmentsMultiple-choice, true/false, short-answer, and essay quizzes with attempt limits and teacher grading
AssignmentsStudent submissions, grading queue, automatic chapter completion
Progress trackingPer-chapter progress, module/course completion, enrollment management
CertificatesAuto-generated certificates with teacher approval flow
Teacher toolsGradebook, analytics dashboard, cohort management, calendar, announcements
Admin toolsUser management, bulk operations, CSV export, course cloning, soft delete
DesignEditorial aesthetic, dark/light theme, responsive (360px+), HSL semantic tokens
Bilingual content (RU↔EN)Auto-translation of all teacher-authored text via Gemini, stored per (entity, field, locale) in the content_versions table; canonical KJV / Synodal substitution for Bible quotes; symmetric — author writes in their language, students read in theirs; off-the-request-path via a cron-driven worker queue so publishing stays instant even on 100-block courses
SecurityRLS on every table, server-side HTML sanitization, CORS lockdown, audit pipeline, typed error envelope ({code, message, context}) for structured client + Sentry handling

Tech stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, shadcn/ui, TipTap, Radix
BackendPython 3.12, FastAPI, SQLAlchemy 2, Pydantic 2
DatabasePostgreSQL (Supabase) with Row Level Security
AuthSupabase Auth (Google OAuth + email/password)
StorageSupabase Storage (avatars, course assets, materials)
DeployVercel (static frontend + Python serverless backend)
CI/CDGitHub Actions (lint, typecheck, test, audit) + Dependabot

Quick start

Prerequisites

  • Node.js 22.x (.nvmrc pins 22.18.0), npm >= 10
  • Python 3.12
  • A free Supabase project (or just run backend tests with SQLite — no Supabase needed)

1. Clone and install

git clone https://github.com/<your-username>/equip.git
cd equip

# Frontend
cd frontend && npm ci && cd ..

# Backend
cd backend && pip install -r requirements.txt && cd ..

2. Configure environment

cp frontend/.env.example frontend/.env.local   # fill in VITE_* vars
cp backend/.env.example  backend/.env           # fill in Supabase creds

See each .env.example for a description of every variable.

3. Start development

# Terminal 1 — API
cd backend && uvicorn app.main:app --reload     # http://localhost:8000

# Terminal 2 — SPA
cd frontend && npm run dev                      # http://localhost:5173

4. Run tests

cd backend  && python -m pytest tests/    # 1400+ tests (SQLite in-memory)
cd frontend && npm run test:run           # Vitest + jsdom
cd frontend && npm run i18n:check         # bilingual locale parity (en.json ↔ ru.json)

Project structure

backend/            Python FastAPI application
  app/
    api/v1/         Route modules
    core/           Config, database, auth helpers
    models/         SQLAlchemy ORM models
    schemas/        Pydantic request/response schemas
    services/       Business logic
  tests/            pytest suite

frontend/           React SPA (Vite + TypeScript)
  src/
    components/     UI components (shadcn/ui + custom)
    pages/          Route-level pages
    services/       API client + Supabase helpers
    context/        React contexts (auth, theme)

supabase/
  migrations/       SQL migration files (production schema source of truth)

.github/
  workflows/        CI pipelines
  ISSUE_TEMPLATE/   Bug report and feature request forms

Contributing

We welcome contributions of all sizes — from typo fixes to new features.

  1. Read CONTRIBUTING.md for setup and workflow details.
  2. Check open issues — look for the good first issue label if you're new.
  3. See the ROADMAP for bigger-picture direction.

We especially welcome:

  • Nonprofit Bible schools sharing their real-world needs
  • Designers improving the student/teacher experience
  • Translators reviewing and refining the AI-translated content (the platform is already RU↔EN bilingual; human review of the canonical Bible-school terminology is what would push quality from "good" to "great")
  • QA testers finding and reporting bugs

For nonprofits

If you're a Bible school, ministry, or educational nonprofit considering this platform:

  • It's free. MIT license means you can use, modify, and deploy it with zero cost.
  • No vendor lock-in. Host it yourself or use the free tiers of Vercel + Supabase.
  • You don't need a developer on staff. Follow the quick start above, or open a discussion and the community will help.
  • Your feedback shapes the product. Open a feature request — the roadmap is driven by real ministry needs.

How Equip compares

There are great LMS options out there. Equip exists in a specific gap they don't fill well: a small Bible school or ministry that wants something modern, free, and Bible-aware without standing up a full LAMP server or paying per student.

EquipMoodleGoogle ClassroomCanvas LMS
License / costMIT, freeGPL, freeFreePer-user fees
Self-hostedOne-click Vercel + Supabase free tierLAMP server you maintainSaaS onlySaaS only
Setup effortMinutesHours to daysNoneNone
UIModern, theme-aware (light + dark)Functional, datedModernModern
Scripture handlingKJV / Synodal substitution, paraphrase guardNoneNoneNone
Bilingual contentAuto RU↔EN via Gemini, cachedManual i18nNoneManual i18n
Code customizationTypeScript + PythonPHP pluginsClosed sourceClosed source
Best fitSmall ministries, 20–100 studentsUniversities, 1000+ studentsK–12 in Google WorkspaceEnterprise with budget

Pick Moodle if you have IT staff and need every feature ever shipped. Pick Canvas if budget isn't a constraint. Pick Google Classroom if your students already live in Google Workspace and you don't need certificates or real assessments. Pick Equip if you want a small, modern, scripture-aware platform you can deploy in an afternoon.


Documentation

AudienceDocument
ContributorsCONTRIBUTING.md — setup, workflow, conventions
Designers / UI workdocs/DESIGN.md — aesthetic, tokens, motion, banned patterns
Component reusedocs/COMPONENTS.md — the patterns library (<Badge>, <StatCard>, <EmptyState>, …)
Translators / i18n workdocs/I18N.md — bilingual workflow, locale files, key parity
Architecturedocs/adr/ — Architecture Decision Records
Cross-cutting UI callsdocs/UI-DECISIONS.md — frozen UI decisions log
Running in productiondocs/OBSERVABILITY.md — monitoring, log forwarding, incident debugging
Dashboards / metricsdocs/datadog/ — Datadog dashboard + monitor JSON specs
Security disclosureSECURITY.md

Community


License

MIT — free for personal, educational, and commercial use.