| -rw-r--r-- | .air.web.toml | 18L |
| -rwxr-xr-x | .gitignore | 15L |
| -rw-r--r-- | .pre-commit-config.yaml | 14L |
| -rw-r--r-- | Dockerfile | 36L |
| -rw-r--r-- | Justfile | 13L |
| -rw-r--r-- | LICENSE | 674L |
| -rw-r--r-- | README.md | 52L |
| -rw-r--r-- | cmd/buildjs/main.go | 29L |
| -rw-r--r-- | cmd/server/handlers/blog.go | 74L |
| -rw-r--r-- | cmd/server/handlers/cache.go | 6L |
| -rw-r--r-- | cmd/server/handlers/experience.go | 46L |
| -rw-r--r-- | cmd/server/handlers/handler.go | 30L |
| -rw-r--r-- | cmd/server/handlers/home.go | 24L |
| -rw-r--r-- | cmd/server/handlers/projects.go | 98L |
| -rw-r--r-- | cmd/server/handlers/render.go | 54L |
| -rw-r--r-- | cmd/server/handlers/sitemap.go | 42L |
| -rw-r--r-- | cmd/server/handlers/wakatime.go | 24L |
| -rw-r--r-- | cmd/server/logging.go | 56L |
| -rw-r--r-- | cmd/server/main.go | 102L |
| -rw-r--r-- | cmd/tui/main.go | 18L |
| -rwxr-xr-x | content/blogs/building-my-portfolio.md | 42L |
| -rwxr-xr-x | env.example | 8L |
| -rwxr-xr-x | generate_cloud_config.sh | 184L |
| -rw-r--r-- | go.mod | 75L |
| -rw-r--r-- | go.sum | 182L |
| -rw-r--r-- | internal/config/about.go | 27L |
| -rw-r--r-- | internal/config/experience.go | 106L |
| -rw-r--r-- | internal/config/projects.go | 79L |
| -rw-r--r-- | internal/config/site.go | 6L |
| -rw-r--r-- | internal/content/blogs.go | 147L |
| -rw-r--r-- | internal/content/projects.go | 165L |
| -rw-r--r-- | internal/external/git.go | 229L |
| -rw-r--r-- | internal/external/git_test.go | 111L |
| -rw-r--r-- | internal/external/wakatime.go | 281L |
| -rw-r--r-- | internal/ssh/limiter.go | 74L |
| -rw-r--r-- | internal/ssh/network.go | 16L |
| -rw-r--r-- | internal/ssh/route.go | 42L |
| -rw-r--r-- | internal/ssh/server.go | 104L |
| -rw-r--r-- | internal/tui/about_ascii.go | 50L |
| -rw-r--r-- | internal/tui/about_render.go | 88L |
| -rw-r--r-- | internal/tui/blog_markdown_render.go | 86L |
| -rw-r--r-- | internal/tui/boot.go | 109L |
| -rw-r--r-- | internal/tui/content.go | 480L |
| -rw-r--r-- | internal/tui/helpers.go | 153L |
| -rw-r--r-- | internal/tui/keys.go | 69L |
| -rw-r--r-- | internal/tui/layout.go | 67L |
| -rw-r--r-- | internal/tui/local.go | 18L |
| -rw-r--r-- | internal/tui/markdown.go | 189L |
| -rw-r--r-- | internal/tui/program.go | 35L |
| -rw-r--r-- | internal/tui/project_markdown_render.go | 195L |
| -rw-r--r-- | internal/tui/projects_readme.go | 88L |
| -rw-r--r-- | internal/tui/styles.go | 94L |
| -rw-r--r-- | internal/tui/tags.go | 89L |
| -rw-r--r-- | internal/tui/types.go | 141L |
| -rw-r--r-- | internal/tui/update.go | 316L |
| -rw-r--r-- | internal/tui/view.go | 287L |
| -rw-r--r-- | internal/tui/waka_footer.go | 41L |
| -rw-r--r-- | internal/utils/ascii.go | 42L |
| -rw-r--r-- | internal/utils/htmx.go | 7L |
| -rw-r--r-- | internal/utils/markdown.go | 56L |
| -rw-r--r-- | internal/utils/period.go | 97L |
| -rw-r--r-- | internal/utils/tab.go | 19L |
| -rw-r--r-- | internal/utils/tags.go | 90L |
| -rw-r--r-- | internal/utils/url.go | 7L |
| -rw-r--r-- | internal/web/renderer.go | 142L |
| -rw-r--r-- | internal/web/scripts/app.js | 46L |
| -rw-r--r-- | internal/web/scripts/modules/about.js | 184L |
| -rw-r--r-- | internal/web/scripts/modules/blog.js | 188L |
| -rw-r--r-- | internal/web/scripts/modules/blogDetail.js | 60L |
| -rw-r--r-- | internal/web/scripts/modules/dom.js | 8L |
| -rw-r--r-- | internal/web/scripts/modules/experience.js | 159L |
| -rw-r--r-- | internal/web/scripts/modules/header.js | 212L |
| -rw-r--r-- | internal/web/scripts/modules/help.js | 81L |
| -rw-r--r-- | internal/web/scripts/modules/layout.js | 153L |
| -rw-r--r-- | internal/web/scripts/modules/lightbox.js | 87L |
| -rw-r--r-- | internal/web/scripts/modules/projects.js | 138L |
| -rw-r--r-- | internal/web/scripts/modules/wakatime.js | 81L |
| -rw-r--r-- | internal/web/styles/about.css | 364L |
| -rw-r--r-- | internal/web/styles/blog.css | 197L |
| -rw-r--r-- | internal/web/styles/blog_detail.css | 149L |
| -rw-r--r-- | internal/web/styles/experience.css | 326L |
| -rw-r--r-- | internal/web/styles/footer.css | 29L |
| -rw-r--r-- | internal/web/styles/header.css | 107L |
| -rw-r--r-- | internal/web/styles/layout.css | 440L |
| -rw-r--r-- | internal/web/styles/lightbox.css | 54L |
| -rw-r--r-- | internal/web/styles/project_detail.css | 129L |
| -rw-r--r-- | internal/web/styles/projects.css | 91L |
| -rw-r--r-- | internal/web/templates/layout.gohtml | 64L |
| -rw-r--r-- | internal/web/templates/partials/about.gohtml | 76L |
| -rw-r--r-- | internal/web/templates/partials/blog.gohtml | 46L |
| -rw-r--r-- | internal/web/templates/partials/blog_detail.gohtml | 28L |
| -rw-r--r-- | internal/web/templates/partials/experience.gohtml | 65L |
| -rw-r--r-- | internal/web/templates/partials/footer.gohtml | 9L |
| -rw-r--r-- | internal/web/templates/partials/header.gohtml | 21L |
| -rw-r--r-- | internal/web/templates/partials/lightbox.gohtml | 11L |
| -rw-r--r-- | internal/web/templates/partials/project_detail.gohtml | 18L |
| -rw-r--r-- | internal/web/templates/partials/projects.gohtml | 28L |
| -rwxr-xr-x | static/amplifier/logo.svg | 9L |
| -rwxr-xr-x | static/favicon.png | 38823B |
| -rw-r--r-- | static/hark/logo.svg | 3L |
| -rwxr-xr-x | static/mandolin/company.jpeg | 458766B |
| -rwxr-xr-x | static/mandolin/company_silly.jpeg | 476108B |
| -rwxr-xr-x | static/mandolin/employee_polaroids.jpeg | 442617B |
| -rwxr-xr-x | static/mandolin/logo.svg | 11L |
| -rwxr-xr-x | static/mandolin/moment_polaroids.jpeg | 316922B |
| -rwxr-xr-x | static/me.jpg | 3096726B |
| -rwxr-xr-x | static/robots.txt | 4L |
| -rwxr-xr-x | static/site.webmanifest | 21L |
| -rw-r--r-- | static/style.css | 369L |