The website
The public pages of vulture-web (app/public.rb, views/). The API the apps call is in
vulture-web API, the /open/* page in Open page on the web.
| Path | Shows |
|---|---|
/ | Home: the hero with both store badges, the features in cards with opening a Soaring Spot competition up front, the ambassadors, Free and Pro, the services it works with, the browser extensions, the latest posts, and the badges again |
/features | Every feature as one index, filterable (see below) |
/download | New. Both stores, the visitor’s own first, and how Android and Apple differ (see below) |
/why, /faq | Why Vulture, and the questions; the FAQ now answers for Android too |
/blog, /blog/<slug> | The blog; a whole card is the link, and a screenshot opens full size on a tap |
/terms, /privacy | The legal pages, with a table of contents |
/delete-account | On main only so far: how to delete an Android account (routes) |
/open/* | The fallback for a Vulture link without the app; see Open page on the web |
/sitemap.xml | The pages above and the published posts; the branch lists /download but has lost /delete-account |
The header links to Features, Why, Blog (when a post is published) and FAQ, with a theme button and a Download button; on a phone they fold into a menu.
Store badges
Section titled “Store badges”Wherever the site offers the app it shows both badges (views/partials/store_badges.haml), the visitor’s own store
first, read from the user agent (Vulture::Platform#visitor_platform):
| User agent contains | Order |
|---|---|
Android | Google Play, App Store |
iPhone, iPad, iPod or Macintosh (iPadOS reports a Mac) | App Store, Google Play |
| anything else (Windows, Linux, a crawler) | Google Play, App Store |
- App Store: Apple’s localised badge, black on light pages and white on dark ones; Czech has no white badge and falls back to English.
- Google Play: Google’s localised badge, one version for both themes, linking to
be.fousa.vulture; a missing language falls back to English.
Download page
Section titled “Download page”Two cards, Android and “iPhone, iPad, Mac, and Apple Watch”, the visitor’s own marked “Your device” and first. Below them a comparison:
| Topic | Android | Apple |
|---|---|---|
| Price | Free to download; Vulture Pro starts with a free trial (both) | same |
| Sync | An optional Google sign-in syncs flights, tasks, files and settings between Android devices | iCloud syncs everything between Apple devices |
| Between Android and Apple | Logbooks stay separate for now; move a flight with its IGC file or through WeGlide (both) | same |
| Vulture Pro | Bought in Google Play, “also unlocks Pro on your Apple devices” | Bought in the App Store, “unlocks Pro on Android too” |
| Watch | — | Stats and health on the Apple Watch |
Features index
Section titled “Features index”/features lists every feature as data (app/features.rb, the features locale tree), one topic per section with
at most one screenshot. With scripts it adds a filter bar:
- a search field over the feature texts;
- Platform: All, Android or Apple;
- Plan: All, Free or Pro;
- tags: Pro (needs Vulture Pro), New, and Apple (not on Android).
The Pro tags follow ProFeature in the apps: creating, editing and scanning tasks, SkySight and the satellite clouds,
the Debrief’s parts, the thermal sheet, several flights on a map, your own airspace files, recording, statistics and
uploads. They must match the paid flags in the feature pages and
Vulture Pro; a change to what is Pro changes both. Without scripts every
feature is simply listed.
Theme and language
Section titled “Theme and language”- Theme: the site follows the system’s light or dark setting. The footer’s System / Light / Dark picker and the
header’s moon/sun button override it; the choice is kept in the browser (
localStorage) and applied before the page paints. The live site has no picker. - Language: detected from the browser’s
Accept-Language, in the eight languages. The footer’s language menu sends?lang=<code>, which sets alangcookie for a year and redirects to the same page without the parameter; the cookie then wins over the browser. The live site has no picker.
Calm on purpose: Geist and Geist Mono, one accent (#EC7F2C, the app icon’s orange) used sparingly, white cards
without borders on a light gray page (#f6f7f9), a frosted header, and generous space between sections. A dark set
(#0d1015 page) applies under the system’s dark mode or a picked dark theme. Text colours clear WCAG AA in both, and
the orange is never used behind white text. Layouts are checked at 412 px, a common Android width. Everything is in
one stylesheet, public/css/site.css. These docs use the same fonts and colours.
