Joseph Lepley's Portfolio

Photo of Joseph Lepley

Joseph Lepley

Full Stack Developer | React.js Expert

About

I am a full stack web developer with 8 years of professional experience. I have worked with many different languages, frameworks, and other kinds of tools, and I have especially proven experience developing complex web apps in React.js.

My career can best be characterized by my fast learning ability. I taught myself to code when I was twelve years old. During my contract with Florida Blue, I taught myself React.js on the job as part of an effort to migrate an existing JSP application to modern React. I then used my self-taught skills to mentor other developer and lead the effort architecting and coding the migrated appliaction.

I am confident in my ability to adapt to the needs to any employer or client and to master any technology put in front of me. In addition to my learning skills, my analytical skills make me good at tracking down and fixing hard-to-find bugs and other issues.

Skills

Languages

HTML5
CSS
Javscript
Typescript
Java
Python
C#
C++

Frontend

React.JS
Next.JS
Material UI
Tailwind CSS

Backend

Node.JS
ASP.net
Spring Boot

Databases

SQL
MongoDB
PostgreSQL

Development Tools

Git
Docker

Cloud

Amazon Web Services

Projects

Web Applications

React Minesweeper
Game of React Minesweeper in progress
Game of React Minesweeper after player has won
Game of React Minesweeper after player has lost
Game of React Minesweeper being played in mobile layout

A minesweeper clone built in React. Upon landing on the application page, the user is presented with a modal to either use a preset difficulty configuration that will set the width and height of the game's grid, as well as the number of mines. Alternatively, the user can specify a custom width, height, and mine count for the game. The user is also presented with a button to display the rules of the game as well as the controls for the applicaiton.

Once the user has configured the game's difficulty and clicked the game start button, the game begins. The user can click on cells in the grid to switch them to a revealed state or right click to mark cells with flags. The game enters a win state if the user reveals all non-mine cells, or it enters a loss state if the user clicks on a cell with a mine. A stopwatch component keeps track of the time the user spends playing the game, and it pauses whenever the game enters its win or loss state. The user can bring up the difficulty config modal at any time by pressing the New Game button to start a new game with a new layout.

This applicaiton makes good use of React Hooks to manage complex game state and logical interactions. It is designed to be responsive with support for both desktop and mobile layouts, as well as both mouse and touch controls. It uses SASS for more complex styling rules.

Libraries

React Dialog Manager

Lightweight library to simplify and streamline dialog workflow in React. Users can add and remove Dialogs/Modals directly to the Virtual DOM from code without needing to implement them in the page's JSX ahead of time. More importantly, the manager gives users the capability to add submission to dialogs, which will be passed to the code that opened the modal in a promise-like callback. This makes it easy to add forms to modals that are opened conditionally and then handle the form data in the same function or to open simple confirmation dialogs.

©Joseph Lepley 2024

Icon Attributions