Giter Club home page Giter Club logo

rpnow's Introduction

RPNow

RPNow is a self-hosted, web-based roleplay chat website.

(TODO: add a GIF here!)

Running RPNow

For non-technical users who just want to deploy a server, there is a helpful guide here!

However, if you're interested in building the project from source, or modifying the server, read on.

Build Requirements

Building

If you have GNU Make installed, then simply open a shell in the project root and run make.

Otherwise, you can execute the individual steps manually:

# Build the web frontend
cd views
npm install
npm run build

# Build the server
cd ../server
go build -o ../rpnow

# The built server executable will now be at the project root
cd ..

Developing

For a fast and pleasant development experience, it's nice to be able to rebuild and reload the server every time you change a source file. To do that for RPNow, run these two things:

  • Web Frontend: Open a shell in the "views" directory. If you haven't already run npm install, do that first. Then, run npm run watch, which will watch and rebuild the JavaScript.
  • Server Backend: Open a shell in the "server" directory. Make sure you have installed Nodemon (npm install --global nodemon) and then run nodemon. This will keep the server running at http://localhost:13000.

State of the project

RPNow is more-or-less feature-complete. While it's possible that I may add features in the future, it is quite likely that the project will remain dormant for months or years.

If I become aware of any security issues, I will try to address them in a timely manner.

License

See LICENSE

Acknowledgments

Browserstack
Cross-browser testing provided by Browserstack.

rpnow's People

Contributors

dependabot[bot] avatar lrdfang avatar shamblesides 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpnow's Issues

Research co*

We might be able to reduce Callback Hell inside of the API code by using a module like co*. It's worth a look.

Split up the rp-view into components

The rp-view is by far the most complicated monolithic piece of the frontend right now, and could benefit from being split up into different components.

Is MongoDB indexing the RPCodes?

We look up an RP by its RPCode pretty often, so it will be a good idea to index these. Right now I'm not sure if it is or not.

Keybindings

What keybindings would be helpful for the RPNow UI?

One possibility: using TAB to open and close the character side-drawer.

Research $scope usage

Using $scope in AngularJS seems to be discouraged in some circles. Should I refactor it to use the "controller as" syntax?

Add font size options

Especially on mobile, it might be helpful to allow the user to have a larger/smaller font size.

Character editing

Allow a user to change the name or color of a previously created character. This should affect all messages previously sent with said character.

Must-add: RP archive reader

The old site had a way to read all of the previous RP content online in a paginated format. This new beta site no longer has that functionality; it needs to be added back.

"Browser not supported" message

RPNow can't realistically support all browsers; however, we should at least show the user a message instead of a blank page.

Icon-faces for characters

Let users add icons for their characters, to give character messages more personality. Probably support multiple icons per character so they can have different expressions, etc.

Read-only RPCodes

What if users could share a read-only link to their RP? That way people could share an RP in all its beautiful formatting detail, without having to let those people post to said RP.

Show helpful hints when an RP is created

Instead of showing a vast, blank space on a newly-created RP page, we should see a helpful message that lets the user know what to do next.

Consider: something as simple as an arrow pointing to the message box on the bottom of the page, saying "Type your first message here!"

Roll a die in an RP!

To incorporate an element of chance into an RP, roll a die! We'll probably want a d20 and a d6, and possibly a coin flip too.

Improve scrollglue behavior on image-heavy RP's

When the browser loads an RP page, it should automatically scroll to view the last-posted RP messages. However, if an image loads, sometimes the page scrolls back up a bit. This is probably because angular's digest cycle doesn't listen for when an image loads, changing the height of the feed.

Preloading message before scripts are loaded

The vendor script/style bundles are pretty big; currently, 400kb even after minification and compression. We should make sure that the user sees some kind of "loading" message before these show up.

Make the homepage more descriptive

Right now, RPNow 2 doesn't give a good idea of what the site is for and what it does. Here's some ideas:

  • Add an informative video
  • ... or a demo gif, like digitalocean does
  • What else?

Android “new character” dialog bug

From Tumblr user hiding-from-senpai:

When my keyboard pops up, I can't see or scroll up to view the space where I type the name of the character. (Chrome on Android)

tumblr_oo5gfr6fap1urbwufo1_1280

Improve message-box styling

The message typing box could be improved significantly. Right now, it seems to span the width of the browser, but the actual area where you can type text is smaller. Also, it's strange to have a long, colorful bar go across the whole page. This needs to be improved at some point.

Hide new character menu during loading screen

If you open the character side-drawer on a desktop-sized screen, it'll stick open, even after refreshing the page. That's good.

However, the problem is that it appears before the page finishes loading the RP. This shouldn't happen.

Migration

  • Dockerize RPNow 1
  • Merge servers
  • Merge frontends
  • Create opt-in migration system from the old site
  • Fix inevitable bugs
  • Migrate the remaining RP's
  • Take RPNow 1 offline

Test very long Roleplays

How does RPNow handle RP's that are extremely long? I know for a fact that there's a 16MB size limit on a MongoDB document. Add testing to see how it's handled.

Use browser notification API

The sound and titlebar flashing is cool, but most modern browsers support notifications that show up on the desktop computer's UI. Use this functionality.

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.