Ultros is a Final Fantasy XIV market board analysis tool that utilizes data sourced from Universalis. Blazingly fast and written in Rust.
Uses Axum, Leptos, SeaOrm, and Serenity to create something that works most the time!
Currently hosted with hetzner via https://ultros.app
A userguide is available here
Ultros requires a nightly rust toolchain which can be acquired with rustup
. Check (rustup.rs)[https://rustup.rs] for more details.
This project utilizes git submodules to bring in assets. Since I'm not smart enough to put this into a build script, you must use git submodule update --init
or git clone --recursive
when cloning the project.
The project can be run with cargo-leptos
, assuming a Rust toolchain is installed you can install it with cargo install cargo-leptos --locked
. Then use cargo leptos serve
or cargo leptos watch
. Add --release
to enable optimizations.
The application also requires a Postgresql database to operate and a Discord application token.
Currently am experimenting with running ads on the site to see how much revenue can be generated. Ideally, I'd like to get the site hosting expenses covered without trying to coerce community members into donating. The ads are entirely opt out via the settings page, and adblocks will continue working.
DISCORD_TOKEN
- A discord bot tokenDATABASE_URL
- Postgres connection stringDISCORD_CLIENT_ID
- ID of your Discord applicationDISCORD_CLIENT_SECRET
- Client secret of your Discord applicationHOSTNAME
- Address that your app is hosted at. Necessary to get OAuth to work.KEY
- A secret hash used to encrypt cookiesRUST_LOG
- Log level to log at. ex:RUST_LOG=ultros=info,warn
Contributing is always appreciated - this project is still just a hobby for me. Feel free to open an issue, submit a PR, or contact me directly with feedback and changes requested.
This repo has been my sandbox for FFXIV projects, and still has unused crates within the repo for reference, but might not compile or be maintained.
ultros
- Main crate for the ultros website. Contains main axum initialization and discord.ultros-db
- Ultros' datastore. Uses SeaOrm to store data in Postgres.migration
- SeaOrm migration executable to run executables.xiv-gen
- Generates structs that represent ffxiv scraped data sourced from https://github.com/xivapi/ffxiv-datamining, or rawexd from SaintCoinarch.xiv-gen-db
- Statically embeds a compressed file containing xiv data.ultros-api-types
- Common API types between the frontend and backenduniversalis
- API wrapper for Universalis, contains a websocket API and a simple HTTP client using reqwest internally.ultros-frontend
- Frontend crates for ultros, primarily driven by leptos.ultros-app
- Main leptos app code.ultros-client
- WASM Client for ultros-app. Basically just provides some context and an init function.ultros-xiv-icons
- An attempt to bundle assets using Rust build.rs files and then statically including them