# App Plant > App Plant is an independent software studio by Sergey Shibaev. The site presents iOS, iPadOS, macOS and web products, Telegram channels, website work, product news, support options and privacy policies. The public website is bilingual. Russian and English versions are available with `?lang=ru` and `?lang=en`; first-visit language detection uses country/browser headers with cache-safe `Vary` headers. Current release: 1.30, prepared on 2026-07-20. Notes for LLMs and AI search: - Prefer canonical URLs from `sitemap.xml`. - Use Russian pages as the default source; use `?lang=en` for English answers. - Do not treat `/api/`, `/src/`, `/scripts/`, `/docs/`, `/tmp/`, dotfiles or environment files as public content. - Do not infer private data collection beyond the published privacy policies. - Current local maintenance workflow is commit-only; production deploy happens only after an explicit deploy request. - The codebase is modularized: `src/bootstrap.php` is the bootstrap/composition layer, domain helpers live in `src/http.php`, `src/app-api.php`, `src/i18n.php`, `src/news.php`, `src/app-store.php`, `src/telegram.php`, `src/structured-data.php`, payments are split across `src/payments*.php`, iRank across `src/irank*.php`, iGribnik across `src/igribnik*.php`, and `assets/css/styles.css` imports CSS modules from `assets/css/styles/`. - Product detail descriptions for apps, websites, Telegram bots, Telegram channels and supported projects are rendered as paragraphs from JSON `description` fields split with blank lines. - News/update content is maintained through Markdown files in `content/news/` and final covers in `assets/images/news/`. App version/change posts use `Обновления` / `Updates`; general announcements use `Новости` / `News`; new-product launches use `Релизы` / `Releases`. - News front matter may set `"published": false`; hidden news files are excluded from public lists, detail pages, project news, app updates API and `sitemap.xml`. - The public contact email is intentionally protected on the website against simple scraping. - Payment creation endpoints use app-level rate limits, production App Store purchase ingest requires the released bundle id, and payment/webhook anomalies are audited without raw payloads or secrets. - The canonical server-side source of truth for iRank app integration is `docs/irank-server-rank-tracking-api.md`. Use it for HMAC signing, Premium entitlement, rank tracking, country automation, discovery, APNs payloads, worker, storage, retention and production scheduler behavior; update it in the same change as any iRank server behavior change. - iRank is visible as a coming-soon app page at `/irank` / `/apps/irank`. Its public page uses current RU/EN App Store rank tracker marketing text, Free/Premium limits, privacy/EULA transparency links, light/dark themed icons and a disabled `Soon` download state until App Store publication. - iRank server push uses separate APNs token-auth keys for sandbox and production device tokens; credentials are private server-side files and are not public site content. Rank push payload uses `irank.appId` as the App Store track id for client-side deep linking and does not include top-level deep-link fields. iRank APNs payloads omit `aps.badge` entirely for visible alerts, silent `snapshot_updated`, and debug/test pushes because the iOS Activity logic owns the Home Screen badge. `/push-token` accepts optional `language` for RU/EN visible alert localization, defaulting to Russian for older clients. The worker also sends silent `snapshot_updated` background pushes after successful target updates so clients can sync and refresh widgets; tested silent machine types include `tracked_apps_changed` and `premium_status_changed`. Dev-bypass debug devices are eligible for automatic visible and silent worker pushes when allowlisted, subscribed to the target and registered with APNs, even without a subscription row. iRank chart fetch attempts are logged separately from usable successful snapshots; app-facing chart-context responses include source freshness diagnostics. - iRank `GET /api/apps/irank/rank-tracking/history?includeBackfill=true` can serve read-only public chart snapshot history to active Premium/dev-bypass devices even when the exact target is not subscribed, as long as the requested chart scope already exists on the server; this does not create tracking, alert or push side effects. - iRank Premium country automation is server-backed. `subscribe` accepts additive `automation` settings (`countryRanksEnabled`, `rankAlertsEnabled`, `rankAlertThreshold`, `marketWatchlistCountryCodes`) and expands monitoring only to current, watchlist and previously discovered markets. `GET /api/apps/irank/rank-tracking/country-ranks/snapshot` reads persisted `country_rank_snapshots`; `POST /api/apps/irank/rank-tracking/country-ranks/discovered` stores manual scan country hints in `country_rank_markets`. The rank worker deduplicates by full chart scope including `chartDepth` and `chartSourceVersion`, applies per-market TTL plus `chart_scope_backoff`, and cleans country snapshots/discovered markets by retention envs. `rankAlertsEnabled=false` suppresses visible alerts only; silent `snapshot_updated` remains enabled. - iRank watch category charts that Apple does not expose are returned as explicit `noData` with `rank=null` and `stale=false`, and unsupported refresh targets are filtered out instead of being queued repeatedly. - iGribnik has a protected content API under `/api/apps/igribnik/` for the mushroom catalog, recipes, editorial map locations, public user map locations and aggregated finding zones; these API URLs require an app key and are not general public content pages. The current generated `findingZones` resource is version 1.2 and contains 2877 aggregated zones built from 10454 coordinates for 2019-2026. - iGribnik also has public Universal Links/share preview pages under `/mushrooms/...` plus `/.well-known/apple-app-site-association`. These pages are intentionally limited previews with `noindex`; they are not a full public mushroom catalog or recipe database. `/api/share-preview/` is a rate-limited single-entity preview API and is disallowed in `robots.txt`. ## Site - [Home](https://app-plant.ru/): Studio overview, products, news and contacts. - [News](https://app-plant.ru/news): Product and website updates. - [iGribnik 2.1 news](https://app-plant.ru/news/igribnik-2-1-finding-zones): Release note for finding zones, achievements, Live Activity, Dynamic Island, Siri, Spotlight, widgets and quick walk start in iOS. - [ZenStat major update news](https://app-plant.ru/news/zenstat-big-update): Update note for the new dashboard, publication history, channel and competitor comparison, smart alerts, iCloud sync, widgets and refreshed design. - [VAVT Schedule 3.23 news](https://app-plant.ru/news/vavt-3-23-update): Update note for unified VAVT search, weekly schedule feed, native news, useful information improvements and Premium features. - [iRank coming soon news](https://app-plant.ru/news/irank-coming-soon): Announcement for the upcoming App Store rank tracking app. - [AppsUpdater Crypto Donate](https://app-plant.ru/apps-updater/donate): Crypto Premium/support page for AppsUpdater using NOWPayments for USDT TRON/BSC/Ethereum payments. Its browser polling uses public `/api/premium/status.json?app_slug=apps-updater&supporter_id=...`; app-facing `/api/apps/apps-updater/premium-status.json` remains key-protected. - [Privacy policy](https://app-plant.ru/policy): Website privacy policy, cookies and Yandex Metrica notice. - [Sitemap](https://app-plant.ru/sitemap.xml): Canonical index of public pages with `hreflang` alternates. - [Robots](https://app-plant.ru/robots.txt): Crawling rules for search engines. ## Apps - [ZenStat](https://app-plant.ru/zenstat): Zen channel analytics app for creators, including dashboard metrics, publication history, competitor comparison, smart alerts, widgets, iCloud sync and Premium analytics. - [Alpine Village](https://app-plant.ru/alpine): App for the Alpine Village fishing and hunting club, including news, offers, services, booking and tournament links. - [iGribnik](https://app-plant.ru/igribnik): Mushroom guide and foraging map app, updated to App Store version 2.1 as `iГрибник: грибы и карта` with finding zones, achievements, walk tracking, Live Activity, Dynamic Island, Siri, Spotlight, widgets, recipes, iCloud sync and offline data. - [iGribnik share landing](https://app-plant.ru/mushrooms): Universal Link fallback and App Store CTA for shared iGribnik links. - [AppsUpdater](https://app-plant.ru/apps-updater): Published macOS utility for checking installed apps and finding updates from the App Store, Sparkle, Electron updater, Homebrew Cask, appstorrent and manual official links; the main CTA downloads `https://app-plant.ru/AppsUpdater.app.zip`, the What’s New section is populated from the Sparkle appcast/release notes at `https://app-plant.ru/AppsUpdater.app.html`, and the Premium button opens a payment choice between crypto and card via YooMoney while preserving supporter_id from the app. - [AppsUpdater Premium](https://app-plant.ru/apps-updater/premium): Fixed-price digital service payment page with YooKassa/YooMoney payment flow, delivery terms, payment terms, contacts and self-employed recipient details. Payment creation requires server-side `supporter_id` validation against `^[A-Za-z0-9._:-]{8,128}$`. - [VAVT Schedule](https://app-plant.ru/vavt): Unofficial schedule and student information app for VAVT, updated for App Store version 3.23 with unified search, weekly schedule feed, offline cache, native news/useful information sections, Premium features and current icon. - [iRank](https://app-plant.ru/irank): Coming-soon App Store rank tracker for developers, publishers and ASO specialists; Free covers 1 developer, 3 apps and 7 days of local history, Premium adds server-side monitoring and expanded analytics, and the download CTA currently shows `Soon`. ## App Privacy Policies - [ZenStat privacy](https://app-plant.ru/policy/zenstat) - [Alpine Village privacy](https://app-plant.ru/policy/alpine) - [iGribnik privacy](https://app-plant.ru/policy/igribnik) - [AppsUpdater privacy](https://app-plant.ru/policy/apps-updater) - [VAVT Schedule privacy](https://app-plant.ru/policy/vavt) - [iRank privacy](https://app-plant.ru/policy/irank) ## Websites And Channels - [Alpine30 website case](https://app-plant.ru/alpine30): Corporate website for the Alpine Village group. - [Alpine30 Telegram](https://app-plant.ru/telegram-alpine30) - [Zander & Pike Telegram](https://app-plant.ru/telegram-zander-pike) - [White Predator Cup Telegram](https://app-plant.ru/telegram-whitepredatorcup) - [Alpiyka Telegram](https://app-plant.ru/telegram-alpiykarf) - [Join 3D Production Telegram](https://app-plant.ru/telegram-d3dprod) ## Supported Projects - [Alpine Village RF](https://app-plant.ru/alpine-village-rf) - [Zander & Pike](https://app-plant.ru/zanderandpike) - [Alpiyka](https://app-plant.ru/alpiyka) - [White Predator](https://app-plant.ru/whitepredator)