프로젝트 소개

Ultros는 Final Fantasy XIV를 위한 실시간 장터 분석을 제공하는 오픈 소스 웹 애플리케이션입니다. ultros.app에서 호스팅되며 모든 데이터 센터를 지원하고, 앱 내 도움말 섹션을 통해 각 기능에 대한 설명을 제공합니다. 제공 기능 - Flip Finder: 데이터 센터 내 모든 서버를 스캔하여 저렴하게 구매해 홈 서버에서 되팔 수 있는 아이템을 찾아내며, 일일 수익, 판매 속도, 변동성 및 신뢰도 점수를 표시합니다. - 아이템 페이지: 실시간 서버 간 리스팅, 판매 기록 차트, 이상치가 필터링된 "실제 가격", 거래 가능 아이템의 상점/교환처 정보를 제공합니다. - 길 벌이 활동 분석기: 레시피 제작 수익(재료비 대비 판매가, 하위 제작 재귀 포함), 일거리 납품, 리테이너 벤처, 스크립 소모, 상점 되팔기 및 자유 회사 제작 분석을 지원합니다. - 시장 트렌드: 24시간 변동 아이템, 카테고리별 열기, 서버별 상승/하락 아이템을 보여줍니다. - 화폐 교환: 토큰, 스크립, 인장 및 기타 게임 내 화폐로 구매 가능한 거래 가능 아이템을 안내합니다. - 리스트: 최저가 리스팅 조회가 가능한 공유 가능 쇼핑 리스트를 제공합니다. - 리테이너 추적: 자신의 리스팅을 모니터링하고 가격 경쟁으로 밀렸을 때 알림을 받습니다. - 가격 알림: Discord DM 또는 웹훅을 통해 아이템별 가격 임계값 알림을 전달합니다. - Discord 봇: 서버 내에서 시장 조회 및 가격 경쟁 알림 기능을 제공합니다. 제작자는 이 프로젝트를 한 사람이 재미로 만든 취미 활동이라고 설명합니다. 호스팅 비용 충당을 위해 선택적 광고를 운영하며, 설정에서 광고를 비활성화할 수 있고 광고 차단 프로그램도 작동합니다. 기술 스택 전체 스택은 Rust로 구축되었습니다. 백엔드 웹 프레임워크로는 Axum, 풀스택 웹 프론트엔드로는 Leptos, 데이터베이스 액세스에는 SeaORM, Discord 봇에는 Serenity가 사용되었습니다. 시장 데이터는 Universalis API(HTTP 및 WebSocket)에서 실시간으로 가져옵니다. 저장소는 메인 `ultros` 백엔드, `ultros-frontend`(`ultros-app` 및 WASM `ultros-client` 포함), `ultros-db`, `ultros-api-types`, `universalis` 래퍼, 게임 데이터 생성 크레이트(`xiv-gen`, `xiv-gen-db`, `game-data-pack`, `icon-extract`) 및 `migration` 도구로 나뉩니다. 직접 실행하기 개발 전제 조건으로는 nightly Rust 툴체인, `data/` 하위의 게임 데이터 팩을 위한 Git LFS, 실행 중인 Postgres 인스턴스, 그리고 cargo-leptos가 필요합니다. 로컬 Postgres는 Docker로 시작할 수 있으며, `.env.example` 기반의 `.env` 파일에 Discord OAuth 자격 증명, 쿠키 암호화 키, 데이터베이스 URL, 포트 및 로그 설정을 입력합니다. 앱은 첫 부팅 시 데이터베이스 마이그레이션을 적용하고 Universalis에서 서버/지역 데이터를 가져옵니다. 게임 데이터(아이템 및 레시피 테이블, 아이템 아이콘)는 Git LFS로 관리되는 사전 생성 팩 형태로 제공되며 컴파일 시 내장됩니다. `game-data-pack` 도구를 사용하면 커뮤니티 ffxiv-datamining CSV 저장소에서 데이터를 재생성할 수 있으며, 아이콘의 경우 로컬 FFXIV 설치 경로의 SqPack 파일에서 추출할 수 있습니다. 버전 고정, 아이콘 제외 또는 비표준 게임 경로 지정 옵션이 제공됩니다. 이슈, 풀 리퀘스트 또는 프로젝트 Discord 서버를 통한 기여를 환영합니다. 이 프로젝트는 MIT 라이선스 하에 배포되며, README에는 코드베이스의 일부가 다소 무질서할 수 있다는 점이 명시되어 있습니다.