From 5cc886b649c653496a98705d6b74b07fee0b9148 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:41:54 +0200
Subject: [PATCH 1/8] docs: Add Python virtual environment setup instructions.
README.md
---
README.md | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6ecf23f..1d64b15 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,16 @@
-# stf-nomic-game
\ No newline at end of file
+# stf-nomic-game
+## Setting Up a Python Virtual Environment
+To create a new Python virtual environment, run the following command in your terminal:
+```
+python3 -m venv venv
+```
+
+### Activating the Virtual Environment
+- On Unix/macOS, activate the environment with:
+```
+source venv/bin/activate
+```
+- On Windows, activate the environment using:
+```
+venv\Scripts\activate
+```
From 9e684bf8c0ddbc74cc623aa06d55eecdf4275ca7 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:42:13 +0200
Subject: [PATCH 2/8] Add Flask dependency requirements.txt
---
requirements.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 requirements.txt
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..9b8d815
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1 @@
+Flask==2.0.1
\ No newline at end of file
From ec1ee6de6f83480f041d53defb43e4f37d509dd1 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:42:34 +0200
Subject: [PATCH 3/8] Enable Flask app with debug mode app/__init__.py
---
app/__init__.py | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 app/__init__.py
diff --git a/app/__init__.py b/app/__init__.py
new file mode 100644
index 0000000..882c80a
--- /dev/null
+++ b/app/__init__.py
@@ -0,0 +1,4 @@
+from flask import Flask
+
+app = Flask(__name__)
+app.config['DEBUG'] = True
From 9925b9004e6e1bdc89bb66864cb423d89ddf8cf5 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:42:59 +0200
Subject: [PATCH 4/8] Add home page route with welcome message app/routes.py
---
app/routes.py | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 app/routes.py
diff --git a/app/routes.py b/app/routes.py
new file mode 100644
index 0000000..f50c283
--- /dev/null
+++ b/app/routes.py
@@ -0,0 +1,5 @@
+from . import app
+
+@app.route('/')
+def home():
+ return '
Welcome to the Nomic Game!
Embark on a journey where the rules of the game are decided by the players themselves.
'
From 297ae5020462d610ea85d74845308f79acb6db2b Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:43:04 +0200
Subject: [PATCH 5/8] feat: Add new route for game functionalities
app/routes.py
---
app/routes.py | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/app/routes.py b/app/routes.py
index f50c283..710bb68 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -3,3 +3,7 @@
@app.route('/')
def home():
return 'Welcome to the Nomic Game!
Embark on a journey where the rules of the game are decided by the players themselves.
'
+
+@app.route('/game')
+def game():
+ return 'Game functionalities coming soon!
'
\ No newline at end of file
From d984a522166fa37cfbd6b574c0fd8c5142d364f8 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:43:14 +0200
Subject: [PATCH 6/8] feat: Add instructions for running Flask server locally.
README.md
---
README.md | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/README.md b/README.md
index 1d64b15..94e2958 100644
--- a/README.md
+++ b/README.md
@@ -14,3 +14,14 @@ source venv/bin/activate
```
venv\Scripts\activate
```
+### Installing Dependencies
+After activating the virtual environment, install the required dependencies by running:
+```
+pip install -r requirements.txt
+```
+
+### Running the Flask Server
+To start the Flask server, run the following command:
+```
+flask run
+```
From d3201be26ed73cbd6ae52523e1c4659a78d33222 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 16:43:32 +0200
Subject: [PATCH 7/8] docs: Plan for Nomic game logic integration into Flask
app README.md
---
README.md | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/README.md b/README.md
index 94e2958..e62a474 100644
--- a/README.md
+++ b/README.md
@@ -25,3 +25,23 @@ To start the Flask server, run the following command:
```
flask run
```
+
+## Integration of Nomic Game Logic into Flask App
+To integrate the Nomic game logic into our Flask application, we will follow these steps and make necessary modifications in specific areas of the code:
+
+### Step 1: Define Game Models
+- Define models for the game state, rules, and players in `models.py`.
+
+### Step 2: Game Logic API
+- Implement an API in `app.py` that handles game actions. This will involve creating routes for starting a game, making moves, and querying the current game state.
+
+### Step 3: Database Integration
+- Modify `models.py` to ensure that game states and rules are persistently stored in the database.
+
+### Step 4: User Interface
+- Update templates in the `templates` directory to include user interfaces for game interaction.
+
+### Step 5: WebSocket for Real-Time Updates
+- Integrate WebSocket in `app.py` for real-time game state updates to all players.
+
+These steps will ensure a seamless integration of the Nomic game logic into our Flask application, providing an interactive and engaging user experience.
\ No newline at end of file
From e7ef1bf602876bac0d9a4d79772400ca04357574 Mon Sep 17 00:00:00 2001
From: Snobbish Bee <125891987+snobbee@users.noreply.github.com>
Date: Tue, 9 Apr 2024 17:10:41 +0200
Subject: [PATCH 8/8] build: use poetry instead of pip
---
.gitignore | 8 +++
README.md | 56 +++++++--------
app/__init__.py | 2 +
poetry.lock | 178 +++++++++++++++++++++++++++++++++++++++++++++++
pyproject.toml | 16 +++++
requirements.txt | 1 -
6 files changed, 230 insertions(+), 31 deletions(-)
create mode 100644 .gitignore
create mode 100644 poetry.lock
create mode 100644 pyproject.toml
delete mode 100644 requirements.txt
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2b6d878
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+# ignore file for poetry / python / flash project
+#
+
+# Ignore the poetry cache
+__pycache__/
+
+# Ignore the poetry virtual environment
+.venv/
diff --git a/README.md b/README.md
index e62a474..629f4f1 100644
--- a/README.md
+++ b/README.md
@@ -1,47 +1,43 @@
# stf-nomic-game
-## Setting Up a Python Virtual Environment
-To create a new Python virtual environment, run the following command in your terminal:
-```
-python3 -m venv venv
-```
-### Activating the Virtual Environment
-- On Unix/macOS, activate the environment with:
+## Installation
+
+### Setting Up Poetry
+
+To install the dependencies for this project, you will need to have Poetry installed. You can install Poetry by running the following command:
+
```
-source venv/bin/activate
+curl -sSL https://install.python-poetry.org | python3 -
```
-- On Windows, activate the environment using:
+
+### Installing Dependencies
+
+To install the dependencies for this project, run the following command:
+
```
-venv\Scripts\activate
+poetry install
```
-### Installing Dependencies
-After activating the virtual environment, install the required dependencies by running:
+
+### Activating the Virtual Environment
+
+To activate the virtual environment created by Poetry, run the following command:
+
```
-pip install -r requirements.txt
+poetry shell
```
### Running the Flask Server
+
To start the Flask server, run the following command:
+
```
flask run
```
-## Integration of Nomic Game Logic into Flask App
-To integrate the Nomic game logic into our Flask application, we will follow these steps and make necessary modifications in specific areas of the code:
-
-### Step 1: Define Game Models
-- Define models for the game state, rules, and players in `models.py`.
+### Test the API
-### Step 2: Game Logic API
-- Implement an API in `app.py` that handles game actions. This will involve creating routes for starting a game, making moves, and querying the current game state.
+To test the API, you can use the following command:
-### Step 3: Database Integration
-- Modify `models.py` to ensure that game states and rules are persistently stored in the database.
-
-### Step 4: User Interface
-- Update templates in the `templates` directory to include user interfaces for game interaction.
-
-### Step 5: WebSocket for Real-Time Updates
-- Integrate WebSocket in `app.py` for real-time game state updates to all players.
-
-These steps will ensure a seamless integration of the Nomic game logic into our Flask application, providing an interactive and engaging user experience.
\ No newline at end of file
+```
+curl http://localhost:5000/game
+```
diff --git a/app/__init__.py b/app/__init__.py
index 882c80a..bc8ddf7 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -2,3 +2,5 @@
app = Flask(__name__)
app.config['DEBUG'] = True
+
+from . import routes
\ No newline at end of file
diff --git a/poetry.lock b/poetry.lock
new file mode 100644
index 0000000..0121b56
--- /dev/null
+++ b/poetry.lock
@@ -0,0 +1,178 @@
+# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
+
+[[package]]
+name = "blinker"
+version = "1.7.0"
+description = "Fast, simple object-to-object and broadcast signaling"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"},
+ {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "flask"
+version = "3.0.3"
+description = "A simple framework for building complex web applications."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "flask-3.0.3-py3-none-any.whl", hash = "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3"},
+ {file = "flask-3.0.3.tar.gz", hash = "sha256:ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842"},
+]
+
+[package.dependencies]
+blinker = ">=1.6.2"
+click = ">=8.1.3"
+itsdangerous = ">=2.1.2"
+Jinja2 = ">=3.1.2"
+Werkzeug = ">=3.0.0"
+
+[package.extras]
+async = ["asgiref (>=3.2)"]
+dotenv = ["python-dotenv"]
+
+[[package]]
+name = "itsdangerous"
+version = "2.1.2"
+description = "Safely pass data to untrusted environments and back."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"},
+ {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"},
+]
+
+[[package]]
+name = "jinja2"
+version = "3.1.3"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
+ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.1.5"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
+ {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
+ {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
+ {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
+ {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
+ {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
+ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
+ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+]
+
+[[package]]
+name = "werkzeug"
+version = "3.0.2"
+description = "The comprehensive WSGI web application library."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "werkzeug-3.0.2-py3-none-any.whl", hash = "sha256:3aac3f5da756f93030740bc235d3e09449efcf65f2f55e3602e1d851b8f48795"},
+ {file = "werkzeug-3.0.2.tar.gz", hash = "sha256:e39b645a6ac92822588e7b39a692e7828724ceae0b0d702ef96701f90e70128d"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.1.1"
+
+[package.extras]
+watchdog = ["watchdog (>=2.3)"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = "^3.10"
+content-hash = "29fcbf5d61821324972c8221e4602de237cca8e052cc20545eb33c46cda996cd"
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..9ba5b3f
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,16 @@
+[tool.poetry]
+name = "stf-nomic-game"
+version = "0.1.0"
+description = ""
+authors = ["Your Name "]
+readme = "README.md"
+package-mode = false
+
+[tool.poetry.dependencies]
+python = "^3.10"
+Flask = "^3.0.3"
+
+
+[build-system]
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 9b8d815..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-Flask==2.0.1
\ No newline at end of file