https://github.com/rustysnek/elixirus
Alternative Frontend for Synergia Learning Managment System written in Elixir LiveView for better user experience.
https://github.com/rustysnek/elixirus
elixir-phoenix learning-management librus librus-api librus-apix liveview phoenix-framework students
Last synced: 2 months ago
JSON representation
Alternative Frontend for Synergia Learning Managment System written in Elixir LiveView for better user experience.
- Host: GitHub
- URL: https://github.com/rustysnek/elixirus
- Owner: RustySnek
- Created: 2023-11-29T09:02:36.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-26T09:27:21.000Z (9 months ago)
- Last Synced: 2025-04-26T09:30:30.803Z (9 months ago)
- Topics: elixir-phoenix, learning-management, librus, librus-api, librus-apix, liveview, phoenix-framework, students
- Language: Elixir
- Homepage: https://elixirus-test.rustysnek.xyz
- Size: 3.22 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

[](https://github.com/RustySnek/Elixirus/commits/master/)  
### ๐ A better replacement for Synergia Learning Managment System web interface
**Elixirus** is a web application written in Elixir Phoenix for the librus_apix web scraper, providing a superior replacement for the native Librus web interface.
Check out the app [here](https://elixirus.rustysnek.xyz)
Check out the mock-api test deployment [here](https://elixirus-test.rustysnek.xyz)
### Core Features ๐
- **Data Caching**: Efficient data caching for faster load times. โก
- **Token Management**: Flexibly maintains tokens inside *ets* Erlang memory storage, allowing users the option to enable or disable token storing for refreshing purposes ๐
- **Seamless Experience**: Enjoy a smooth and uninterrupted user experience. ๐
### [Push Notifications](https://github.com/RustySnek/Elixirus/blob/ntfy_notifications/docs/notifications.md) ๐ฒ
- Elixirus supports notifications using [ntfy.sh](https://ntfy.sh/)
- Setup notifications guide [here](https://github.com/RustySnek/Elixirus/tree/master/docs/notifications.md)
### Additional Features ๐
- **Attendance Calculation**: Calculates the total % absence/attendance for every semester and full year. ๐
- **GPA Calculation**: Calculates semestral and yearly GPA. ๐
### Deployment Features ๐
- **Docker Support**: Easily deploy using the provided Dockerfile. ๐ณ
- **CI/CD Integration**: Automated workflows with GitHub CI/CD. ๐
- **Python Integration**: Utilize Python libraries through erlport using Venomous. ๐
- **HTTP Proxy Support**: Bypass API blocks with proxy support. ๐
- **Health Checks**: Monitor connection health with integrated health checks. โค๏ธ
### Anti Features ๐
- Notifications are only present when the Token is being kept and refreshed server-side ๐
## Tech used ๐ง
* [Phoenix LiveView](https://github.com/phoenixframework/phoenix_live_view) - Rich, real-time user experiences with server-rendered HTML ๐ฅ๐ฆ
* [bun](https://github.com/oven-sh/bun) - Incredibly fast JavaScript runtime, bundler, test runner, and package manager ๐ฅ
* [Venomous](https://github.com/rustysnek/Venomous) - Connecting Elixir with Python ๐งช โค๏ธ ๐
* [librus-apix](https://github.com/RustySnek/librus-apix) - Web Scraper for Librus Synergia written in Python ๐ช๐
## ๐ ๏ธ Working with devenv
Run `direnv allow` to allow `.envrc` execution
## Prerequisites โ
* bun
* erlang
* elixir 1.17.x
* python 3.11
* pip
## Setup โ
Set MIX_BUN_PATH (location of bun executable)):
```sh
export MIX_BUN_PATH=$(which bun)
```
Install mix and bun dependancies:
```sh
mix deps.get
bun install
```
* ### Start Phoenix endpoint with `mix phx.server` or inside IEx with `iex -S mix phx.server`
Now you can visit [`localhost:4001`](http://localhost:4001) from your browser.
## Deploy ๐
โ๏ธ Check out [example on deploying to remote NixOS machine with Colmena](https://github.com/RustySnek/elixirus-nix/blob/master/elixirus.nix)
๐ Docker
* you can pull the existing container with
```sh
docker pull ghcr.io/rustysnek/elixirus:latest
```
* with docker-compose
You will need
- SECRET_BASE_KEY (mix phx.gen.secret)
```sh
docker-compose up --build
```