Go-Notion Contact Bridge (Internal Project: Client Ping) is an efficient third-party API service designed to handle contact forms on portfolio or static websites. This service bridges frontend submissions directly to a Notion database asynchronously using a robust concurrency system.
Built to solve a simple problem: handle contact forms without relying on paid services or slowing down the frontend.
- No third-party form services (self-hosted)
- Notion as a centralized inbox
- Instant response to users (non-blocking API)
Submit a contact message.
Request Body
{
"name": "Wafley",
"email": "wafley@example.com",
"message": "Hello, I'm interested in collaborating on a Go project!"
}Responses
202 Accepted→ queued successfully422 Unprocessable Entity→ missing fields400 Bad Request→ invalid JSON
- Go (Golang)
- Clean Architecture
- Worker Pool (Goroutines + Channels)
- Notion API Integration
- Request hits the API
- Data is pushed into a buffered channel
- API responds immediately (
202) - Workers process and send data to Notion in parallel
No blocking. No waiting. No degraded UX.
.
├── cmd/api/ # Entry point
├── internal/
│ ├── app/ # Worker & dispatcher logic
│ ├── handler/ # HTTP layer & validation
│ ├── model/ # Data structures
│ └── service/ # Notion integration
└── logs/ # Logs & error tracking
git clone https://github.com/wafley/client-ping.git
cd client-pingCopy .env.example to .env and fill in your credentials::
PORT=3030
NOTION_TOKEN=your_secret_token
NOTION_DATABASE_ID=your_db_idRun:
go run cmd/api/main.gogo test -v -cover ./...~90% coverage including concurrency and external API mocking.
- Report bugs or request features: open an issue on GitHub → issues
- Discuss ideas and roadmap: GitHub Discussions (if enabled) → discussions
Created with ❤️ by wafley