silently

silently

Shifumi: a rock-paper-scissors made with Elixir/Phoenix and React/Redux

Hello elixers,

I am glad to release the demo https://shifumi.io/ of a side project I’ve been working on for a few months, both with its source code.

It’s a variant of the rock-paper-scissors game (with an additional shape, well, that only loses to paper). Playing it requires logging in through an auth provider (facebook, google, twitter or github). Game syncing is done through Phoenix channels and, as a matter of fact, if you’re the only one connected, you won’t be able to start a match!

I expect there may be issues with the demo (not tested with many people nor on many different devices) especially with UX. Please open issues on github and I’ll try to fix the blocking ones (but I am unsure if I will engage in improving the demo).

The main intent here is releasing the code and hopefully to provide an interesting resource to others, and also to open discussions on the implementation. Please share your comments or advice or questions about the code!

My initial motivation with this project was to train with Elixir and Phoenix on a real, even very simple, project. I have also spend quite some time packaging it as a progressive web app, relying on React/Redux. An additional motivation was to create almost everything on my own (almost nothing may be more true knowing the amount of tools/libs/software used) from design (oops) to hosting/deployment.

Some parts that may be of interest:

  • tests
  • async Redux actions through channels
  • Service Worker implementation and an attempt to comply with PWA requirements
  • the GameServer and Dating modules
  • various config files: rollup, brunch, edeliver
  • sequencer.js, CSS animations and transitions
  • Ueberauth and Mogrify examples

The production environment is a 5$/month digitalocean Ubuntu droplet, using Nginx and Let’s Encrypt.

Additional info is provided in the project readme GitHub - silently/shifumi: Rock-paper-scissors in Elixir/React (see https://shifumi.alt-g.fr/) · GitHub

I hope you’ll enjoy it!

Where Next?

Popular in Discussions Top

Donovan
Hello everyone, I’m so glad to have discovered this awesome community. Thanks for creating it! This is my second post, and apologies for...
New
Ankhers
Just a little information upfront. Generally speaking, if I feel like I need to either break a pipe chain or use an anonymous function in...
New
rower687
Hi all, I’ve been reading a lot about the “let it crash” term and how supervising processes and the whole messaging passing make an elixi...
New
hazardfn
I suppose this question is effectively hackney vs. ibrowse but we are at a point in our project where we have to make a choice between th...
New
restack_oslo
Hello, Please pardon me for any faux paux. I am 46 and this is my first time on a forum of any kind. I wanted to to get answers from tho...
New
chulkilee
Here are the list of HTTP client libraries/wrappers, and some thoughts on HTTP client in general. I’d like to hear from others how they w...
New
opsb
We’re considering our architecture from a viewpoint of scaling our traffic heavily over the next 6 months. Our current deployment is runn...
New
MarioFlach
Hello, I want to share a project I’ve been working on for a while: https://github.com/almightycouch/gitgud Background Some time ago I ...
New
axelson
Decided against including more info in the title, but the gist is that Plataformatec sponsored projects will continue with the assets bei...
New
AstonJ
It’s been a while since we’ve had a thread like this, so what better way to kick off the year with :003: What does being an Elixir user ...
New

Other popular topics Top

New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31194 112
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36432 110
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 127536 1222
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54250 245
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New

We're in Beta

About us Mission Statement