One place a day. Pin it on the map. The answer comes at 20:00.
A daily geo-guessing game for Telegram groups, built as a Go bot with a Mini App.
How A Day Goes · How It Works · Fair Play · Prototype · Docs
A group chat wants something small to do together every day that is not another poll or another sticker war. Geo-guessing games are fun, but they are solo, endless, and live outside the chat.
maply is deliberately narrow:
| Need | maply approach |
|---|---|
| One shared thing a day | The same place for every DM, every group and the site |
| No spoilers in the chat | Everyone answers in the Mini App; pins appear only at 20:00 |
| Not another chatterbot | At most three group messages a day: post, intrigue, result |
| Something to talk about | One honest hint between 16:00 and 18:00, then the reveal |
| A reason to come back | Streaks, a chat leaderboard, a share line without spoilers |
| Familiar stack | Go, the family's tg client, shared Asterfield core |
Result: a five-minute ritual that the whole chat plays at its own pace and argues about in the evening.
| Channel | Version | Meaning |
|---|---|---|
| Stable | — | Nothing released yet |
| Next | v0.1.0-alpha.1 |
The Go service, the daily round and the Mini App |
The design, the MVP plan and a clickable prototype of the Mini App are here.
The service is not written yet. Work is tracked on the
project board; what the MVP
includes and where it departs from the design is in
docs/mvp-plan.md.
Time follows the capital of the chat's language: Moscow for ru, Minsk for be, Kyiv for uk.
| Time | Group | DM |
|---|---|---|
| 07:00 | Photo of the day, a "Guess" button, a quiet pin | Photo of the day and the button |
| 07:00–20:00 | The pin shows who has answered, without distances | — |
| A random minute 16:00–18:00 | One intrigue, if not everyone has answered | One reminder, if you have not |
| 20:00 | The result: the place, a fact, the table, the chat's rank | The result, if you are in no group with maply |
Score is up to 5 000: up to 3 500 for distance on the same curve GeoGuessr uses for the world map, plus +300 for the right continent, +500 for the country and +700 for the city.
maply will be one Go service with PostgreSQL as its only durable store. Domain
tables live in a maply schema in the shared core-postgres; identity,
presence and language come from core. Telegram goes through
FreshLabDev/tg with long polling.
telegram poller -> bot: /start, settings, operator chat
scheduler -> post 07:00 -> pin edits -> intrigue 16-18 -> result 20:00
http server -> Mini App, /api/today, /api/guess, /api/result, /img/, /healthz
Places come from Mapillary, with Panoramax as a second source. A script picks candidates from weighted regions, a vision model rates them, and an operator approves each one in a private chat. The queue holds at least 30 days.
The layout of the repository and every package is in
docs/architecture.md.
- One answer per person per day, shared across DMs, groups and the site.
- Your window closes at the earliest reveal among all your chats, so a Kyiv group cannot learn the answer from a Moscow group an hour earlier.
- Before the reveal the server answers a guess with "accepted" and nothing else.
- Pictures are rehosted under random names without EXIF. Source IDs never leave the server: a Mapillary ID resolves to coordinates through its public API.
- Reverse image search is not defended against. Like Wordle, the rest is on your honour.
The Mini App prototype is one HTML file with no build step:
cd web/prototype
python3 -m http.server 4173Open http://localhost:4173/ at phone width. ?state=reveal jumps to the
result screen. To see the Telegram integration in a normal browser, append
#tgWebAppData=auth_date%3D1%26hash%3Dx&tgWebAppVersion=8.0&tgWebAppPlatform=ios.
The curation scripts need a Mapillary client token in .env; see
.env.example.
| Document | Purpose |
|---|---|
| Design | The game: cycle, scoring, anti-cheat, intrigue, places |
| MVP plan | Scope, stages, decisions, risks |
| Architecture | Repository layout, packages, data flow |
| Versioning | Pre-release and stable version line |
| Release process | Changelog, GitHub Release, deploying |
| Project board | Every task and its status |
Project board · Changelog · Apache-2.0 · NOTICE
maply is open source software by Asterfield.
Copyright 2026 Asterfield.