After years and years of only skimming the surface of computer science and programming, I finally made the choice to take the deep plunge and begin learning all there is to know about developing software and web applications.
Below are just a few of my latest developments built on this new journey. If you would like to know more on some of my past work, feel free to contact me and I would be happy to share as much as I can on the software I created and implemented with my past company.
Udemy See Certificate
Udemy See Certificate
It has been deployed on Vercel under my own domain with an SSL certificate for data encryption and security. The application utilizes Auth0 for user authentication and Next-Auth for user authorization. To help with the user experience, custom 403 and 404 pages have been created if something goes wrong with a user request. The 403 page utilizes a fun animation to alert the user that they are trying to access data they do not have authorization for, while the 404 page promptly informs the user of missing page and provides them with the option to play an audio clip of a dial-up modem as it tries to connect them to the resource they are looking for. Both pages also has added information to help explain why this issue may have occurred and what the user's next steps should be to find what they are looking for. Utilizing SWR and Serverless MySQL data is stored and fetched from the SQL database at serverless scale, which is hosted on Google Cloud
Utilizing a combination of Express, EJS, Node.js, and Bootstrap for the framework, this site has been deployed on Vercel with a domain name provided by them. The application utilizes Passport for user authentication and custom built middleware for user authorization with sessions for tracking necessary user information across the site. A simple 404 page is utilized to inform the users that they have reached a page that does not exist. All images are stored in Cloudinary for quick retrieval of images cropped and scaled as needed using Virtual Schemas. A NoSQL database was chosen for this project through MongoDB, which is utilized to store all information related to the authenticated user and campgrounds on the website. Mongoose handles the object modeling of our database and the retrieval of data, as needed. Joi and Sanitizie-HTML helps ensure that the data being entered into the database is clean and meets the necessary requirements.
YelpCamp is a comprehensive tool designed to capture campgrounds anywhere within the world based off user's inputting basic information, such as title, location, price, description, and images. Utilizing user authentication and authorization, the site captures who submitted the campground and prevents other users from updating the information without approval. This also allows for the submission of reviews on the individual campgrounds with a rating system as well. Full CRUD functionality is available on the campgrounds and reviews, with all reviews related to a specific campground being removed on deletion of the campground itself. When entering the site, a clean, minimalistic landing page is shown, giving the user the option to view the current campgrounds or login/register for additional features. Upon viewing all campgrounds a clustermap is provided, through MapBox, which showcases a quick breakdown of all campgrounds currently saved in the database. From the view page, you can scroll through the list of all campgrounds or click on the clusters of the map to view campgrounds in a specific area. When a specific campground is found on the map, clicking its pin will provide you with the name of the campground, a truncated section of the description, and a link to take you to the campground's page.
This personal blog page is a simple, yet effective tool to allow an individual to express their ideas and opinions without fear of others gaining access to their content and making unauthorized changes to it. A simple, minimalistic user interface helps the readers of the content find what they are looking for, without distractions, and comfortably move throughout the site. All content for the blog posts are stored solely within the Markdown file itself, where YAML frontmatter is used to store the metadata for the posts. All content from the Markdown file is pulled into, and utilized by the template file, through GraphQL. From the blog page, the latest 10 blog posts are displayed, with buttons for pagination at the bottom of the list. A banner at the top of the page presents the reader with common tags used on blog posts, allowing them to refine their view to more applicable posts. Readers also have the option to navigate directly to a separate Series page, where they can view all posts related to specific series. After selecting the desired blog post, a user can leave comments on the content utilizing Disqus' comment plugin. With this simple tool, users can share their feedback directly within the site and the site admin has access to advanced moderation tools.