Alex Saunders

Web Developer
Builder | Problem Solver | Creator

Harmony Dog

A dog training website MVP demonstrating
user registration/login, image upload,
and an administration page

Harmony Dog is built with: JavaScript, HTML, CSS, NodeJS, Express, EJS, and Bootstrap. It utilizes MongoDB for database storage, and Mongoose for schema creation and validation.

Calendly integration is being used for booking appointments, and Cloudinary and Multer are used to allow user's to upload an image of their dog.

If a user logs in under an admin account they will have access to view the pertinent details of a user's accounts, including the user's registered dogs.

This was my first time using an aggregation to bring two MongoDB collections into one temporary collection for data rendering.

Observation Tracker

An observation logger with geolocation
created as a test component to a
separate website currently in development

Observation Tracker is built with: JavaScript, HTML, CSS, NodeJS, Express, Handlebars, and Materialize. It utilizes MongoDB for database storage, and Mongoose for schema creation and validation.

The observation tracker uses GoogleAuth to allow users to register and login. This is done using an NPM Passport package

I've used the Navigator.geolocation Web API to request user permission to capture current location for the observation.

Cloudinary and Multer are used to allow users to upload an image for storage in the cloud

Naturalist Study Cards

A flashcard generator using the
iNaturalist API to generate cards for the
user selected genera and location

Naturalist Study Cards is built with: JavaScript, HTML, and CSS. It utilizes an API call to the iNaturalist database to populate the dynamically generated cards with images.

The user can then hover over a card to display the species common and scientific names. Boxes allow the user to mark whether the got the species correct or not. That information is stored in localStorage to keep track of the user's progress.

I've used select inputs to allow the user to tailor their flash-card generation. The values are then fed into the API call to limit the returned JSON to the user's needs.

This site does not use any CSS library or template engine. All code was hand tooled for the site's specific needs.


Creator, Problem Solver, Coder

I'm a Canadian/American living in Colorado since 1996. I have dual citizenship, a Bachelor of Science degree, and speak just enough French to embarrass us both.

As part of my career as a zookeeper I managed an international program focused on the discovery and conservation of endangered fish in Madagascar. I participated in field work, team organization, and budget management.

It was during that career I discovered a love of programming and web development. I found that many conservation, welfare, and husbandry programs had trouble connecting to a larger audience. I learned to code in an attempt to bring awareness to species that weren't the stars of the show.

Volunteer positions:

Other Pursuits:

  • Stand-up Paddleboarding
  • Photography
  • Ergatta Rowing
  • Dog training
  • Fly Fishing
  • Zen & Vipassana style meditation