Giter Site home page Giter Site logo

roll-for-init's Introduction

Roll For Init

A character creator and interactive character sheet web application for the 5e ruleset of the most popular TTRPG in the world. See it live at rollforinit.herokuapp.com! Due to the nature of the hosting, you may need to refresh a few minutes after the initial load to get the full site.

Demo

Want to see what it's all about? Please see the demo here!

Demo

To Run

To run this application, create a file secret.env in the root directory following the guide below. Ensure MONGODB_URI_RULESET is populated with the ruleset from the 5e-database. Then, in the root directory, simply run:

npm install
npm run start

Required Environment Variables

  • JWT_SECRET
    • A secret code such as a uuid.
  • REDIS_URL
    • Redis URI and protocol (similar to MONGODB_URI) for 5e-srd-api.
    • No need to run local redis-server.
  • MONGODB_URI
    • Production database for user data
  • MONGODB_URI_DEV
    • Development database for user data
  • MONGODB_URI_RULESET
    • Database for ruleset data (read-only)

Additional Environment Variables

  • PORT
    • Main port for the web application, defaults to 8080
  • PORT_API
    • Separate port for the API, defaults to 3005
  • NODE_ENV
    • Set to 'production' if you are building for deployment
    • Set to 'development' if you are developing
  • LEGACY_WATCH=1
    • Try adding this flag if you cannot get nodemon to update on changes
  • SILENCE_WEBPACK=1
    • Add this flag if you want to silence webpack output

GitHub Ettiquette

  • Commit new features to SEPARATE BRANCHES. Never commit to master.
  • Pull often and frequently.
  • Ensure that your commits are frequent and descriptive.

Built With

roll-for-init's People

Contributors

ajohnsonhogan avatar kaseykaufmann avatar misaacs21 avatar seanpstanley avatar spencerbass avatar

Watchers

 avatar

roll-for-init's Issues

No warning on navigating away from page

Character creator should give you a warning if you try to leave (browser back button if possible, any click to an area outside character creation) to avoid mistakes

User cannot navigate to previous pages in the character creator without (seemingly) having to fill everything out again, and then the future pages are locked to them

Need to be able to:

  1. navaigate to previous pages and see your choices (ie Race) and what you've selected (i.e. what proficiencies, spells, equipment...)
  2. upon navigation to a previous page, click on the left sidebar buttons to get back to where you were--no clicking through each and every page until you get back to where you were before. the left sidebar buttons should NEVER go back to "disabled"

equipment card shortlist display issue

for the right sidebar, the shortlist will only include selections from cards with dropdowns if the dropdown is selected after the card is selected.

possible solutions: make the dropdown unselectable unless the card is selected

&& cards issue in equipment

seems like cards with an item && a dropdown cause a problem during validation, i.e. shield and martial weapon dropdown

general styling

draconic ancestry dropdown (and only that one) for sorcerer has an extra 5px margin on the left and right for some reason
floating label text is on top of popover
dropdown title sits on top of popover
popover card casts shadow on its own arrow
class cards at top of page are uneven
description height/age/etc cards are not centered on mobile

User sign up flow is broken.

Displays "check form for errors" on sign up submission but does not indicate errors and no errors are seemingly made

redux state containing all proficiency choices made by user

then passed to items in dropdown where it's filtered and removed
maybe each dropdown gets an object containing an array in the state, and that state is accessed via state key. the object inside the state array represents a single dropdown, and the array contains all of the choices for that given dropdown, and it's just updated wholesale any time a change is made, so we don't have to worry about removing individual deselections.

misc character creation ui issues

no hover change on race/class icon cards
racial trait card tables not spaced correctly
racial trait cards should use read more/less
saving throw proficiencies are listed twice on class page
ability card container is too narrow
spells page container label font size too small
no indication of equipment card being "inactive" due to the other one being chosen; copy spells page styling for that

tool proficiciencies are not validated properly

they have the key proficiency-proficiency due to their type being proficiency in the db and having a very varied title style ('lute', 'brewer's supplies', 'boat', etc...)

Will need to handle tools as the "else" case and ensure that no proficiencies incorrectly fall in there

More dropdown errors

  • equipment screen will display choose 2 but not allow you to choose 2 (is this meant to be choose 2 or choose 1?)
  • alignment says choose 2 but should say choose 1

{limit} is undefined on spells for classes with limit = 1

found issue on cleric, untested on other classes with choose limit of 1. the number doesn't show up in the title if the choose limit is one, it just says "cantrips - choose". for classes with non-1 limits, like bard, it works fine. if you switch the way limit is printed to {Choose ${limit}}, it instead prints "cantrips - choose undefined"

No duplicate email handling for user registration

Unexpected error: MongoError: E11000 duplicate key error collection: userSpecific.users index: email_1 dup key: { email: "[email protected]" }
[0] at Function.create (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\core\error.js:57:12)
[0] at toError (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\utils.js:123:22)
[0] at E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\operations\common_functions.js:258:39
[0] at handler (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\core\sdam\topology.js:943:24)
[0] at E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\cmap\connection_pool.js:350:13
[0] at handleOperationResult (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\core\sdam\server.js:558:5)
[0] at MessageStream.messageHandler (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\cmap\connection.js:277:5)
[0] at MessageStream.emit (events.js:315:20)
[0] at processIncomingData (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\cmap\message_stream.js:144:12)
[0] at MessageStream._write (E:\Users\Michaela\Documents\Roll-For-Init\Roll-For-Init\node_modules\mongodb\lib\cmap\message_stream.js:42:5)
[0] at writeOrBuffer (internal/streams/writable.js:358:12)
[0] at MessageStream.Writable.write (internal/streams/writable.js:303:10)
[0] at TLSSocket.ondata (internal/streams/readable.js:719:22)
[0] at TLSSocket.emit (events.js:315:20)
[0] at addChunk (internal/streams/readable.js:309:12)
[0] at readableAddChunk (internal/streams/readable.js:284:9) {
[0] driver: true,
[0] index: 0,
[0] code: 11000,
[0] keyPattern: { email: 1 },
[0] keyValue: { email: '[email protected]' }
[0] }

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.