Ethan Randolph

Portfolio Webserver

2025 - 2025
Public Code Repository: https://github.com/ethanr555/PortfolioWebServer
Project Website: https://ethanrandolph.com
Team: TODO

Tools: AWS S3 , AWS Cloudfront , Go , PostgreSQL , Javascript , TailwindCSS , GNU Make , Templ , DigitalOcean Droplet

I wanted to convert my existing ReactJS website into a full stack application, because I wanted to have more control of what I wanted to do with it in the future and wanted to make it more optimal for its use-case. I wanted server-sided rendering and a database to manage all my information rather than an ever-increasing json file I had to repeatedly send to viewers. I wrote a Go webserver that connects to a PostgreSQL database that contains my portfolio data. The webserver server-renders the pages based on the database data using a Go module called Templ, and it serves the webpages with Javascript and TailwindCSS-integrated CSS. The webpages are progressively-enhanced, meaning if the viewer does not have Javascript enabled or the browser lacks Javascript functionality, then they will still be able to completely interact with the contents of the webpage. The Javascript is used to create a drop-down menu for navigating the website on mobile devices and to create a video/image carasol to view images and videos for each project. My code repository uses GNU Makefiles to build the application, since there are various instructions for setting up the Templ components, TailwindCSS compiliation, Go binary building, and various files being copied into the build directory. It will soon have a CI/CD build and test pipeline with Github Actions and test cases. Currently, it is being hosted on two cloud provides: DigitalOcean hosts the webserver and database server and handles nameserver redirects for the domain name, and AWS hosts S3 with Cloudfront to host image files.