Atmos Weather is a native SwiftUI weather app prototype for iOS.
Build and run the app with XcodeBuildMCP:
../../build/cli.js simulator build-and-runFixture JSON files live in:
WeatherTests/Fixtures/
Current fixtures:
WeatherTests/Fixtures/default-locations.jsonWeatherTests/Fixtures/search-locations.jsonWeatherTests/Fixtures/weather-report-loc-current-san-francisco.json
OpenAI-compatible API schema files live in:
Schemas/
Current schemas:
Schemas/default-locations.schema.jsonSchemas/search-locations.schema.jsonSchemas/weather-report.schema.json
These schemas describe the JSON response shape expected by the DTO layer.
The production client is URLSessionWeatherAPIClient. It currently expects a JSON API rooted at:
https://api.atmosweather.example/v1
All endpoints are GET requests.
| Purpose | Method | Path | Request shape | Schema |
|---|---|---|---|---|
| Default saved locations | GET |
/locations/default |
No path params, query params, or body. | Schemas/default-locations.schema.json |
| Search locations | GET |
/locations/search |
Query string: query=<string> |
Schemas/search-locations.schema.json |
| Weather report for a location | GET |
/weather/{locationID} |
Path param: locationID=<WeatherLocationDTO.id> |
Schemas/weather-report.schema.json |
Default locations:
GET /v1/locations/defaultSearch locations:
GET /v1/locations/search?query=San%20FranciscoWeather report:
GET /v1/weather/loc-current-san-francisco- Responses must be JSON.
- Successful responses should use a
2xxHTTP status code. - Non-
2xxresponses are treated as API failures.
Run the app test suite through XcodeBuildMCP:
../../build/cli.js simulator testThe app uses bundled deterministic weather data so UI tests do not depend on the production API endpoint.