Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/timhaley94/holdem
Real time poker in JavaScript
https://github.com/timhaley94/holdem
aws docker-compose ecs full-stack javascipt poker react terraform websockets
Last synced: 3 days ago
JSON representation
Real time poker in JavaScript
- Host: GitHub
- URL: https://github.com/timhaley94/holdem
- Owner: timhaley94
- License: gpl-3.0
- Created: 2020-04-21T03:09:40.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-24T02:25:30.000Z (almost 2 years ago)
- Last Synced: 2024-08-01T13:28:08.846Z (3 months ago)
- Topics: aws, docker-compose, ecs, full-stack, javascipt, poker, react, terraform, websockets
- Language: JavaScript
- Homepage: https://holdemhounds.com
- Size: 3.11 MB
- Stars: 7
- Watchers: 2
- Forks: 7
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
Hold'em Hounds
Born of the pandemic, Hold'em Hounds is an (🚧 in development 🚧) poker app that's aiming to
bring a fresh perspective to a crowded field of garish, clunky apps, desparate to suck you
into microtransactions.## Product priorities
Hold'em Hounds should be...
- Multiplayer
- Free to play
- Real time
- Account optional
- Download optional
- Not too serious
- Beautiful## Directory structure
```
holdem/
.circleci/ --> CI/CD configuration
client/ --> Client (React) code
src/
components/ --> UI Elements
data/ --> Constants
hooks/ --> Generic React hooks
state/ --> Application state (i.e. the "data layer")
utils/ --> Generic reusable code
infrastructure/ --> Infrastructure (Terraform) code
server/ --> Server (Node.js) code
src/
api/ --> View/Controller logic
domain/ --> Business logic (i.e. the "service layer")
loaders/ --> Side effects (i.e. mongo and redis connections)
modules/ --> Specific reusable code
utils/ --> Generic reusable code
```## Development
While you you could set up each individual piece of the system locally (i.e. server, client, mongo, redis)
the easiest way to run the project is through `docker-compose`. First make sure you have `docker` and
`docker-compose` installed. Then you can use the `scripts.sh` file which takes a variety of subcommands:We have a `scripts.sh` file which takes a includes a number of subcommands. Some options are:
- `up` stand up the system in the foreground (with logs)
- `rebuild` force a fresh build of the docker images/containersFor example, to get the app up and running, run `./scripts.sh up` and then, viola,
[http:localhost:3000](http:localhost:3000).The `docker-compose` configuration supports hot reloading, so once you have it running, your
changes to `./client` and `./server` will be respected. However, if you ever need to force a
rebuild: `./scripts build`.### Testing and linting
In order to lint the source code or run the test suite, you'll need to run `npm install` in the
directory in question (i.e. `client` or `server`) and then run either `npm run test` or `npm run lint`.### High level docs
We have a couple of diagrams to get a high level feel for the implementation:
- [Our technical stack](docs/diagrams/the_stack.png)
- [Our infrastructure](docs/diagrams/infrastructure.png)## Contributing
1. Read [our contributing guide](docs/CONTRIBUTING.md)
2. Find a Github issues
3. Fork this repository (if you aren't a collaborator)
4. Open a pull request