4.1 KiB
Roleypoly
Tame your Discord roles.
Need Help with Roleypoly? 💁♀️
📚 Please read through our community documentation.
😕 Still confused? Talk to us on Discord!
Developing
Roleypoly is a distributed system built with TypeScript, React, Terraform, and Go.
This app is heavily edge computing-based with the backend being deployed via Cloudflare Workers, UI server on Google Cloud Run with 8 regions, and the mention responder in Google Compute Engine.
Extra Development Docs
Quickstart
Option 1 🚀: E2E Dockerized Emulation
This is the fastest way to start. You must be using MacOS or Linux (WSL2 is ok!) for this to be successful.
- Setup
.env
using.env.example
as a template and guide.- When setting up your Discord Application, be sure to set
http://localhost:6609/login-callback
as the OAuth2 callback URL.
- When setting up your Discord Application, be sure to set
- Run:
yarn install
- Run:
docker-compose up
- This starts the UI and API servers in hot-reload dev/emulation mode. All changes to TS/TSX files should be properly captured and reloaded for you!
- Develop you a Roleypoly!
Option 2 🐱👤: Local Emulation
- With pre-requisites:
- Node.js 14, Yarn
- Setup
.env
using.env.example
as a template and guide.- When setting up your Discord Application, be sure to set
http://localhost:6609/login-callback
as the OAuth2 callback URL.
- When setting up your Discord Application, be sure to set
- Run:
yarn install
- Run both:
yarn ui
andyarn worker
- This starts the UI and API servers in hot-reload dev/emulation mode. All changes to TS/TSX files should be properly captured and reloaded for you!
- Develop you a Roleypoly!
Option 3 🐄🤠: Wrangler (No emulation)
This is probably extremely painful and requires you to have a Cloudflare account.
-
With pre-requisites:
- Cloudflare Account
- Node.js 14, Yarn
npm i -g @cloudflare/wrangler
- Do
wrangler init
,wrangler login
, etc...
- Do
-
Setup Wrangler for the project
-
Change
account_id
to your Cloudflare Account ID inwrangler.toml
-
Add a
dev
environment towrangler.toml
, using.env.example
as a reference for how values should be set- When setting up your Discord Application, be sure to set
http://localhost:8787/login-callback
as the OAuth2 callback URL.
[env.dev] [env.dev.vars] BOT_CLIENT_ID = ... UI_PUBLIC_URI = "http://localhost:6601" API_PUBLIC_URI = "http://localhost:8787" ROOT_USERS = ...
- When setting up your Discord Application, be sure to set
-
wrangler secret put BOT_TOKEN -e dev
-
wrangler secret put BOT_CLIENT_SECRET -e dev
-
Setup KV Namespaces -- Please follow the instructions listed after the command runs.
wrangler kvnamespace create -e dev KV_SESSIONS --preview
wrangler kvnamespace create -e dev KV_GUILD_DATA --preview
wrangler kvnamespace create -e dev KV_GUILDS --preview
-
-
Setup
.env
using.env.example
as a template and guide. -
Run
yarn install
-
Run both
wrangler dev -e dev
andyarn ui
- This starts the UI and API servers in hot-reload dev mode. All changes to TS/TSX files should be properly captured and reloaded for you!
-
Develop you a Roleypoly
- And get a beer or heated plant because oh no.
Developing Design System Components
For working with the Roleypoly Design System, use the below steps as reference. Code lives in src/design-system
among elsewhere.
Run:
yarn
to install depsyarn storybook
to open storybookyarn test
to test
Developing Web UI
For working with the Next.js frontend components, use the below steps as reference. Code lives in src/pages
among elsewhere.
Run:
yarn
to install depsyarn ui
to run Next.js dev serveryarn test
to test
Developing API Components
For working with the API, use the below steps as reference. Code lives in src/backend-worker
.
Run:
yarn
to install depsyarn worker
to start an emulated workeryarn test
to test