Coder Social home page Coder Social logo

scottbenton / iron-fellowship_and_crew-link Goto Github PK

View Code? Open in Web Editor NEW
21.0 3.0 11.0 17.3 MB

Character Sheets and Campaign Managers for Ironsworn and Starforged. Features online integration for shared play. Iron Fellowship: https://iron-fellowship.scottbenton.dev Crew Link: https://starforged-crew-link.scottbenton.dev/

HTML 0.05% TypeScript 99.88% JavaScript 0.06%
ironsworn ttrpg starforged

iron-fellowship_and_crew-link's Introduction

Iron Fellowship

Iron Fellowship | Crew Link

Welcome! Iron Fellowship and Crew Link are applications for anyone playing the Tabletop RPGs Ironsworn or Starforged to use. Featuring clean character sheets, campaigns with shared assets and tracks, and cloud sync across all your devices.

Features

Character Sheet

Character Sheet Screenshot Character Sheet Screenshot

  • Quickly view your characters stats.
  • View moves, oracles, and use the built in dice roller to determine success or failure.
  • View and update your character's assets, even creating your own custom asset cards.
  • Update personal and shared tracks.
  • Share a supply track with other members of your campaign.
  • Write notes
  • Keep track of locations, NPCs, and lore within your world

Campaigns

Character Sheet Screenshot Character Sheet Screenshot

  • Share a supply track, vows, and more with your party.
  • Keep shared notes by adding a world to your campaign
  • Invite new players to your campaign with a simple invite link.

GM Screen

Character Sheet Screenshot Character Sheet Screenshot

  • Keep track of your character's stats and assets
  • Run combat, or update group progress tracks
  • Keep detailed session notes
  • Add hidden NPCs or Locations that you can make visible when your party goes somewhere new

Future Changes

There is more to come for Iron Fellowship and Crew Link. We have lots of items on the backlog, which you can view here. To suggest changes and give feedback, you can chime in on existing issues or create new ones here. Keep checking back!

Thanks

Thank you to...

  • Everyone who has contributed code to Iron Fellowship
  • Shawn Tomkin for the permissive license on his game, Ironsworn
  • GCoulby for creating Ironsworn Companion, and allowing me picks his brain, use his code, and steal assets to use in this app
  • RSek for creating Datasworn, which this project uses

Contributing

See CONTRIBUTING.MD

Licensing

Ironsworn

This work is based on Ironsworn, created by Shawn Tomkin, and licensed for our use under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.

Starforged

This work is based on Ironsworn: Starforged, created by Shawn Tomkin, and licensed for our use under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.

iron-fellowship_and_crew-link's People

Contributors

annabranco avatar cptleo92 avatar fracergu avatar meathox avatar scazan avatar scottbenton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

iron-fellowship_and_crew-link's Issues

Organize API Calls

Move API Calls from individual pages and stores to the src/api folder. Further organize them by feature (campaign, character/assets, etc).

The API calls should also be updated to all have a similar structure ((params: params) => Promise<T> for most queries, and (params: Params) => Promise<boolean> for most mutations).

If possible, I would also like to create a couple of hooks, useQuery and useMutation that allow us to pass one of those API functions, and automatically loading states and errors.

Add ability to edit progress tracks

Users should be able to edit progress tracks while maintaining general progress on the vow. Because difficulty scales to the vow, the progress should scale as well.

Hide "Delve" moves behind an optional flag in character or campaign settings.

As a player, I don't want to see delve moves unless either myself (if playing solo) or my campaign (if the character is in a campaign) has turned on delve moves.

