Code Monkey home page Code Monkey logo

adventurerscodex's Introduction

Welcome to Adventurer’s Codex

Experience the next step in tabletop RPGs

What is it?

A fun, easy to use, Open Source tool for tabletop RPG players to manage their characters, campaigns, and parties. Our goal is to help you focus more on the game by bringing your paper character sheets into the 21st century.

Check out the site, or follow our blog.

For Players

Keep track of you character's equipment, skills, spells, saving throws, and more. Say goodbye to that eraser-marked character sheet, and say hello to the future!

For DMs

Manage your campaign by keeping track of enemies, and friendly NPCs, as well as any notes, maps, custom items, and whatever else you've created!

For Entire Parties

Take advantage of innovative features like group chat, party dashboard, and a combat management tool!

Getting Started

Adventurer's Codex is hosted at adventurerscodex.com, and you can use the app for free there.

Have questions or just want to chat?

Join the conversations on Discord or chat with us in the issues. We tend to hold a lot of discussions there and new features are always being hashed out. We'd love your feedback.

How can I contribute?

You should check out our Contributing wiki! We'd love the help! There you'll find information on how to set up your dev environment and how to submit PRs for new features and bugs. We have a slightly different branch structure than a lot of projects so please read our guidelines before starting. We don't want you to write the next big fix or feature and not be able to PR it.

If you're already familiar with contributing to open source projects, check out our Issue Label Guide to see what kind of tickets are available and what they mean.

adventurerscodex's People

Contributors

alejandroke avatar alxwrd avatar bmolparia avatar davidmote avatar dependabot[bot] avatar jkrooskos avatar m-martinez avatar macro1 avatar njol avatar nuubduud avatar omnespotens avatar sonictherocketman avatar tanyxp avatar valterlima avatar vertmo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adventurerscodex's Issues

Add Backpack Module

Backpack - Simple

  • A place for players to store their items
    • It has a name field, an a description (free form)
    • Maybe a weight?
  • The backpack keeps track of their overburdened status?
  • All local storage (w/ import/export)

At this point, there's no need for the backpack to do anything smart. That'll come later.

Scrape websites for item lists

Apparently, a public data repository of weapons, armor, and items is not available because copyright or something. So we might have to scrape other websites to get their lists or just hire an intern to do data entry. not it

Add Treasure Module

A treasure module at the very least should include:

Count of gp, pp, ep, cp, sp

Maybe a section to include items like, gold rings, tapestries, etc.

This is open for discussion and suggestions.

Styling and templating

Ok... hear me out on this. It sounds crazy but it's totally doable.

What if we were to use the terrain module (where users can select from stock images, or upload their own images) and we extracted the prominent colors from those images using this library and use that for the theme of our app?

This would allow us to change the look and feel of the app for different locations (and then we could shade it based on the time of day from the day/night widget using this).

Import fails if user data is blank

If data is exported from charactersheet, then imported, if user data is blank, upload will fail with message:

"Cannot read property 'user' of undefined"

Steps to recreate:

Clear Character Sheet (Export first to persist sheet)
Create a new sheet and leave all blank except playerName and level.
Export to file
Import file

Perhaps this should be tested with other module data with no field values as well.

Skills

Thinking about it, a skills module is just a list of things... like the spells/backpack module. Once either of those are done we copy/paste and change the labels. Then we're done.

Add multiuser support

  • Rename existing User model to Profile
  • Break out global clear/import/export to their own module (User)
  • Add global getKey function for returning a user key.
  • Add popover for switching users
  • getKey should grab a key from the URL, if present, else get default key from User model.
  • Migrate all existing modules to use getKey
  • Add getKey usage to docs.

Hit Dice

  • We can populate the # of hit dice with the level and animate the number of checkboxes for each HD.
  • Players can check and uncheck at will but the numbers are fixed.

Add Spell Slots Module

For each level, the user should have a bar and total for used/total spell slots. (look at the stats module health bar for UI example)

Add stats module

Stats - Simple

  • Health
  • Poisoned? Deaf? Etc.

This module should track the character's stats and have some very basic support for complications.

Time tracker

This might go under the day/night cycle module, but I'll make a new issue for it. This module is for those hardcore D&D players that want a granular output of EXACTLY what time it is. It would probably be used by the DM, but the players could also track time. This module would be a list of common events that take time. Ex: Looting bodies, traversing a room, walking a mile, resting x hours, etc. The user would go to the module, find the item that fits the time consuming event, fill in whatever parameters are necessary, (miles walked, bodies looted, walls inspected for secret doors) and then hit the 'add' button. This would then add the time from the event and add it to the "game clock", if you will. This should also persist, like the other modules, so that the time of day can be remembered from adventure to adventure.

