- Click (tap) and move mouse for drawing picture
- Choose brush color and width on toolbar block
- Click Clear button to delete all pictures from board
- Click Share button to generate link that you can share to friends and draw pictures together
- It's built with
React.js,Next.js(SSR, routes)andRedux(client storage) - Draw is implemented with default HTML5 tag -
<canvas> - All your pictures are stored as arrays of points. This approach uses less memory than built-in canvas functions
- It's built with
Python 3.7, micro-frameworkFlaskandPostgreSQLas data storage - The written code complies with the
PEP8specification - API has scalable structure where each folder is responsible for it's own part of the application logic
- I used
PostgreSQLas Database because it allow to store JSON-data - Made unit-tests with python library
pytest. They are stored here:/backend/api/tests
- It's built with
Python 3.7andwebsocketslibrary - The written code complies with the
PEP8specification - It has rooms that divide connected clients by
board_urlinto groups - It has validation for receiving messages that reject messages with invalid structure
- I used
Dockerto build a microservice application - List of microservices you can see in file
docker-compose.prod.yml - I used
Kubernetesto deploy production version (all configs you can see in/k8s) - I used
pre-committo format python code and check it for mistakes
Run project (development):
docker-compose -f docker-compose.prod.yml -f docker-compose.dev.yml up --build
Run project (production):
# create secret key
python -c 'import os; print(os.urandom(24).hex())'
# setup environment variables
cp .env.example .env
nano .env
docker-compose -f docker-compose.prod.yml up --build
Run REST API tests (if container is up):
docker-compose -f docker-compose.prod.yml -f docker-compose.dev.yml exec api pytest
Run REST API tests (if container is down):
cd backend/api
pytest
