Douglas Crawford
Architecture

Welcome. My name is

Douglas Crawford

and I am a

Full-Stack Web Developer.

Projects

Please Note: Apps may take a sec to spin up.
Invoicer123
Create project invoice PDFs to be downloaded and used for any purpose, utilizing a simple UI that facilitates the process with a mobile-first approach.
  • React Router 7, React Hook Form, and jsPDF are used to implement the invoice creation process and user authentication
  • Invoice preview is rendered within a React component and actually generated by jsPDF -- invoice information is persisted in Postgresql managed through Prisma ORM.
Dairy Free Eats
Rails 8 + React App allowing test Stripe transactions and order management via GraphQL API and Apollo Client
  • Order products created on Stripe using a test API key, manage order statuses as a Demo Admin and receive emails throughout the order status update process.
  • Rails 8 authentication sends JSON responses that are invoked from React components with routing through React-Router v6.
  • GraphQL API manages database mutation, such as changing order status through the React Admin Dashboard, with Apollo GraphQL codegen generating queries to be automatically imported into React components.
  • Minimum 90% test coverage employing Rspec for request specs, Capybara for feature integration specs, and Jest/React Testing Library for comoponent unit tests -- all automated and performed upon Github pull request and deploy.
Workout Recorder
Rails 7 App that allows workouts to be recorded and analyzed by Gemini AI
  • Fully implemented using the Rails 7 framework in both the frontend and backend, with Turbo and StimulusJS on the frontend to increase interactivity by preventing page reloads for workout submissions.
  • Google Gemini AI API used to analyze exercises as they are added to a workout, and later to evaluate the entire workout based on the exercises that compose it.
  • Users first add a workout, then add exercises to the workout from a page that feels like an SPA and is constructed with a mobile-first approach. Rails controller actions manage the RESTful approach to persisting data, and Turbo allows for page updates without a full page reload.
  • Users may receive suggested workouts by selecting muscle groups they wish to target and receiving a Gemini AI chatbot recommendation for which exercise to perform.
CapApp
Financial investing project using Rails/React/Redux that allows users to create and maintain dummy stock portfolios.
  • Implemented interactive charts using Recharts for presentation and Cloud IEX API calls for current data, in order to provide real-time stock data representations of stocks and user portfolios.
  • Developed backend API that uses Rails for RESTful HTTP processes, allowing users to asynchronously store and retrieve their stock and watchlist data.
  • Create watchlists that are displayed and manipulated in a dashboard sidebar by using React components that incorporate Redux state, allowing for easy stock additions and removals.
Tower Defense
Defend base against increasingly stronger invaders, employing Javascript, HTML, and CSS.
  • Implemented tower targeting system using iteration between enemies within range, causing towers to all focus on the closest enemy once it passes half the canvas.
  • Leveraged requestAnimationFrame() and canvas to repeatedly and asynchronously draw and reposition elements linked to class instances, resulting in a tower defense game with animated waves of enemies and towers that aim at their current target.
  • Incorporated asynchronous Javascript functions for gameplay control, allowing for various gameplay functions such as upgrading tower damage, tracking each enemy’s current health, and increasing resource generation rate.
Egg Hunt
Find as many easter eggs as you can in this simple game demonstrating basic game logic and React Three Fiber implementation.
  • React Three Fiber is used to create the game world and Rapier to apply basic physics when clicking eggs.
  • Zustand is the global state library that manages game state such as starting the game, knowing when to animate the bunny model and generate more eggs, and knowing when the game is finished.
  • Prisma is used as the ORM with Postgresql as the database, so that users may submit their score after completing the game loop.
Solitaire
Basic Solitaire game utilizing strictly HTML/CSS/Javascript
  • Organized classes with OOP structure in order to demonstrate understanding and increase organization of the project.
  • Individual instances of classes, such as Card and TopCardColumn, interact with each other and their DOM elements in order to create an interactive experience with a stable win condition.
  • This project was started on a plane flight from Dallas back home to Las Vegas, and continued shortly afterward as a means of practicing OOP principles and brush up on vanilla Javascript, HTML and CSS capabilities.

About

Douglas Crawford

Douglas A. Crawford

Software Developer

Full-stack software engineer looking for a result-oriented and driven team. Enjoys problem solving and improving production efficiency through automation.

Hi! I'm Douglas Crawford and I'm a passionate software developer. I really love working with React and Javascript because of their asychronous functions that allow for an interactive web page experience. I have built one full-stack project using Rails/React/Redux, another using the Mongo/Express/React/Node (MERN) stack, and a game using strictly Javascript/HTML/SASS with no external libraries. Please check them out! I am looking for a team project to work on together, and will bring an amicable personality and strong Javascript and React skills to the table. I'm always looking to master React and Javascript, but in my free time I enjoy video gaming, Netflix binging, and when permitted, playing at the gym.

View my Resume.

Skills

Javascript GitHub HTML5 jQuery CSS3 Express JS Heroku MongoDB Node JS Postgresql Postman Rails 5 React Redux RSpec Ruby Sass SCSS SQL Microsoft Visual Studio Code Webpack

Contact

Let's get in touch!

Name: Douglas Crawford
Phone: (760) 219-0584
Email: doug.a.crawford@gmail.com
Links: Github LinkedIn AngelList
Location: Henderson, NV
Resume: Douglas Crawford Resume - Full-Stack Web Developer