My experiments with Nginx, Docker, and Python web hosting.
Each folder is a standalone project and contains its own README.md which describes how to run it, and how it works.
To run the projects:
- Install Docker Desktop.
- Run
git clone https://github.com/yuxiliu1995/webdev-experiments.git. - Go into each folder and follow the
README.mdwithin.
Table of contents:
hello: A website that showsHello World!.counter: Counts how many times it is hit by HTTP requests and displays it on the webpage.reverse-proxy: Performs reverse proxying, with two servers on the backend. One takes 2/3 of the load, and the other 1/3. It also does caching for 2 seconds.wsgi: An attempt at recreating WSGI according to WSGI for Web Developers (Ryan Wilson-Perkin) - YouTube.doublestroop: A website that serves a double Stroop test puzzle, and checks the user's answers. It uses Flask.weather: Select a location on a map and get a weather forecast for that location. It uses Leaflet for rendering the map, and NOAA or OpenWeatherMap for retrieving the weather forecast by an API call.torrent: Enter a magnet link and get the information about the magnet resource as well as the peers connected. It uses Flask and WebTorrent (javascript).docker: Something rather low-level: how to use TCP ports. It has two Docker engines that create two containers. The first one,Dockerfile_telnet, creates a container that runs a telnet server. The second one,Dockerfile, creates a container that runs asshserver. TheREADME.mdin the folder describes how to connect to thesshserver from the localhost machine, and how you can create the world's smallest webserver usingncandbashthat is listening on a port 80, then tunnel it out of the container into the localhost port.opossum search: I saw it in Google Gemini's paper and figured it's worth a try.berkeley-library-hours: Scrapes UC Berkeley library hours for a configurable date range and renders the whole thing as a single interactive HTML grid (rows = dates, columns = libraries) with filters for library, date range, weekends, and always-closed locations. Built with Bun (one TypeScript file for scrape + HTML build + dev server); deployable to Netlify as static hosting.found-haiku: Finds the accidental haiku hiding in ordinary English prose. Normalizes the text, splits it at punctuation and line breaks, counts every word's syllables against the CMU Pronouncing Dictionary (all 126,030 words ship as a front-coded table, with a rules engine as fallback for anything it has never seen), and keeps the runs that partition exactly into 5-7-5. Tanka, tanaga and custom patterns too. Layout cloned from unique. Static, deployable to Netlify with base directoryfound-haiku.