Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
날씨와 시간에 따라 색이 변하는 전체 화면 그라디언트와 SwiftUI Canvas로 그린 거리 수준 세계를 체험하는 지도
A map that’s meant to be experienced, not read: a full-screen gradient that shifts with weather and time of day, over a street-level world drawn in a SwiftUI Canvas.
라이프스타일GitHub @arturoa925온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
A street-level map for iPhone that reacts to weather, time of day and how you move. Custom SwiftUI Canvas renderer with OpenStreetMap data.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗the world, beautifully alive
Drift is an iOS map app that treats the map as something alive rather than a utility. Instead of a flat, static map, it shows the world from street level over a full-screen atmospheric gradient that shifts with the time of day, the weather, and your movement. Real streets and buildings from OpenStreetMap are drawn as soft, low-opacity shapes, so the gradient does most of the emotional work.
Case study: How Drift is designed and built on my portfolio, covering the architecture, code decisions and trade-offs.
It's built to feel like the opposite of Google Maps: motion without urgency and no pressure to get anywhere.
🤖 My first project built entirely by prompting AI. See Built with AI below.
🚧 Work in progress. The theme engine, sensors, weather, and street-level renderer are working. Onboarding, settings, and the floating controls are still stubs. See Status.
Drift is the first project I've built entirely through AI prompting. In my other apps (Launch Control, Axis) I wrote the code myself and used AI for specific tasks like tests, debugging, and UI tweaks. With Drift I wanted to see how far I could get by directing instead of typing.
What I did
claude.md, a living design spec that gives Claude the full project context at the start of every sessionWhat the AI did
What I took away is that prompting well is mostly product and engineering judgment: being precise about what you want, catching where the AI's output drifts from your vision, and knowing when to change the plan.
The screen's look comes from one function, ThemeEngine.theme(weather:timeOfDay:), which turns two inputs into a gradient:
| Priority | Input | Source |
|---|---|---|
| 1 | Weather: rain, snow, storm, and fog override the time of day | Open-Meteo (free, no API key) |
| 2 | Time of day: sunrise, midday, sunset, night | SunCalculator, offline using the sunrise equation |
| — | Movement: still, walking, biking | CoreMotion activity data. Drives animation only, never color |
There are 8 hand-tuned gradients in all. One design rule holds for every theme: it never goes fully dark. Even at night or in a storm, the bottom of the gradient fades to a pale tone, so the mood is atmospheric rather than gloomy. Snow is the one theme that switches the text to a dark color.
MapModel keeps the theme current for four reasons: a new GPS fix, a once-a-minute clock tick (the sun keeps moving even when you don't), a finished weather fetch, and a weather refresh every 15 minutes.
Drift doesn't use MapKit for rendering. WorldView draws everything itself in a SwiftUI Canvas, from a third-person camera placed a few meters behind and above you, looking down the street you're facing.
WorldMotion estimates your position along your velocity between fixes and eases toward each new one, so the world glides instead of jumping.RoadNetworkService and BuildingNetworkService fetch real road geometry, street names, and building footprints from OpenStreetMap through the free Overpass API. Each fetch covers twice the area being drawn, and the services only fetch again once you've moved outside it, so they stay well within a shared free API's limits. The placeholder generators are still around for offline SwiftUI previews.
| Area | State |
|---|---|
| Theme engine + 8 gradients | ✅ |
| Offline sunrise/sunset calculation | ✅ |
| Live weather (Open-Meteo) | ✅ |
| Location, compass heading, motion activity | ✅ |
Street-level 3D renderer (WorldView) | ✅ |
| Real OSM roads + buildings (Overpass) | ✅ |
| User pulse dot (speed-aware) | ✅ |
| Onboarding (welcome, theme mode, contextual permissions) | 🔲 stubbed |
| Settings | 🔲 stubbed |
| Floating controls (weather/time pill, speed pill, place search) | 🔲 stubbed |
| Fading movement trail | 🔲 stubbed |
Preferences (@AppStorage) | 🔲 stubbed |
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