SIGO
Should I go outside?
A dead simple weather app that answers one question: should I go outside?
Built with Kotlin Multiplatform for Android & iOS.
Should I go outside? (or SIGO) is a weather app that fetches the forecast for your current location and gives you a Yes, No, or Maybe based on your weather preferences.
You configure your ideal temperature range, wind tolerance, and whether you mind rain or snow. The app checks the current conditions against those preferences and gives you an answer. A detailed forecast view is also available.
Built with Kotlin Multiplatform. Forecasts from the Visual Crossing API.
Motivation
This is a fun side project to explore Compose Multiplatform and Kotlin Multiplatform in general. It targets Android, iOS, Desktop, and even has a CLI and backend API. I hope others can learn from it, whether you're just getting started with KMP or looking for a real-world example of how to structure a multiplatform project.
For a deeper look at how the project is organized, check out the Architecture documentation.
What if I want to roll my own?
The repo is open source, so you can host your own backend and build the app yourself.
There are two ways to set up the app:
- Hosted backend API
- Cloudflare Workers or a standalone JVM server (Docker)
- Direct access to the Weather API via the app
- This requires you to add your API Token to the
./app-env.propertiesfile - The token is embedded via BuildConfig, and the app will call the weather API directly
- This requires you to add your API Token to the
Setup
Get an API key from Visual Crossing, then clone the repo:
git clone git@github.com:jordond/sigo
cd sigo
Run the init script:
# Prompts for your Visual Crossing API key
./sigo init
# Optional, for development
./sigo init ktlint
./sigo init hooks
This stores your API key in app-env.properties. If you're deploying a custom backend to
Cloudflare, also set APP_BACKEND_URL in that file.
Building front-end app
Decide whether you're using a Custom Backend or calling
the Visual Crossing API directly, then edit app-env.properties:
Custom Backend
# app-env.properties
APP_BACKEND_URL=https://api.my-domain.net
USE_DIRECT_API=false
FORECAST_API_KEY=<your Visual Crossing API key>
Direct to Visual Crossing
# app-env.properties
USE_DIRECT_API=true
FORECAST_API_KEY=<your Visual Crossing API key>
Note: Set ENABLE_INTERNAL_SETTINGS=true to change these values at runtime in the app.
Build the client app:
If you're using the Direct API, you're done. For a custom backend, see below.
Custom Backend API
The backend proxies requests to the weather API. Implementations:
- Cloudflare Worker
- JVM Server (Docker)
- Firebase Function
AI Disclaimer
Claude Code was used to assist with development, but the majority of the planning, architecture, and code was written by me.
