# Field Survey

> STILL UNDER CONTRUCTION

**Your field notebook, on your phone.**

-   **Fits any field survey** — define your own fields, sections, and data types with a simple template; no coding required
-   **Already digital** — no retyping when you get back, no transcription errors
-   **Instant export** — produce a clean spreadsheet, ready to analyze
-   **Automatic timestamps** — the app fills in the time, no checking your watch
-   **Built-in GPS** — record coordinates with a tap, no manual noting
-   **Photos embedded in records** — attach images directly to each observation
-   **Works fully offline** — no signal needed in the field

{{% notice style="warning" title="Alpha software — use with caution" %}}
This app is under active development. Always verify your exports and keep independent backups before relying on FieldSurvey for critical fieldwork. The author takes no responsibility for data loss.
{{% /notice %}}

{{% button href="#" style="default" icon="download" %}} F-Droid {{% /button %}}
{{% button href="#" style="default" icon="book" %}} Template Gallery {{% /button %}}
{{% button href="#" style="default" icon="wrench" %}} Template Builder {{% /button %}}

---


## How It Works {#how-it-works}

📄 Template (.yaml)  →  📥 Import  →  📝 Fill records  →  📊 Export (XLSX / ODS)

1.  📄 **Get a template** — a `.yaml` file that defines your project's structure
2.  📥 **Import it** — paste a URL, scan a QR code, or open a local file
3.  📝 **Fill records in the field** — log each observation as a Record
4.  📊 **Export when done** — get an XLSX or ODS spreadsheet for analysis

---

A template is a plain YAML file. Example:

```yaml
Name: Bird Count Survey
Description: Weekly waterbird census at the reserve.
UUID: 482f19b6-9b87-43c9-aa48-aed8349d3b0b
Version: 1
Sections:
  Survey Session:
    Variables:
      Date:
        Type: Date
        AutoNow: True
        Required: True
      Weather:
        Type: Option
        Options:
          - Sunny
          - Cloudy
          - Rainy
        Default: Sunny
      Surveyor:
        Type: Option
        Weight: 127
        Options:
          - Mary
          - Tom
          - Lisa
          - James
        Multiple: True
        Expandable: True
      ObserveRegion:
        Type: PolygonMap
        Required: True
  Bird Record:
    Parent: Survey Session
    SpawnChild: True
    Variables:
      Species:
        Type: Option
        Expandable: True
        Options: [Mallard, Heron, Cormorant, Other]
      Count:
        Type: Int
        Min: 1
        Default: 1
      Photo:
        Type: Photo
        Multiple: True
      Notes:
        Type: Markdown
```

**Full template reference →** [YAML Format](/apps/field_survey/guide/yaml_format)


## Supported Variable Types {#supported-variable-types}

| Type                         | Description                                                                                 |
|------------------------------|---------------------------------------------------------------------------------------------|
| `String`                     | Free text                                                                                   |
| `Int`                        | Integer (optional Min / Max / Default)                                                      |
| `Float`                      | Decimal number (optional NumValues for consecutive readings, NumDigits for fixed precision) |
| `Boolean`                    | Yes / No toggle                                                                             |
| `Date` / `Time` / `DateTime` | Date/time pickers (AutoNow pre-fills current time)                                          |
| `Option`                     | Dropdown / radio (Expandable: add custom entries, Multiple: pick several)                   |
| `OptionCount`                | Count per option (e.g. species tally)                                                       |
| `LocationMap`                | GPS point on a map                                                                          |
| `PathMap`                    | Draw a path on the map                                                                      |
| `PolygonMap`                 | Draw polygon on the map                                                                     |
| `Photo`                      | Camera or gallery (Multiple: allow several photos)                                          |
| `Markdown`                   | Formatted notes                                                                             |

and... upcoming types in the future...

---


## Roadmap {#roadmap}

| Phase    | Focus                                              | Status    |
|----------|----------------------------------------------------|-----------|
| **KMP**  | Kotlin Multiplatform — iOS (iPad / iPhone) support | 📋 Planned |
| **beta** | Polish — dark mode, localization, better icon      | 📋 Planned |

---


## Support This Project {#support-this-project}

FieldSurvey is free and open source. If it saves you time in the field, consider buying me a coffee ☕

{{% button href="#" style="default" %}} Ko-fi {{% /button %}}
{{% button href="#" style="default" %}} PayPal {{% /button %}}

---


## Community {#community}

Questions, template help, or feature ideas? Open an issue on Codeberg.

**[Report a bug / ask a question](https://codeberg.org/even311379/FieldSurvey/issues)**
