File tree Expand file tree Collapse file tree
3d-fps-game-in-the-browser
banking-app-with-supabase
building-a-ride-hailing-app
provably-fair-casino-games
send-files-without-internet
zero-dependency-react-component-library Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > 404 — Page not found · Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!doctype html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="utf-8 " />
57 < title > Redirecting…</ title >
68 < meta http-equiv ="refresh " content ="0; url=/ " />
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-M9Ktx5fsO0cPQcYBDZ4vrcCqzeVU+7xVsYEZ80w/4Qg='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > Build a 3D FPS Game in the Browser with Three.js & TypeScript (2026) | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-XtR//L26nkbWEhAnnwQosTw+tKBYXdW6uJ2jgDPpSRg='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > Building a banking app with React and Supabase Row Level Security | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-XtR//L26nkbWEhAnnwQosTw+tKBYXdW6uJ2jgDPpSRg='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > How I built a ride-hailing app without a Google Maps API key | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-XtR//L26nkbWEhAnnwQosTw+tKBYXdW6uJ2jgDPpSRg='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > Build notes have moved to news.tapiwa.me | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-oltFZl342eCE8vdgoDikpCyl4eBalLt5pYKhF2ncCiA='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > Provably Fair Crash Casinos: Verify Any Round Isn't Rigged | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-vaumWhGra9YRSnlwgR4nINjGokisWOWhk6zXCqHcnME='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > Sending files between phone and PC with no internet | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!DOCTYPE html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com 'sha256-XtR//L26nkbWEhAnnwQosTw+tKBYXdW6uJ2jgDPpSRg='; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="UTF-8 " />
57 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
68 < title > Building a zero-dependency React component library in TypeScript | Tapiwa Makandigona</ title >
Original file line number Diff line number Diff line change 11<!doctype html>
22< html lang ="en ">
33< head >
4+ <!-- Content-Security-Policy (see build_site.py) -->
5+ < meta http-equiv ="Content-Security-Policy " content ="default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https://play.google.com https://www.google-analytics.com https://www.googletagmanager.com; media-src 'self'; connect-src 'self' https://api.github.com https://www.google-analytics.com https://analytics.google.com https://region1.google-analytics.com https://www.googletagmanager.com; worker-src 'self' blob:; manifest-src 'self'; frame-src 'none'; upgrade-insecure-requests " />
46 < meta charset ="utf-8 " />
57 < title > Redirecting…</ title >
68 < meta http-equiv ="refresh " content ="0; url=/ " />
You can’t perform that action at this time.
0 commit comments