/WarsWorld

WarsWorld is an attempt at building a modernised clone of Advance Wars By Web (AWBW)

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

Wars World

Wars World is an open source project made by AWBW players that want to recreate Advance Wars By Web/AWBW, on a modern tech stack so we can all enjoy playing the game we love on a streamlined, blazingly fast, venue that keeps all the stuff we love plus new desperately needed features!

This repository contains the backend and frontend code and is based on this starter template.

Interested in contributing/helping?

Here are our Contribution Guidelines where you can learn more about how you can help the project out!

If you want to reach out the dev team/ask some questions, feel free to DM femboy#6116 on Discord (we aren't big enough to need our own Discord server yet...)

Setting up your local environment

Running our project locally just takes 5 easy steps!

1 - Make sure you have Docker Desktop installed and run it/the docker daemon (needed to run your local db, you just need to have the app running in the background, nothing else!)

2 - Make sure you have pnpm installed (its like npm but faster).

3 - Clone the repository in your own IDE.

4 - Copy the "env.example" to ".env" and setup a random password/string in the PGPASSWORD and NEXTAUTH_SECRET fields.

5 - Install dependencies and run app (run code below)

pnpm i  //This is basically an npm i/install
pnpm dx //This is our npm start

Now go to localhost:3000 and you should be set! If you are having issues, feel free to contact someone in the team!

Soon there will be a more newb/extensive setup your local environment guide here!

Troubleshooting

Building but not able to access the site?

Ensure you are using an up to date node version. ^18.15.0 is recommended.

Our Tech Stack's Features

  • 🧙‍♂️ E2E type safety with tRPC
  • 🖼️ SCSS for customized styling
  • ⚡ Full-stack React with Next.js
  • ⚡ WebSockets / Subscription support
  • ⚡ Database with Prisma
  • 🔐 Authorization using next-auth
  • ⚙️ VSCode extensions
  • 🎨 ESLint + Prettier

Files of note

Path Description
./public Where we store our public files (images, favicon, etc)
./src/pages Frontend/tsx pages (index, about, match)
./src/styles SCSS styling files
./src/components React components
./prisma/schema.prisma Prisma schema
./src/api/trpc/[trpc].tsx tRPC response handler
./src/server/routers Your app's different tRPC-routers