jpmarcotte / codenames-social

A locally hosted web-app for playing very large games of Codenames.
MIT License
3 stars 0 forks source link

Initial Design Thoughts #1

Open jpmarcotte opened 7 years ago

jpmarcotte commented 7 years ago

Mostly this "issue" is just to talk initial design before totally diving in code-wise. It may just be me thinking "out loud".

So I'm thinking python (because it'll be an excuse to learn more python) and because running a simple python webserver for the local directory is easy. Probably done more as a service where python will just act as a series of api endpoints that will handle ajax calls from the web-app. I'm totally open to other ideas (Ruby?) especially if someone knows of an easy API Framework that can be set up.

Also thinking sqlite as the data storage so that a full DB instance doesn't have to be installed.

theodinspire commented 7 years ago

I've got a few questions to start out with. What do you mean by "Very Large"? Large player count? Large boards? Both?

And then by "locally" hosted, are we talking that someone can download and executable, run it on their desktop which would then host it for players to log into while logged onto the network? If this is the case, what's the use of a database? Couldn't the server keep ad hoc records of players by both identifier and ip? Boards could be generated on the fly.

jpmarcotte commented 7 years ago

Large referring specifically to player count. The idea is to be able to run a game for an entire room of people at an event or convention. Normally, this would cause 2 issues in the regular game: seeing the board and agreeing on a word. The former is solved by either a large screen (projector) or personal screens (mobile devices). The latter is solved by either having a team captain, or a dynamic voting system.

By "locally" hosted, yeah, I'm thinking this would be an app that someone could fire up on their laptop and even in the case where there isn't a normal wifi network, the laptop itself could create one that everyone could connect to (e.g. at a convention where nobody buys wifi anyway).

The reason for the DB is to just provide a little bit of persistence. If for some reason the app / laptop / network / devices have any issues, people are able to re-connect mid-game. It also allows for it to scale up to multiple simultaneous games, the ability to host it on the web in the future, etc. But I figure going with sqlite will allow for it to be used on minimal requirements since it's just file-based.

jpmarcotte commented 7 years ago

I'd also like to investigate using a new front-end javascript framework (just because I haven't before). Anyone have any preferences or thoughts between Angular, React, or something else?