Files
backend/README.md

71 lines
2.3 KiB
Markdown

# Minesweeper Backend
# Stack used:
- [Python 3.8][stack/python]
- [Django 3.1.3][stack/django]
- [Django Rest Framework][stack/drf]
- [MySQL 8][stack/mysql]
- [Black][stack/black] and [Flake8][stack/flake8] for codestyling
- [APICURIO, for API documentation][stack/apicurio]
- [Docker][stack/docker]
- [Sentry][stack/sentry] for error tracking
OpenAPI 3 documentation: [https://apidoc.mines.makecodes.dev/][url/apidoc]
Game frontend: [https://mines.makecodes.dev/][url/the-game]
Frontend github repo: [https://github.com/imakecodes/minesweeper-frontend][github/frontend]
### Production environment
Was used [Digital Ocean][stack/do] to host the applications using a little droplet with 1GB/25GB with Ubuntu 20.04 LTS at New York with Docker and Nginx(for reverse proxy).
Also was used Github Actions to create docker images for [backend][github/image-backend] and [frontend][github/image-frontend]
# Next desired steps
- Change the primary key of the game from Integer to UUID to avoid cheating from the players
- User authentication to store the match history
- Create a global and by user scoreboard
- Create unit tests
# Running locally
Assuming you have docker-compose and docker installed on your computer:
### Clone the repository
```bash
git clone git@github.com:imakecodes/minesweeper-backend.git
cd minesweeper-backend
```
### Run the application
```bash
docker-compose up -d
```
### Run the migrations
```bash
docker-compose run app python manage.py migrate
```
The application will be available at [http://localhost:8000](http://localhost:8000)
[stack/python]: https://www.python.org/
[stack/do]: https://www.digitalocean.com/
[stack/django]: https://www.djangoproject.com/
[stack/drf]: https://www.django-rest-framework.org/
[stack/mysql]: https://www.mysql.com/
[stack/black]: https://github.com/psf/black
[stack/flake8]: https://flake8.pycqa.org/en/latest/
[stack/docker]: https://www.docker.com/
[stack/apicurio]: https://www.apicur.io/
[stack/sentry]: https://www.sentry.io/
[github/frontend]: https://github.com/imakecodes/minesweeper-frontend
[url/apidoc]: https://apidoc.mines.makecodes.dev/
[url/the-game]: https://mines.makecodes.dev/
[github/image-backend]: https://github.com/imakecodes/minesweeper-backend/packages/493329
[github/image-frontend]: https://github.com/imakecodes/minesweeper-frontend/packages/493379