Skip to content

jellymai/BridgeEd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BridgeEd — Offline LMS

An offline-first Learning Management System designed for Philippine classrooms. It runs as a single executable that serves content over a local WiFi hotspot — no internet required.

Prerequisites

  • Go 1.24 or later
  • Git
  • Make (optional, for convenience targets)

Quick Start

# Install dependencies
go mod tidy

# Run in development mode
make dev

The app will:

  • Create a ./data directory for the database
  • Find an available port (starting from 8080)
  • Detect your local/hotspot IP
  • Open the Teacher CMS in your browser

Building

# Build for your current platform (output: dist/offline-lms)
make build

# Cross-compile for all platforms (output: dist/)
make build-all

# Build with a version tag
make build VERSION=1.0.0

Without Make

go build -ldflags "-s -w" -o offline-lms .

Cross-compilation targets

Platform Binary
Windows amd64 dist/offline-lms-windows-amd64.exe
Linux amd64 dist/offline-lms-linux-amd64
Linux arm64 dist/offline-lms-linux-arm64
macOS amd64 dist/offline-lms-darwin-amd64
macOS arm64 dist/offline-lms-darwin-arm64

Running

# Using Make
make dev

# Or directly
./dist/offline-lms --dir=./data

# Custom port
./dist/offline-lms --dir=./data --http=0.0.0.0:9090

Testing

make test

Runs all tests with race detection and coverage reporting.

Usage

  1. Setup Hotspot:

    • Windows: Settings > Network & Internet > Mobile Hotspot > Toggle On
    • macOS: System Settings > General > Sharing > Internet Sharing
    • Linux: Settings > Wi-Fi > Turn On Wi-Fi Hotspot
    • Android: Settings > Hotspot & Tethering > Wi-Fi Hotspot
  2. Run the app and create your first admin account at the PocketBase admin UI (http://localhost:<port>/_/).

  3. Teacher CMS (/teacher) — log in with admin credentials to create courses, modules, lessons, and upload resources.

  4. Student Portal (/) — students connect to the hotspot, scan the QR code from the Teacher Dashboard (or type the URL), and browse courses offline.

Resetting Admin Credentials

If you forget your admin email or password, you can create a new superuser from the command line:

./dist/offline-lms superuser create newadmin@school.edu yourNewPassword --dir=./data

Or, if you need to reset the entire database and start fresh:

rm -rf ./data

Then relaunch the app and create a new admin account at http://localhost:<port>/_/.

Project Structure

main.go                     Entry point, server config, embedded assets
internal/
  network/                  IP detection, QR code generation, port finding
  pocketbase/               Database schema and collection setup
web/
  teacher/                  Teacher CMS (Alpine.js)
  student/                  Student Portal (Vanilla JS)
  static/                   Shared assets (CSS, JS libraries)

Tech Stack

  • Backend: Go + PocketBase (embedded)
  • Database: SQLite (managed by PocketBase)
  • Frontend: Alpine.js (Teacher CMS), Vanilla JS (Student Portal)
  • Offline: All assets embedded in the single binary

About

An offline-first Learning Management System designed for Philippine classrooms. It runs as a single executable that serves content over a local WiFi hotspot.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors