An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

elixirus

[![Updated Badge](https://badges.pufler.dev/updated/rustysnek/elixirus)](https://github.com/RustySnek/Elixirus/commits/master/) ![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr/rustysnek/elixirus?style=flat-square) ![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/rustysnek/elixirus?style=flat-square)







### ๐Ÿ“’ 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
```