Hi, I'm Brian Smith, a musician turned web developer, based in Nashville, Tennessee, looking for my first full-time job in the tech industry. I'm a fast learner who loves puzzles and a challenge, and I'm ready to contribute to your next project!
Language Proficiencies: Python, JavaScript, HTML, CSS, with basic knowledge of SQL, PHP, and Java.
Framework/Database Proficiencies: Node.js/Express, Flask, React, jQuery, Bootstrap, Tailwind, Flask-SQLAlchemy, PostgreSQL MongoDB, Mongoose.
A web app built for a local business looking to open on an
appointments-only basis in response to the Covid-19
pandemic.
Step one of this project is a script that populates a
database with appointments based on appointment duration
and the store's hours by day of the week, season, and on
holidays.
Next, we have the customer site. Users make an
account, log in, and make appointments to visit the store,
with options that are dynamically generated based on
current appointments and occupancy limitations. You can
view your appointments and cancel any that you've changed
your mind about. You can also update your personal info if
you've gotten a new email address or telephone number, or
if you'd like to change your password. A "forgot password"
feature allows secure account recovery via email.
Emails are automatically sent to customers
when they make an appointment or have one cancelled by an
admin. Each evening, email reminders are sent to the
inboxes of all the next day's customers with their
appointment details. (The daily reminders are currently
commented out due to the host service's usage limits.)
Finally, a special admin login gives you
access to a different site, where you can check in users
as they come through the doors, or view data about the
current distribution of bookings. Information about user
cancellations is stored in the appointment database for
potential analysis at a later time.
Log in to a test user account with the email
"email@email.com" and the password "password" to see the
user experience, (or create your own account, as this is
not connected to the real store's database), or the admin
account with the email "admin@email.com" and the password
"password".
Technologies and packages: React, React
Router, Node, Express, Passport, Cookie-Session, MongoDB,
Mongoose, Nodemailer, Node Cron, Bootstrap.
A full-featured, web-based help desk system built with
React and Express. There is authentication in place on
both the front and back end, with different privileges
depending on your role, (user, support staff, or admin.)
Users: Submit support tickets and view your dashboard,
where you can see all the tickets you have submitted. Get
email notifications whenever a ticket is successfully
submitted, assigned to a support member, closed, or
deleted.
Support staff: View your dashboard, where you can see all
the tickets assigned to you. You may also view all
unclaimed tickets, sorting by department if you wish, and
claim any that you would like to work on. Get email
notifications whenever a ticket is assigned to you,
unassigned from you, or deleted.
Admin: All the features of support staff, with an added
ability to view claimed tickets, assign tickets to support
staff, and search tickets by username, which will either
show the submitted tickets of a user or the assigned
tickets of a support staff member.
Log in to the following accounts with the password
"password" to explore the site with different roles:
testAdmin, testSupport, testUser.
Technologies and packages: React, React Router, Node,
Express, Passport, Cookie-Session, MongoDB, Mongoose,
Nodemailer, Bootstrap.
A helper app for the Sunday New York Times Spelling Bee
puzzle, built with vanilla JavaScript and Node.js. When a
word is submitted, it passes through a layer of validation
that determines whether it conforms to the rules of the
game. Then HTTP requests are sent to potential entries at
merriam-webster.com and lexico.com (by Oxford), where I
employ web scraping with Cheerio to determine whether a
word is an exact match to an entry in these dictionaries,
with no spaces, hyphens, or capitalization. (First
implemented in Python using Beautiful Soup as a proof of
concept.) Invalid words are rejected, and valid words are
added to a list, with the score updated accordingly.
Clicking on a word in the list will send requests to
Merriam-Webster's and Oxford's dictionary APIs, showing
you the word's definition. Your word list and score are
kept in local storage until you start a new game.
Technologies and packages: Node, Express, node-fetch,
Cheerio, HTML, CSS, JavaScript.
A mock stock trader app built with Flask. Create an
account and log in to get stock quotes, buy and sell
stocks, and keep a portfolio with up-to-the-moment data.
Data is stored in a PostgreSQL database and managed with
Flask-SQLAlchemy.
Technologies and packages:
Flask, flask-wtf/flask-wtforms, flask-sqlalchemy,
flask-bcrypt, flask-login, Requests, flask-mail, Jinja2,
HTML, CSS, Bootstrap, Python.
A responsive weather app built for a Mintbean CareerHack
event. Uses APIs to find your location and display the
local weather with a seven day forecast. Get the weather
for another location using a search bar equipped with
auto-complete from the Google Places API.
Technologies and packages: Node/Express, vanilla
JavaScript, FetchAPI, HTML, CSS, Tailwind