Approx Steps:

  1. In moves.ts, separate normal (moves.json source = "Ironsworn Rulebook") vs delve (moves.json source = Ironsworn: Delve`) moves into separate arrays
  2. Add an optional settings object to both the Character and Campaign types, both with an optional key for delveEnabled
  3. Add an API call to update each of those types (follow format in api folder)
  4. Add a settings section to the "Character" tab in the Character sheet with a checkbox for "Use Optional Delve Rules". If the character is in a campaign, disable this section and tell the user that it can be updated on the campaign page (add link).
  5. Add a settings section to the CampaignSheetPage with a checkbox for "Use Optional Delve Rules"
  6. If the character is in a campaign, and the delve rules are enabled in the campaign, show the delve moves in the character sheet
  7. If the character is not in a campaign, and the delve rules are enabled for this character, show the delve moves in the character sheet.
  8. If delve rules are enabled for a campaign, show the delve rules in the GM Sheet Page

Oracle Updates

Oracle List Changes

  • View tables
  • Change "roll" section of table to be at least as wide as the content
  • Add filter bar
  • Add ability to pin oracles to the top

Oracle Snackbar styling updates

  • Roll results should be left aligned, have a max width of 60ch, and should use body font
  • On mobile, they shouldn't touch the left side of the screen
  • Need to support basic markdown

Allow users to leave campaigns

Users should have the ability to leave a campaign. Leaving the campaign should do the following:

  • If the player has any characters in the campaign, remove them. Remove the campaignId from the character object in the database
  • Remove the user's uid from the list of players
  • Remove the campaignId from any characters the user has in the campaign
  • If the user is the GM, remove them from the GM position
  • If there are no users left in the campaign, delete it and all subcollections.

The "Leave Campaign" action should be added to the CampaignActionsMenu component - this component is currently only for GMs, so some work will need to be done to ensure the GM's actions are only available to the GM

Add GM View to the Campaign Sheet page

If a user is marked as a GM in a campaign, they should have access to an overview sheet that they can use while DMing. This sheet should list out the moves the characters can take, shared asset tracks for the campaign, and the stats & assets of each character.

  • Moves
  • Shared Asset Tracks
  • Stats & Assets
  • Oracles (Will be addressed in #8)
  • Foes (Will be addressed in #9)
  • NPCs (Will be addressed in #10)
  • Notes (Will be addressed in #2)

Add Foes

Add a Foes section, where users can create fights against foes.

In a campaign, the GM should be able to create these, and the asset track should show up to the character sheets as a combat track. On the gm view, the extra tactical information should be present.

For solo play, everything should appear in the combat tab of the character sheet.

New notes page fixes

When creating a new notes page, we should not create an extra new line underneath the title. We should also auto-open that new note.

Stop ghost characters from being created

Whenever a user visits a campaign gm-sheet or a character sheet for a campaign or character that doesn't exist, a new entry will appear in the database for that character or campaign, adding a settings document for both of them.

We should block the call to fetch campaign/character settings (and probably our other settings calls) until the main document has loaded, or find a way to update those documents that doesn't rely on us creating initial documents in our listeners.

Add search bar to Moves list

There are a lot of moves, so being able to quickly find the right one would help the flow of the game. Adding a search bar to the top of the section to filter using .contains on the move label would be a big help. If the search bar contains text, a button to clear it would be useful.

Replace usages of "confirm" with actual <Dialog> elements

I've been super lazy, and have used the native browser confirmation prompt in a few places when checking if a user wants to delete a character, campaign, or asset. These should be removed and replaced by a <ConfirmDeleteDialog /> component that uses a mui dialog component.

Use Dataforged for Oracles

Update current oracle functionality to work based off of the dataforged oracles. This includes adding oracle support to the moves dialog, and adding the ability for users to connect their Custom Moves to oracles. We may as well tackle #59 while we are at it.

Add Oracle rollers

Adding the ability for GMs and solo players to access the oracle will be a huge help.

The following changes will need to be made:

On the GM side, the GM view should add a section for the oracle.
On the player side, if the character is not in a campaign, the oracle tab should appear in their character sheet, allowing them to view the same oracle section as for the GM.

We need to add a d100 roller to our DieRollProvider, and to display the results in a nice way.

Moves that have a player rolling a d100 should also add a button to roll.

Values for the oracle can be found here

Add Initiative View

Players should have the ability to mark their character as the following statuses:

  • In Initiative
  • Out of Initiative
  • Out of Combat

These statuses should show up on the CampaignSheetPage and the GMSheetPage

Add a landing page

Iron Fellowship should have a landing page to allow new/interested users to quickly understand the project. If a user has an account, we should redirect them to /characters

Allow GMs to create custom oracle tables

GMs should be able to create and edit custom oracle tables (saved to /user/${uid}/settings/oracle). These tables should show up just under the pinned section in a Custom Oracles section

Add a dark mode

The dark mode toggle should live under the user's profile image in the top right-hand corner. It should default to the user's browser theme preference, but should store any changes the user makes besides that to local storage to persist them.
The dark mode theme should be a separate file, and the the secondary colors might need to be tweaked a bit.
We then need to go through each page & feature to make sure the styling is updated properly - GrayText should be come textSecondary for example, and we may need to add a tertiary text color as well.

Fix "Stats are Required" error text from displaying early on Character Creation screen.

Image

Steps to reproduce:

1: Create an account on Iron Fellowship.
2. Click the "Create a Character" button the "character" tab
3. Click the "Name" input and begin typing
4. Notice the error message appearing beneath the "Stats" text.

Fix notes:
I'm probably just missing a check to make sure the field has been touched, and that we are displaying errors. The other fields work properly, use them as references.

Add NPCs

Users and DMs should share an NPC view.

NPCs should be searchable, and should allow users to add bonds with them and add shared notes.
Adding a bond with an NPC should increase a character's bond track by 1

Add notes feature

Add a note taking feature to the application, both for Player's and DMs.

On the player side, a new Tab should be added for "Notes", with notes being stored in a /characters/${characterId}/notes subcollection.
On the DM side, this should be added to the "GM" view in the Campaign Sheet, with notes being stored on the campaign in a /campaign/${campaignId}/gm/notes subcollection.

Users should be able to add new pages to their notes section (ordered by date, newest first). Pages should have titles to display on a tab selection. Notes should support rich text.

Hidden Oracle Bug

Steps to reproduce
1: Add a custom oracle to a custom move
2: Set the custom oracle's visibility to "hidden"
3: Try to edit the custom move

Update Readme

Once we are about ready to release v1.0.0 of Iron Fellowship, we should update our README with up to date information on the project.

Add the ability for a user to mark themself as a GM in the campaign sheet

Add a new optional database variable to the campaign database, gmId.

If the gmId is not set, we need to add another button on the CampaignSheetPage for a user to mark themselves as a GM.

If a GM id is set, and the current user is the GM, we should give them the ability to delete the campaign, or remove themselves as the GM.

If the GM leaves the campaign, the gmId should be unset.

Allow GMs to create custom moves

GMs and solo players should be able to create custom moves for their campaigns and characters.
In a campaign, we should create a new collection for these settings. Perhaps /campaigns/${campaignId}/settings/moves
For a solo player, we should create a new collection for these settings. Perhaps /characters/${uid}/characters/${characterId}/settings/moves

These moves should be displayed in the moves list under a "Custom Moves" category at the bottom.

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.