71 lines
2.3 KiB
Markdown
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
|