{"id":50653864,"url":"https://github.com/antarctica/icebox","last_synced_at":"2026-06-07T22:36:00.115Z","repository":{"id":340967648,"uuid":"1165891805","full_name":"antarctica/icebox","owner":"antarctica","description":"Sea ice data acquisition and analysis system ","archived":false,"fork":false,"pushed_at":"2026-02-27T10:56:18.000Z","size":2338,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-27T15:46:14.815Z","etag":null,"topics":["antarctica","aspect","react","sea-ice","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antarctica.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-24T16:52:33.000Z","updated_at":"2026-02-27T11:01:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/antarctica/icebox","commit_stats":null,"previous_names":["antarctica/icebox"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/antarctica/icebox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antarctica%2Ficebox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antarctica%2Ficebox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antarctica%2Ficebox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antarctica%2Ficebox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antarctica","download_url":"https://codeload.github.com/antarctica/icebox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antarctica%2Ficebox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34041088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["antarctica","aspect","react","sea-ice","typescript"],"created_at":"2026-06-07T22:35:57.262Z","updated_at":"2026-06-07T22:36:00.109Z","avatar_url":"https://github.com/antarctica.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IceBox\n\n[![Version](https://img.shields.io/badge/version-2.0.0-blue)](https://github.com/antarctica/icebox/releases)\n[![License](https://img.shields.io/github/license/antarctica/icebox)](LICENSE)\n[![React](https://img.shields.io/badge/React-19-61DAFB?logo=react\u0026logoColor=white)](https://react.dev)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org)\n[![Vite](https://img.shields.io/badge/Vite-6-646CFF?logo=vite\u0026logoColor=white)](https://vitejs.dev)\n\nIceBox 2.0.0 is a modernisation and refactor of [IceBox v1.8.3](https://aws.data.aad.gov.au/aspect/), the [Antarctic Sea Ice Processes and Climate (ASPeCt)](https://aspectsouth.org/) observation software for collecting and analysing sea ice data during research cruises.\n\nPlease refer to the [ASPeCt Sea-Ice cards](https://aspectsouth.org/wp-content/uploads/2024/06/sea-ice-cards_LOGODOI.pdf) for guidelines on classifying sea ice and recording data.\n\n## Overview\n\nThis application enables researchers to:\n- Record sea ice observations with coordinates\n- Track meteorological data (temperature, wind, cloud cover)\n- Document ice conditions and concentrations\n- Analyse and filter observation data\n- Export data in CSV and ASPECT formats\n- Import bulk observations from CSV files\n\nOriginally developed by the Australian Antarctic Division (AAD), this is a refactoring by the British Antarctic Survey (BAS) using modern web technologies while preserving all original functionality.\n\n## Screenshots\n\n### Cruise Overview\n![Cruise List](public/cruises.png)\n\n### Observations Overview\n![Observations](public/observations.png)\n\n### Analysis \u0026 Filtering\n![Analysis \u0026 Filtering](public/analysis.png)\n\n### Importing observation data\n![Import](public/import.png)\n\n## Quick Start\n\n```bash\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n```\n\nVisit **http://localhost:5173/** to use the application.\n\n## Development\n\n### Available Scripts\n\n```bash\n# Development server with HMR\nnpm run dev\n\n# Type checking\nnpm run build\n\n# Linting\nnpm run lint\n\n# Preview production build\nnpm run preview\n```\n\n### Building for Production\n\n```bash\nnpm run build\n```\n\nOutput is in the `dist/` directory, ready for static hosting or Electron packaging.\n\n## Configuration\n\n### TypeScript\n- Strict mode enabled for maximum type safety\n- Separate configs for app code (`tsconfig.app.json`) and Node tooling (`tsconfig.node.json`)\n\n### ESLint\n- Flat config format (ESLint 9+)\n- React hooks rules enabled\n- TypeScript-aware linting\n\n### Tailwind CSS\n- Custom configuration in `tailwind.config.js`\n- PostCSS processing with `@tailwindcss/postcss` plugin\n- Modern `@import \"tailwindcss\"` syntax (v4)\n\n### IndexedDB\n\nAll data is stored locally in **IndexedDB** via Dexie.js:\n- Works offline, no server required\n- Data persists across browser sessions\n- Full CRUD operations with TypeScript type safety\n- Database schema includes **Cruises** and **Observations**\n\n## Data Model\n\n### Cruise\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `uuid` | string | Yes | Unique identifier |\n| `name` | string | Yes | Cruise name |\n| `voyage_leader` | string | Yes | Name of the voyage leader |\n| `captain_name` | string | Yes | Name of the captain |\n| `start_date` / `end_date` | Date | Yes | Cruise date range |\n| `voyage_vessel` | string | No | Vessel name |\n| `voyage_ice_rating` | string | No | Ice class rating of the vessel |\n| `rostered_persons` | RosteredPerson[] | No | Observer roster with hourly assignments |\n| `measurement_reference` | string | No | Reference point for measurements |\n\n### Observation\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `uuid` | string | Yes | Unique identifier |\n| `cruise` | string | Yes | FK to Cruise |\n| `entry_datetime` | Date | Yes | UTC timestamp of the observation |\n| `latitude` / `longitude` | number | Yes | GPS position |\n| `total_ice_concentration` | number | No | Total concentration (tenths, 0–10) |\n| `open_water_type` | string | No | Open water type code |\n| `primary_ice` | IceObservation | No | Primary ice category |\n| `secondary_ice` | IceObservation | No | Secondary ice category |\n| `tertiary_ice` | IceObservation | No | Tertiary ice category |\n| `air_temp` / `water_temp` | number | No | Temperatures in °C |\n| `wind_speed` | number | No | Wind speed in m/s |\n| `wind_direction` | number | No | Wind direction in degrees (0–360) |\n| `cloud_cover` | number | No | Cloud cover in oktas (0–8) |\n| `visibility` | string | No | Visibility category |\n| `weather` | string | No | Weather description |\n| `observer` | string | No | Observer name |\n| `comments` | string | No | Free-text notes |\n\n### IceObservation (per category)\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `ice_concentration` | number | Yes | Concentration in tenths (0–10) |\n| `ice_type` | string | Yes | ASPeCt ice type code (e.g. `FY`, `MY`) |\n| `ice_thickness` | string | Yes | Thickness code or range |\n| `floe_size` | string | Yes | Floe size code (e.g. `S`, `M`, `G`) |\n| `topography` | string | Yes | Topography code (e.g. `R3`, `H1`) |\n| `snow_type` | string | No | Snow type code |\n| `snow_thickness` | string | No | Snow thickness code |\n| `brown_ice` | string | No | Brown ice indicator |\n| `melt_pond_coverage` | number | No | Melt pond areal coverage (%) |\n| `melt_pond_depth` | number | No | Melt pond depth (m) |\n| `melt_pond_length_1/2` | number | No | Melt pond dimensions (m) |\n\n\n## Credits\n\nFor IceBox v2.0.0 onwards:\n\n* **Author**: British Antarctic Survey\n* **Developer**: Thomas Zwagerman\n\nThis is a refactor of the original IceBox v1.8.4. For all version up to v1.8.4:\n\n* **Original Author**: Australian Antarctic Division  \n* **Original Developer**: James Rakich (Maluco Marinero)  \n* **Original Repository**: https://bitbucket.org/MalucoMarinero/aspect\n\n## License\n\nSee LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantarctica%2Ficebox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantarctica%2Ficebox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantarctica%2Ficebox/lists"}