What about a terrain (or boss) module?

It would be controlled by the DM and show an image of what the terrain looks like. It could have preset images (for mountain trail, cave, temple, etc) or the DM could upload their own image.

It could also be used to share a picture of an enemy that the characters see in front of them. What does it look like (stock images would work well for this)?

Create about page

  • It should describe what Adventurer's Codex is and what it does.
  • Describe our data policy
  • Have our contact email for issues.
  • Link to GH repo
  • List Open Source libs we use
  • List our names.
  • Link to the FAQ.

Design Communication Protocol for modules

We will need to design a schema for modules to send and receive data from the future network. This protocol should be able to handle any number of commands and message types.

This protocol will need to account for multiple users on the same machine and multiple commands. I'm thinking we add a standard mechanism for ViewModels to send messages via a standard message sending model.

Develop Messaging Module

This module should accept messages from other view models and send them to the server. On page load it should connect (via websockets) to the relay server and exchange a test message to check functionality.

Inside this module, it should keep a record of the types of commands it understands and where to send them. Upon receiving a message from the server, it should relay that message to the corresponding module.

See Issue #17 for more information on message structure and protocol info.

Note: All messages to/from the relay server should go through this module.

Add Ability Scores Module

Ability Scores

  • Strength
  • Dexterity
  • Intelligence
  • etc

All should be number fields <input type="number" ...> that way browsers will add the incr/decr toggles automatically.

I'm thinking we arrange them vertically with their labels to the left, but that's just an idea.

Finish profile module

Profile - Simple

  • Player name/Character name
  • Level
  • Exp
  • etc.
  • All local storage (w/ import/export)

USE data-bind="textInput: <prop>" for inputs and textareas

About

When binding a property to the value of an input or textarea use the textInput binding instead of the text binding.

See this.

The textInput binding links a text box () or text area (<textarea>) with a viewmodel property, providing two-way updates between the viewmodel property and the element’s value. Unlike the value binding, textInput provides instant updates from the DOM for all types of user input, including autocomplete, drag-and-drop, and clipboard events.

We need to make sure all future modules use this.

ToDo

  • update the profile module to reflect this.

Make Help page and FAQ

We need an FAQ and wiki for help.

  • Explain browser support
  • Explain data policy
  • Contact Email

Add to Stats

Armor Class, speed, initiative, and proficiency bonus

Add Notes Module

Notes - Simple

  • A place for players to put free form notes (html escaped)
  • All local storage (w/ import/export)

Proficiencies and Feats Module

We need a place for the players to track their feats and proficiencies. I'm not sure what kind of fields this should have so please @tanyxp @jkrooskos chime in with ideas.

I'm thinking it'll be something like the spell book or backpack module where it's a list of feats/proficiencies that they can type text in and maybe we can auto complete later on.

  • Name
  • Description
  • Bonus (& bonus-type?)

Thoughts?

Random Number Generator

I don't know if no one mentioned this one because we overlooked it or we don't want to include it, but a random number generator might be useful. It can have coin flips, dice rolls, or a dynamic range of values (give me a number between 25-32).

Equipment Module

Should contain the following:

  • body part - item
  • body part - item

i.e. Head - Helm of Brackkus

In my opinion we should try to not force too much here. We could say 'only 1 item on your head' but that might be too limiting for some play styles. I think we should limit ourselves to making a freeform list of body part to item.

Add spells module

Spells - Simple

  • What spells do they have? What level are they?
  • Spell slots per level (total/used)

Update Documentation

Contributing

  • Update contribution how to and flesh out details.
  • Update adding new modules

Update Readme

  • Add serving and supported browsers
  • Installing dependencies using bower

Flesh out the design docs

Design standard format for json databases

We plan to have autocomplete for a few different modules (backpack, equipment, spells, etc) so if we're going to have an autocomplete function it should be standard across all implementations. We need to specify our json format.

Nathaniel and I should work on this.

Adapt UI to Bootstrap grid.

We need the app to be responsive, right now it isn't. Using the bootstrap grid system will make it so.

There are also a number of modules (i.e. stats) that do not use the grid system to layout their components. They need to be converted to this layout.

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.