Code Monkey home page Code Monkey logo

rustysnek / elixirus Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 0.0 2.93 MB

Alternative Frontend for Synergia Learning Managment System written in Elixir LiveView for better user experience.

Home Page: https://elixirus.rustysnek.xyz

Elixir 58.58% CSS 0.50% JavaScript 3.54% Nix 0.22% HTML 26.79% Python 9.19% Shell 0.36% Dockerfile 0.80% Batchfile 0.02%
elixir-phoenix learning-management librus librus-api liveview phoenix-framework students librus-apix

elixirus's Introduction

Elixirus

Updated Badge GitHub Issues or Pull Requests GitHub Issues or Pull Requests

πŸ“’ 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.

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. 🌐
  • Elixirus supports notifications using ntfy.sh
  • Setup notifications guide here

Additional Features 🌟

  • Attendance Calculation: Calculate percentage attendance effortlessly. πŸ“Š
  • GPA Calculation: Compute semestral and yearly GPA with ease. πŸŽ“

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. 🐍
  • HTTP Proxy Support: Bypass API blocks with proxy support. 🌐
  • Health Checks: Monitor connection health with integrated health checks. ❀️

Anti Features πŸ›‘

  • UI design is far from perfect... πŸ’€
  • Notifications are only present when the Token is being kept and refreshed server-side πŸ”’

Tech used πŸ”§

  • Phoenix LiveView - Rich, real-time user experiences with server-rendered HTML πŸ”₯🐦
  • bun - Incredibly fast JavaScript runtime, bundler, test runner, and package manager πŸ₯–
  • erlport - Connecting Elixir with Python πŸ§ͺ ❀️ 🐍
  • 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.16.3
  • python 3.11
  • pip

Setup βœ…

  • To simplify setup you can run: initialize.sh script

  • Manual setup

    Set MIX_BUN_PATH (location of bun executable) and PYTHONPATH (location of python libraries for Erlport):

    export MIX_BUN_PATH=$(which bun)
    export PYTHONPATH="$PWD/priv/librus-apix:$PWD/priv/librus-apix/venv/lib/python3.11/site-packages"

    Install mix and bun dependancies:

    mix deps.get
    bun install

    Setup python environment:

    python -m venv $PWD/priv/librus-apix/venv
    source $PWD/priv/librus-apix/venv/bin/activate
    pip install -r $PWD/priv/librus-apix/requirements.txt
    deactivate
  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

    Now you can visit localhost:4001 from your browser.

Deploy πŸ‹

❄️ Check out example on deploying to remote NixOS machine with Colmena

πŸ‹ Docker

  • you can pull the existing container with
docker pull ghcr.io/rustysnek/elixirus:latest
  • with docker-compose You will need
    • SECRET_BASE_KEY (mix phx.gen.secret)
docker-compose up --build

elixirus's People

Contributors

dependabot[bot] avatar rustysnek avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

elixirus's Issues

Moar improvements ✨

Do something about scroll sensitivity on mobile in timetable -
Fix the initial semester value to be actually correct +
Add general average for each semester +
Group navigation into categories +
create overview for each category +

more features

Add schedule to timetableβœ”οΈ
Add healthcheck status + token status and option to keep it alive after logging in βœ”οΈ
Count total absences βœ”οΈ
Better dropdown placements for mobile βœ”οΈ
Next weeks for timetable βœ”οΈ
choose token ttl when logging in βœ”οΈ
reply in messages βœ”οΈ
Add google calendar to schedule
Next months for schedule
save timetable week in url
search messages
Save token ttl options in local storageβœ”οΈ

slow replies

as of now replies load all group's recipient's in search of recipient id. This takes some time and isn't really efficient. Find a better solution...

Fix stuff

  • fix semester cookie and add a way to select it βœ”οΈ
  • fix flowbite tooltips βœ…
  • fix mobile navigator β˜‘οΈ
  • add grade averages 🏁
  • add weight to grade view βœ…
  • maybe do something with how messsages look ~ postponed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.