$ show ffxiv-teamcraft/ffxiv-teamcraft
This is a large, production-grade collaborative crafting companion for Final Fantasy XIV, consisting of an Angular web application (with SSR) and an Electron desktop client, plus a NestJS API and Firebase backend. The primary functionality includes crafting list management with tree-based ingredient breakdown, a full crafting rotation simulator, gearset planning with stat calculations and materia optimization, real-time gathering alarms based on Eorzea time and weather, marketboard price tracking via Universalis, inventory capture and optimization, fishing data and cooperative fishing train tool, commission board for player-to-player crafting services, free company workshop and airship/submarine management, island sanctuary workshop optimization, and a crowd-sourced data reporting system (Allagan Reports) for fish/hookset/bite times and desynthesis results. The codebase demonstrates advanced Angular/NgRx patterns, extensive use of RxJS for reactive data flows, a sophisticated lazy data loading system for game data extracted from the FFXIV client, and tight desktop integration via Electron IPC and packet capture. While there are some legacy patterns and a large feature surface that introduces maintenance complexity, the architecture is well-separated into libraries, the core data abstraction (LazyDataFacade, FirestoreRelationalStorage, base dialog components) is highly reusable, and the project remains actively developed with a large user and contributor community.
The LLM identified 3 files worth highlighting for reuse:
Provides a generic Firestore relational storage base class with support for foreign key relationships (via @ForeignKey decorator), automatic nested document handling, caching, transactions, and batch operations. This is the foundation for all user data services (alarms, gearsets, rotations, teams, commissions, etc.) and can be extracted for any Angular + Firestore project requiring typed relational persistence with minimal boilerplate.
A custom RxJS operator that safely combines an array of observables, returning an empty array instead of emitting nothing when the source array is empty. This solves a common pain point when working with dynamic lists of streams and is a standalone, zero-dependency utility that can be reused in any Angular or RxJS project.
A generic base class for Angular component-based modals, providing patchData(), close(), and loading state management. It integrates with ng-zorro-antd's modal service and abstracts common modal boilerplate (confirm/cancel logic, button states). This pattern is used across dozens of popup components and can be extracted as a reusable building block for any Angular application using Ant Design modals.