Skip to content

NAFA is a journey planning app designed to help neurodiverse adventurers navigate public transport and sensory-rich environments with calm, confidence, and symbolic clarity.

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE.txt
Unknown
LICENSE-PALIMPSEST.txt
Notifications You must be signed in to change notification settings

hyperpolymath/nafa-app-ambient

Repository files navigation

NAFA – Neurodiverse App for Adventurers

Vision

NAFA is a journey planning app designed to help neurodiverse adventurers navigate public transport and sensory-rich environments with calm, confidence, and symbolic clarity.

We encode sensory awareness, accessibility preferences, and offline resilience into every module—making NAFA not just a tool, but a companion.

Tech Stack

Layer Technology

Runtime

Deno – secure, modern JavaScript/TypeScript runtime

Client Logic

ReScript – type-safe, compiles to clean JavaScript, TEA pattern

Server

Deno HTTP – REST API with JSON responses

Mobile

Tauri 2.0 – Rust backend + web UI (iOS/Android)

Desktop

Tauri 2.0 – native performance, no Electron bloat

Configuration

Nickel – typed configuration language for badge logic

Routing Data

GraphHopper + OpenStreetMap (planned)

Language Policy

Following the Hyperpolymath Standard:

Allowed Banned

ReScript, Rust, Deno, Gleam

TypeScript, Node.js, npm, Go

JavaScript (Deno APIs only)

Python (except SaltStack)

Tauri 2.0, Dioxus (mobile)

Kotlin, Swift, React Native, Flutter

Features

MVP (Complete)

  • Journey Planning – Sensory-aware route segments with warnings

  • Sensory Annotations – Crowdsourced location data (noise/light/crowd levels)

  • Accessibility Settings – Text size, contrast, motion, haptics, screen reader support

  • Offline Mode – Cached journeys, sync status, works without internet

Planned

  • Real-time routing integration

  • Tauri mobile apps (iOS/Android)

  • Haptic feedback via Rust/Tauri plugins

  • AR overlays for calm zone detection

  • Biometric sensing via wearable integration

Project Structure

nafa-app-ambient/
├── client/                    # ReScript SPA (TEA pattern)
│   ├── src/
│   │   ├── Main.res          # App entry point
│   │   └── Page/
│   │       ├── JourneyView.res
│   │       ├── Annotate.res
│   │       ├── Accessibility.res
│   │       └── Offline.res
│   └── rescript.json
│
├── server/                    # Deno HTTP server
│   ├── src/
│   │   ├── main.js           # REST API
│   │   └── demo.js           # CLI demo
│   └── deno.json
│
├── shared/                    # Shared domain types
│   ├── src/
│   │   ├── Domain.res        # Core types
│   │   └── Route.res         # Type-safe routing
│   └── rescript.json
│
├── nickel-rituals/            # Badge/tier configuration
│   ├── badge.ncl
│   └── tier.ncl
│
├── scripts/                   # Build automation
├── Justfile                   # Task runner
├── Containerfile              # Deno container build
└── PLAN.adoc                  # Migration roadmap

Quick Start

# Run the CLI demo (shows all features)
just mvp-demo

# Start the API server
just mvp-server

# Development mode with watch
just mvp-dev

Requirements

Mobile Strategy

NAFA uses Rust-first mobile development via:

Tauri 2.0

  • Web UI (ReScript) + Rust backend

  • Single codebase for iOS, Android, desktop

  • Native performance, minimal bundle size

  • MIT/Apache-2.0 licensed, no Big Tech dependencies

Dioxus (Alternative)

  • Pure Rust with React-like syntax

  • Native UI components

  • WASM support for web

Both approaches avoid Kotlin/Swift entirely, keeping the stack unified around Rust.

Ambient Extensions

NAFA is designed to interoperate with sensory hardware:

  • Haptic Feedback – Via Rust/Tauri plugins to device APIs

  • Visual Overlays – AR glasses integration (future)

  • BLE Beacons – Calm zone detection

  • Wearables – Heart rate, stress indicators

All integrations use Rust for the native layer, exposed to the ReScript UI via Tauri commands.

Contributor Tiers

NAFA uses symbolic badge logic to recognise contributors:

Badge Criteria

Initiate

First calm journey completed

Curator

Contributed sensory annotation

Guardian

Tested emergency fallback features

Companion

Assisted others in sensory-rich zones

Badge logic is defined in nickel-rituals/badge.ncl.

API Endpoints

Method Path Description

GET

/api/journey/:id

Retrieve journey by ID

GET

/api/annotations

List all sensory annotations

POST

/api/annotation

Create new annotation

Development

Build Commands

just mvp-demo      # Run CLI demo
just mvp-server    # Start server on :8080
just mvp-dev       # Server with --watch
just mvp-build     # Build ReScript modules
just mvp-check     # Type-check server files

Container Build

podman build -f Containerfile -t nafa:latest .
podman run -p 8080:8080 nafa:latest

Licensing

NAFA is dual-licensed under:

  • MIT – For maximum flexibility

  • AGPL-3.0-or-later – For copyleft protection

All source files include SPDX license headers.

Join the Journey

NAFA is a living project. Every commit, annotation, and accessibility improvement is a step toward calmer, more inclusive travel.

Contributions welcome – see CONTRIBUTING.md.

About

NAFA is a journey planning app designed to help neurodiverse adventurers navigate public transport and sensory-rich environments with calm, confidence, and symbolic clarity.

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE.txt
Unknown
LICENSE-PALIMPSEST.txt

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published