92 lines
2.4 KiB
Markdown
92 lines
2.4 KiB
Markdown
# Wikipedia Game Solver
|
|
|
|
> \[!IMPORTANT\]
|
|
> The project is **abandoned and not maintained anymore**.
|
|
>
|
|
> It was a **proof of concept** to deal with large amounts of data in databases, and have some fun dealing with Wikipedia data.
|
|
> It was also a way to learn and experiment with a clean monorepo architecture, with [Turborepo](https://turbo.build/repo), and [TypeScript](https://www.typescriptlang.org/) as the main language.
|
|
> The project setup **can be reused as a template/boilerplate for future projects**.
|
|
|
|
## About
|
|
|
|
The Wikipedia Game involves players competing to navigate from one [Wikipedia](https://en.wikipedia.org/) page to another using only internal links.
|
|
|
|
[**Wikipedia Game Solver**](https://wikipedia-game-solver.theoludwig.fr) is a tool that helps you find the shortest path between two Wikipedia pages, using only internal links, basically solving the Wikipedia Game for you.
|
|
|
|
~~Available online: <https://wikipedia-game-solver.theoludwig.fr>~~ => **Offline** as the project is abandoned.
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- [Node.js](https://nodejs.org/) >= 22.0.0
|
|
- [pnpm](https://pnpm.io/) >= 9.9.0
|
|
- [Docker](https://www.docker.com/)
|
|
|
|
### Installation
|
|
|
|
```sh
|
|
# Go to the project root
|
|
cd wikipedia-game-solver
|
|
|
|
# Configure environment variables
|
|
cp .env.example .env
|
|
cp apps/website/.env.example apps/website/.env
|
|
cp apps/api/.env.example apps/api/.env
|
|
|
|
# Install dependencies
|
|
pnpm install --frozen-lockfile
|
|
|
|
# Install Playwright browser binaries and their dependencies (tests)
|
|
pnpm exec playwright install --with-deps
|
|
```
|
|
|
|
### Development
|
|
|
|
```sh
|
|
# Start the development servers
|
|
node --run dev
|
|
|
|
# Start the development Docker services (e.g: Database)
|
|
docker compose --file compose.dev.yaml up
|
|
|
|
# Database migrations
|
|
node --run database:migrate
|
|
|
|
# Lint
|
|
node --run lint:editorconfig
|
|
node --run lint:prettier
|
|
node --run lint:eslint
|
|
node --run lint:typescript
|
|
|
|
# Tests
|
|
node --run test
|
|
|
|
# Build
|
|
node --run build
|
|
|
|
# To execute a command in a specific package (e.g: apps/api)
|
|
cd apps/api
|
|
node --run ace -- list
|
|
```
|
|
|
|
### Production environment with [Docker](https://www.docker.com/)
|
|
|
|
```sh
|
|
# Setup and run all the services for you
|
|
docker compose up --build
|
|
|
|
# To execute database migrations
|
|
docker compose exec wikipedia-game-solver-api sh
|
|
node --run database:migrate
|
|
```
|
|
|
|
#### Services started
|
|
|
|
- `apps/website`: <http://127.0.0.1:5000>
|
|
- `apps/api`: <http://127.0.0.1:5500>
|
|
|
|
## License
|
|
|
|
[MIT](./LICENSE)
|