Skip to content

Latest commit

 

History

History
78 lines (50 loc) · 2.21 KB

README.md

File metadata and controls

78 lines (50 loc) · 2.21 KB

Sudoku App


This sudoku app is a remake of the sudoku web app that I built using Vanilla JS 2 years ago with some new functionalities.

The main objective for building this app is to learn and apply things that I am interested in and have never done before, such as building a mobile app (React Native), implementing a CI/CD pipeline (GitHub Actions), containerizing an application (Docker), deploying a container in the cloud (AWS ECS & ECR), making a sudoku recognizer (OpenCV + PyTorch) and others.

It has been challenging to me because all of the things mentioned above were fairly new to me, so it was quite a lot to pick up and half of the time I spent was just on debugging alone. It's not the best-looking app nor the best-functioning app, but I am pretty content with it.

The Hows

  • The sudoku recognition is based on one of my repository. Write-ups of the approach are included.
  • The sudoku solving/hinting algorithm is based on the algorithm I implemented in the previous sudoku app. It's a simple backtracking algorithm.

Tech Stack

  • Frontend: React Native, Ignite Boilerplate, JavaScript
  • Backend: OpenCV, PyTorch, Numpy, Flask, Pytest, Python
  • DevOps: GitHub Actions, AWS ECS & ECR, Docker

Local Development

If you wish to start a local development server and play around with this app, here are the instructions

  1. Clone this repository.
git clone git@github.com:wyhong3103/sudoku-app.git
  1. Change directory to the backend folder.
cd backend
  1. Install the backend dependencies.
pip install -r requirements.txt
  1. Start the backend server.
python app.py
  1. Change directory to the frontend folder. (Assuming you're currently in the backend folder)
cd ../frontend
  1. Install the frontend dependencies.
yarn
  1. Replace the backend API url in frontend/.env.
EXPO_PUBLIC_API_URL=http://192.168.0.175:3030
  1. Start the frontend expo app.
yarn start

Now you can either use an emulator or your phone to access the mobile app.