Card back sourced from Wikimedia Commons: https://commons.wikimedia.org/wiki/File:Card_back_01.svg
To run the Flask app, enter the command docker compose build && docker compose up
while in the directory fsk-bridge/
or any subdirectory. Then, navigate to http://localhost:80/ (or type localhost) in an Internet browser to access the website.
fsk-bridge/
├── README.md
│ - this README file
├── app/
│ - contains the main application logic for the server
│ ├── Dockerfile
│ │ - the Dockerfile used to build the "app" Docker container
│ ├── app.py
│ │ - the Flask server for the application (big file)
│ │ - services webpages, manages active tables, and provides API and socket endpoints to the front-end
│ ├── bridge/
│ │ - contains the game logic for playing a bridge game/table as well as the AI files
| | ├── AI_bidder.py
| | ├── AI_leader.py
| | ├── AI_player.py
| | ├── arbitrary_card.keras
| | ├── bid_net.keras
│ │ ├── linparse.py
| | ├── opening_lead.keras
│ │ ├── score.py
│ │ └── server.py (big file)
| | - contains all of the architecture storing the table and game info
│ ├── static/
│ │ - contains the static files served to a client by Flask (as requested)
│ │ ├── cardimages/
│ │ │ - contains the images for the card faces and card back
│ │ │ - card faces named as [value][suit] (value: 2-9 for numerals, T for 10, J for jack, Q for queen, K for king, A for ace)
│ │ ├── css/
│ │ │ - the css files for the website
│ │ │ ├── home.css
│ │ │ │ - styles home.html
│ │ │ ├── layout.css
│ │ │ │ - styles layout.html
│ │ │ ├── login.css
│ │ │ │ - styles login.html and register.html
│ │ │ ├── navbar.css
│ │ │ │ - styles the navbar (located in layout.html, present across pages)
│ │ │ └── table.css
│ │ │ - styles table.html (big file)
│ │ ├── favicon/
│ │ │ - the favicon for the website
│ │ │ └── favicon.ico
│ │ ├── js/
│ │ │ - the javascript files for the website
│ │ │ ├── chat.js
│ │ │ │ - javascript used for chat.html, allows the user to talk to other users on the website
│ │ │ │ - connects the client via a socket to the server to receive real-time updates to the chat
│ │ │ ├── color.js
│ │ │ │ - selects colors for individual users in the chat
│ │ │ ├── home.js
│ │ │ │ - redirects the user to the entered table id
│ │ │ ├── index.js
│ │ │ │ - connects the client to the socket
│ │ │ │ - used by layout.html
│ │ │ ├── login.js
│ │ │ │ - javascript used for login.html and register.html
│ │ │ └── table.js
│ │ │ - javascript used for table.html (big file)
│ │ └── otherimages/
│ │ - other images for miscellaneous uses
│ │ └── bridge-icon.svg
│ │ - used to style the login and register forms
│ └── templates/
│ - contains the html Jinja templates served by Flask
│ ├── home.html
│ │ - the home page
│ │ - allows a user to make a new table or join an existing table with a table ID
│ ├── layout.html
│ │ - the base template for all other html files on the website
│ ├── learn.html
│ │ - the learn to play page
│ ├── login.html
│ │ - the login page
│ ├── register.html
│ │ - the page where a user can register a new account on the website
│ └── table.html
│ - the page where a user plays bridge with other users at the same table (big file)
├── compose.yaml
│ - instructions to create all of the necessary Docker containers
│ - used in the `docker compose` commands
└── postgres/
- contains files relevant to the construction and operation of the database
- doesn't contain a Dockerfile because of how the service is integrated into compose.yaml
└── init.sql
- instructions for creating the tables in the database