Hello, my name is Joshua Brooks.
I am a web developer from San Diego, California. My work history is in IT, but a combination of writing scripts for work and personal projects pushed my interests into programming and web development. I am a problem solver and critical thinker, which has helped me be successful in my career of figuring out my coworkers' computer problems or crafting a careful Google search request to see what other people have figured out before me.
When I am not coding, I am usually watching Netflix with my wife, playing D&D 5E (currently running an elven monk that is trying to find actual magic herbs to sell at his family's business instead of the essential oils they currently have), or playing Super Mario World custom romhacks while my cat presses her head into my arms for attention.
Sir Botis is a Twitch.tv channel bot. Its aim is to act as a channel engager, interacting with users to keep them in a Twitch streamer's channel for longer. It provides functionality through user-entered commands (e.g. "!quote") which are created through the front end, operating both in a streamer's Twitch and Discord channels to bring the community together.
Sir Botis is created using Angular to run the site as a single page app in the front end. It uses HTTP requests to the back end API to fetch settings and uses Socket.io to get real time data for a channel event ticker that can be displayed while a user streams.
The back end runs in Node.js. Express is used to handle page requests and MySQL holds user data. Authentication is done using PassportJS and Twitch OAuth tokens to ensure a user can only have Sir Botis join their own Twitch channel. The server also reaches out to the Twitch API to turn on and off Pubsub and Webhook requests.
While Sir Botis is fully functional as a channel bot, he is constantly under construction and is adding new features as they get requested or thought of.https://sirbotis.com Github
3301 is a series of cryptography-related puzzles released in 2012 through 2014. All of the info currently known about the puzzles are stored in a relatively disorganized Wikia page and this site was my personal project to verify all of the known information and make it easier to digest.
As my wife likes to collect movies, she ended up with far too many to remember which she already has and which she does not. Because of this, we have some duplicate DVDs. This movie tracker is an easy way for her to see what we have while out of the house. The web app uses a basic password prompt to protect it from being vandalized.
The site uses React in the front end with Express and Mongo in the back end.https://jbrooks.me/movies Github
Midgardia is a friend's online gaming community. They primarily live stream role playing game sessions with other people in the community and have a Tumblr hosted domain that they present their games on. I recreated their existing website and enhanced it with functionality they were not able to get through a Tumblr page, such as:
- A custom game world and character info tab for their multi-session characters
- A calendar showing upcoming sessions
- Embedded YouTube videos of their past recordings
- Mobile responsiveness
This website is made using Angular with Express in the back end. The Node.js server it runs on periodically accesses the Tumblr API to cache the most recent posts and parse them into something more trim and usable in the Angular component. It also accesses a public Google Calendar to get upcoming events.https://www.jbrooks.me/midgardia
I was looking for a new web project after I finished working on Midgardia, and I had just joined a D&D campaign so I decided to combine the two. This is a calendar or journal log of all of the things we have done in the campaign, from a slightly-biased viewpoint of my own character.
This is a website I converted for a friend's father. The client wanted to move their website from his existing host onto a platform where they could update their car sales page themselves. Everything was done in Wordpress, with themes and plugins chosen for the client's needs.
The website was set up with a third-party theme, extended and customized for the client's needs. The header and footer were modified for mobile responsiveness with additional CSS added to tweak elements throughout the site while keeping a similar look to what they previously had.https://www.autoexcelinc.com