All Projects → oestrich → Grapevine

oestrich / Grapevine

Licence: mit
The MUD Chat Network

Programming Languages

elixir
2628 projects

Labels

Projects that are alternatives of or similar to Grapevine

Polymorphic embed
Polymorphic embeds in Ecto
Stars: ✭ 80 (-38.93%)
Mutual labels:  phoenix
Phoenixsharp
C# Phoenix Channels client. Unity Compatible.
Stars: ✭ 96 (-26.72%)
Mutual labels:  phoenix
Phoenix Liveview Counter Tutorial
🤯 beginners tutorial building a real time counter in Phoenix 1.5.5 + LiveView 0.14.7 ⚡️
Stars: ✭ 115 (-12.21%)
Mutual labels:  phoenix
Filterable
Filtering from incoming params in Elixir/Ecto/Phoenix with easy to use DSL.
Stars: ✭ 83 (-36.64%)
Mutual labels:  phoenix
Formulator
A form library for Phoenix
Stars: ✭ 89 (-32.06%)
Mutual labels:  phoenix
Elixir Companies
A list of companies currently using Elixir in production.
Stars: ✭ 1,475 (+1025.95%)
Mutual labels:  phoenix
Geoip
Elixir library to find geo location information given an IP address, hostname or Plug.Conn
Stars: ✭ 77 (-41.22%)
Mutual labels:  phoenix
Birdsong
🐦🎼 Swift WebSockets client for Phoenix Channels.
Stars: ✭ 124 (-5.34%)
Mutual labels:  phoenix
Backend
EmCasa Backend
Stars: ✭ 94 (-28.24%)
Mutual labels:  phoenix
Premailex
Preflight for your HTML emails - inline styling and plain text.
Stars: ✭ 114 (-12.98%)
Mutual labels:  phoenix
Phoenix gon
🔥 Phoenix variables in your JavaScript without headache.
Stars: ✭ 84 (-35.88%)
Mutual labels:  phoenix
Memento
Collect saved items from different sources around the web
Stars: ✭ 89 (-32.06%)
Mutual labels:  phoenix
Ja resource
A behaviour to reduce boilerplate code in your JSON-API compliant Phoenix controllers without sacrificing flexibility.
Stars: ✭ 111 (-15.27%)
Mutual labels:  phoenix
Phoenix react playground
An example setup for a Phoenix+React project with sensible defaults.
Stars: ✭ 80 (-38.93%)
Mutual labels:  phoenix
Phoenix live dashboard
Realtime dashboard with metrics, request logging, plus storage, OS and VM insights
Stars: ✭ 1,657 (+1164.89%)
Mutual labels:  phoenix
Pow
Robust, modular, and extendable user authentication system
Stars: ✭ 1,213 (+825.95%)
Mutual labels:  phoenix
Bigdata Notes
大数据入门指南 ⭐
Stars: ✭ 10,991 (+8290.08%)
Mutual labels:  phoenix
Nova
An attempt to port/rebuild Spree, an open source e-commerce solution, with Elixir and Phoenix.
Stars: ✭ 125 (-4.58%)
Mutual labels:  phoenix
Moba
A turn-based browser RPG built with Phoenix LiveView
Stars: ✭ 120 (-8.4%)
Mutual labels:  phoenix
Yummy Phoenix Graphql
Cooking recipe sharing app built with Phoenix, React, GraphQL and Kubernetes
Stars: ✭ 112 (-14.5%)
Mutual labels:  phoenix

Grapevine

Grapevine

Grapevine is a MUD chat network.

WebSocket Protocol

View the websocket details on Grapevine.

Server

Requirements

This is only required to run Grapevine itself, the server. These are not required to connect as a game. See the above websocket docs for connecting as a client.

  • PostgreSQL 11
  • Elixir 1.9.0
  • Erlang 22.0.4
  • node.js 10.13.0
  • Yarn

Setup

cd apps/grapevine
mix deps.get
mix compile
yarn --cwd assets
mix ecto.reset
mix phx.server

This will start a web server on port 4100. You can now load http://localhost:4100/ to view the application.

Running Tests

MIX_ENV=test mix ecto.create
MIX_ENV=test mix ecto.migrate
mix test

Telnet Web Client

Telnet connections live in the apps/telnet application. This node holds the telnet connections so the main application can reboot on deploys and not drop active game connections.

For deployment the telnet application needs to be on its own erlang node. You can connect with something similar to:

config :grapevine,
  topologies: [
    local: [
      strategy: Cluster.Strategy.Epmd,
      config: [
        hosts: [
          :grapevine@localhost,
          :telnet@localhost,
        ]
      ]
    ]
  ]

Docker Compose

To run a production like system locally, you can use docker-compose.

The following commands will get a system running locally at http://grapevine.local. This also assumes you have something listening locally (such as nginx) that will proxy port 80 traffic to port 4100.

docker-compose build
docker-compose up -d postgres
docker-compose up -d socket
docker-compose up -d telnet
docker-compose run --rm web eval "Grapevine.ReleaseTasks.migrate()"
docker-compose run --rm web eval "Grapevine.ReleaseTasks.seed()"
docker-compose up web

Simple nginx config

This nginx config will configure your server to listen for grapevine.local and forward to either a local development server or the docker-compose setup from above.

    upstream grapevine {
            server localhost:4100;
    }

    server {
            listen 80;
            server_name grapevine.local;

            location / {
                    proxy_set_header Host $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-Proto $scheme;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_pass http://grapevine;
            }
    }

Setting up a new Play CNAME

  • Game sets the CNAME to client.grapevine.haus
  • Game must have a homepage url
  • Game must have the web client enabled
  • Update game's record for their CNAME
  • Update nginx config for new domain
  • Run certbot for the new domain
  • Refresh CNAMEs in ETS Grapevine.CNAMEs.reload()

Kubernetes

Some notes on installing into kubernetes:

# Set up nginx ingress
helm install nginx-ingress stable/nginx-ingress --set controller.publishService.enabled=true
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].