Realtime communication. Secure APIs. Coordinated concurrency.
This repository contains three complete Advanced Go practice projects and a cinematic portfolio website that presents them. Every application has a real Go backend, an embedded responsive frontend, and a distinct visual identity.
| Project | Focus | Live Demo |
|---|---|---|
| 7.1 Signal Room | Gorilla WebSocket chat, goroutines, channels, presence, and message broadcasting | Open Signal Room |
| 7.2 Keyline Workspace | Gin REST API, JWT middleware, bcrypt passwords, and per-user task CRUD | Open Keyline |
| 7.3 Orbit Crawler | Concurrent worker pool, token-bucket rate limiting, cancellation, and SSRF protection | Launch Orbit |
| Portfolio | Interactive project showcase with motion, parallax, and NUTECH attribution | View Portfolio |
- Persistent Gorilla WebSocket connections
- Goroutine-powered broadcast hub
- Live user presence and system events
- Bounded message history and heartbeat pings
- Automatic client reconnection
- Registration and login with bcrypt password hashing
- Signed 24-hour JWT access tokens
- Gin authentication middleware
- Isolated task resources for each user
- Complete create, read, update, and delete workflow
- Bounded concurrent worker pool
- Token-bucket request rate limiting
- Same-origin crawl discovery
- Context cancellation and request timeouts
- Private-network and redirect protections
- Live crawl telemetry interface
PFAI/
├── chat/ Gorilla WebSocket server + embedded Signal Room UI
├── auth-api/ Gin JWT REST API + embedded Keyline UI
├── crawler/ Concurrent crawler + embedded Orbit UI
├── portfolio/ Interactive project showcase
├── render.yaml Render deployment configuration
└── run-all.ps1 Local launcher for all Go services
Each Go application embeds its frontend assets into the compiled binary, making it portable and easy to deploy.
Requirements:
- Go 1.24 or newer
- PowerShell for the optional combined launcher
Launch everything:
.\run-all.ps1Or run each application independently:
cd chat
go run .
# http://localhost:8081
cd ../auth-api
go run .
# http://localhost:8082
cd ../crawler
go run .
# http://localhost:8083Serve the portfolio with any static HTTP server:
cd portfolio
python -m http.server 4173cd chat; go test ./...; go build ./...
cd ../auth-api; go test ./...; go build ./...
cd ../crawler; go test ./...; go build ./...The production release was verified with:
- Two-client public WebSocket message delivery
- JWT registration, authentication, and secured task CRUD
- Concurrent crawling against public websites
- Responsive desktop and mobile portfolio rendering
| Service | Platform | URL |
|---|---|---|
| Portfolio | Vercel | https://pfai-go-lab.vercel.app |
| Signal Room | Render | https://pfai-signal-chat.onrender.com |
| Keyline Workspace | Vercel Go Runtime | https://pfai-keyline.vercel.app |
| Orbit Crawler | Vercel Go Runtime | https://pfai-orbit.vercel.app |
Signal Room runs on Render because WebSocket servers require a persistent process. Keyline currently uses an in-memory course-project store, so production data can reset when a Vercel instance is replaced.
Anas
National University of Technology, Islamabad
Advanced Go Practice · 2026