From 64bc116ebcf69fdbc8283252ac77dc5543b9fd96 Mon Sep 17 00:00:00 2001
From: zikaeroh <48577114+zikaeroh@users.noreply.github.com>
Date: Sat, 23 May 2020 14:51:11 -0700
Subject: [PATCH] Initial commit
---
.dockerignore | 32 +
.gitignore | 22 +
.prettierignore | 2 +
.prettierrc | 15 +
Dockerfile | 23 +
LICENSE | 21 +
README.md | 17 +
codies.code-workspace | 43 +
docs/screenshot1.png | Bin 0 -> 57596 bytes
frontend/.eslintignore | 2 +
frontend/.eslintrc.json | 37 +
frontend/.gitignore | 23 +
frontend/package.json | 66 +
frontend/public/android-chrome-192x192.png | Bin 0 -> 6647 bytes
frontend/public/android-chrome-512x512.png | Bin 0 -> 20690 bytes
frontend/public/apple-touch-icon.png | Bin 0 -> 6142 bytes
frontend/public/browserconfig.xml | 9 +
frontend/public/favicon-16x16.png | Bin 0 -> 843 bytes
frontend/public/favicon-32x32.png | Bin 0 -> 1269 bytes
frontend/public/favicon.ico | Bin 0 -> 15086 bytes
frontend/public/index.html | 23 +
frontend/public/logo192.png | Bin 0 -> 5347 bytes
frontend/public/logo512.png | Bin 0 -> 9664 bytes
frontend/public/mstile-150x150.png | Bin 0 -> 3581 bytes
frontend/public/robots.txt | 3 +
frontend/public/safari-pinned-tab.svg | 75 +
frontend/public/site.webmanifest | 19 +
frontend/src/app.test.tsx | 10 +
frontend/src/app.tsx | 32 +
frontend/src/common/index.ts | 32 +
frontend/src/components/about.tsx | 62 +
frontend/src/components/aspectDiv.tsx | 20 +
frontend/src/components/board.tsx | 177 +
frontend/src/components/clipboard.tsx | 33 +
frontend/src/components/loginForm.tsx | 130 +
frontend/src/hooks/useServerTime.tsx | 18 +
frontend/src/index.tsx | 72 +
frontend/src/pages/game.tsx | 180 +
frontend/src/pages/gameView.tsx | 539 +
frontend/src/pages/loading.tsx | 22 +
frontend/src/pages/login.tsx | 117 +
frontend/src/pages/staticView.tsx | 331 +
frontend/src/protocol/index.ts | 140 +
frontend/src/react-app-env.d.ts | 1 +
frontend/src/setupTests.ts | 7 +
frontend/src/teams/index.ts | 13 +
frontend/tsconfig.json | 19 +
frontend/yarn.lock | 11364 ++++++++++++++++
go.mod | 18 +
go.sum | 112 +
internal/game/board.go | 115 +
internal/game/layouts.go | 14 +
internal/game/layouts_test.go | 25 +
internal/game/rand.go | 20 +
internal/game/room.go | 363 +
internal/protocol/protocol.go | 229 +
internal/protocol/protocol_easyjson.go | 2297 ++++
internal/server/server.go | 606 +
internal/words/static/codenames/README.md | 1 +
internal/words/static/codenames/default.txt | 404 +
internal/words/static/codenames/duet.txt | 409 +
.../words/static/codenames/undercover.txt | 390 +
internal/words/static/esc.go | 351 +
internal/words/static/static.go | 11 +
internal/words/words.go | 73 +
main.go | 218 +
tools.go | 8 +
67 files changed, 19415 insertions(+)
create mode 100644 .dockerignore
create mode 100644 .gitignore
create mode 100644 .prettierignore
create mode 100644 .prettierrc
create mode 100644 Dockerfile
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 codies.code-workspace
create mode 100644 docs/screenshot1.png
create mode 100644 frontend/.eslintignore
create mode 100644 frontend/.eslintrc.json
create mode 100644 frontend/.gitignore
create mode 100644 frontend/package.json
create mode 100644 frontend/public/android-chrome-192x192.png
create mode 100644 frontend/public/android-chrome-512x512.png
create mode 100644 frontend/public/apple-touch-icon.png
create mode 100644 frontend/public/browserconfig.xml
create mode 100644 frontend/public/favicon-16x16.png
create mode 100644 frontend/public/favicon-32x32.png
create mode 100644 frontend/public/favicon.ico
create mode 100644 frontend/public/index.html
create mode 100644 frontend/public/logo192.png
create mode 100644 frontend/public/logo512.png
create mode 100644 frontend/public/mstile-150x150.png
create mode 100644 frontend/public/robots.txt
create mode 100644 frontend/public/safari-pinned-tab.svg
create mode 100644 frontend/public/site.webmanifest
create mode 100644 frontend/src/app.test.tsx
create mode 100644 frontend/src/app.tsx
create mode 100644 frontend/src/common/index.ts
create mode 100644 frontend/src/components/about.tsx
create mode 100644 frontend/src/components/aspectDiv.tsx
create mode 100644 frontend/src/components/board.tsx
create mode 100644 frontend/src/components/clipboard.tsx
create mode 100644 frontend/src/components/loginForm.tsx
create mode 100644 frontend/src/hooks/useServerTime.tsx
create mode 100644 frontend/src/index.tsx
create mode 100644 frontend/src/pages/game.tsx
create mode 100644 frontend/src/pages/gameView.tsx
create mode 100644 frontend/src/pages/loading.tsx
create mode 100644 frontend/src/pages/login.tsx
create mode 100644 frontend/src/pages/staticView.tsx
create mode 100644 frontend/src/protocol/index.ts
create mode 100644 frontend/src/react-app-env.d.ts
create mode 100644 frontend/src/setupTests.ts
create mode 100644 frontend/src/teams/index.ts
create mode 100644 frontend/tsconfig.json
create mode 100644 frontend/yarn.lock
create mode 100644 go.mod
create mode 100644 go.sum
create mode 100644 internal/game/board.go
create mode 100644 internal/game/layouts.go
create mode 100644 internal/game/layouts_test.go
create mode 100644 internal/game/rand.go
create mode 100644 internal/game/room.go
create mode 100644 internal/protocol/protocol.go
create mode 100644 internal/protocol/protocol_easyjson.go
create mode 100644 internal/server/server.go
create mode 100644 internal/words/static/codenames/README.md
create mode 100644 internal/words/static/codenames/default.txt
create mode 100644 internal/words/static/codenames/duet.txt
create mode 100644 internal/words/static/codenames/undercover.txt
create mode 100644 internal/words/static/esc.go
create mode 100644 internal/words/static/static.go
create mode 100644 internal/words/words.go
create mode 100644 main.go
create mode 100644 tools.go
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..6d0128e
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,32 @@
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Project binaries
+codies
+
+# IDEs
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+.git/
+config/
+
+# common benchstat filenames
+old.txt
+new.txt
+
+frontend/node_modules/
+frontend/build/
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..893a1e5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,22 @@
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Project binaries
+codies
+
+# IDEs
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..c129174
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+**/build/**
+**/node_modules/**
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..dbb6a63
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,15 @@
+{
+ "singleQuote": true,
+ "tabWidth": 4,
+ "useTabs": false,
+ "printWidth": 120,
+ "overrides": [
+ {
+ "files": ["*.yml", "*.yaml"],
+ "options": {
+ "tabWidth": 2,
+ "singleQuote": false
+ }
+ }
+ ]
+}
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..865c71a
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,23 @@
+FROM node:14 AS JS_BUILD
+WORKDIR /frontend
+COPY ./frontend/package.json ./frontend/yarn.lock ./
+RUN yarn install --frozen-lockfile
+COPY ./frontend ./
+RUN yarn build
+
+FROM golang:1.14 as GO_BUILD
+WORKDIR /codies
+COPY ./go.mod ./go.sum ./
+RUN go mod download
+# Manually copying the required files to make this image's cache only include Go code.
+COPY ./main.go ./main.go
+COPY ./internal ./internal
+RUN go build .
+
+# TODO: Use distroless/static and statically compile above. (https://golang.org/issue/26492)
+FROM gcr.io/distroless/base:nonroot
+WORKDIR /codies
+COPY --from=GO_BUILD /codies/codies ./codies
+COPY --from=JS_BUILD /frontend/build ./frontend/build
+ENTRYPOINT [ "/codies/codies" ]
+EXPOSE 5000
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..eb333bd
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 zikaeroh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3fb9e5e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# codies
+
+Yet another Codenames webapp. Featuring:
+
+- Custom word packs
+- Timed mode
+- Quick room joining
+- Dark/light mode
+- Responsiveness for mobile play
+- And more!
+
+This is entirely inspired by the wonderful [codenames.plus](https://github.com/Joooop/codenames.plus),
+which works very well, but hasn't been scaling too well recently. I wanted an opportunity
+to learn TypeScript and React, and figured I could make something that worked just as well
+with a few extra niceties (and a more stable backend).
+
+![Game board](/docs/screenshot1.png?raw=true 'Game board')
diff --git a/codies.code-workspace b/codies.code-workspace
new file mode 100644
index 0000000..b191430
--- /dev/null
+++ b/codies.code-workspace
@@ -0,0 +1,43 @@
+{
+ "folders": [
+ {
+ "path": "."
+ },
+ {
+ "path": "frontend"
+ }
+ ],
+ "settings": {
+ "[typescript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true
+ },
+ "[javascript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true
+ },
+ "[markdown]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true
+ },
+ "[yaml]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true
+ },
+ "[typescriptreact]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true
+ },
+ "[html]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "editor.formatOnSave": true
+ },
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": true
+ },
+ "files.exclude": {
+ "**/node_modules": true
+ },
+ "typescript.tsdk": "frontend/node_modules/typescript/lib"
+ }
+}
diff --git a/docs/screenshot1.png b/docs/screenshot1.png
new file mode 100644
index 0000000000000000000000000000000000000000..a03af047b4f78518b3368555f836502faafd022c
GIT binary patch
literal 57596
zcmeFZ2UJtr_CA`>1pyTWr5;5@ML
-+1po-h1PX=-5g2$|`fsHRm_KIX4kk
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