A full-stack web app for checking, validating and solving a Sudoku puzzle. This application validates the input puzzle string but also assesses the correctness of number placements. In addition, it also provides solutions to valid puzzles.
-
Client Side:
- HTML: Provides the structure of the web pages.
- CSS: Adds styling and responsive design to the user interface.
- Vanilla JavaScript: Implements the client-side functionality for unit conversion.
-
Server Side:
- Node.js: Provides the runtime environment for the server.
- Express.js: A web application framework for handling routes and requests on the server.
-
Testing:
- Mocha: A testing framework for writing unit tests.
- Chai: An assertion library used in conjunction with Mocha for making test assertions.
- Checks if a given number and placement is valid based on the given board
- Solves the puzzle given a valid puzzle string
To run the express application, do follow the following steps
- Clone the repo:
git clone git@github.com:mrarvind90/fcc-sudoku-solver.git
- Navigate to the repository:
Change <repository_directory> to the name of the cloned directory.
cd <repository_directory>
- Install Dependencies:
This command will install all the necessary dependencies for the application.
npm install
- Configure Environment Variables: Rename the .env.sample file in your project directory to .env and update it with the
relevant credentials:
cp .env.example .env
- Choose Your Run Mode:
- Development Mode (with automatic code reload):
To run the application in watch mode, enabling seamless source code changes without manual server restarts, use the following command:
npm run dev
- Standard Server Mode:
If you prefer to simply run the server without automatic code reloading, you can use the following command:
npm run start
- Development Mode (with automatic code reload):
- Running the tests
- You can run unit tests for the application using Mocha and Chai. To run the tests, use the following command:
npm run test
While developing this project, there are several areas I plan to focus on for enhancements and refinements which can be found on GitHub.