Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

150 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkateHive

SkateHive Mobile

The SkateHive mobile app — a skateboarding community running on the HIVE blockchain. Skaters post clips and photos, vote on each other's tricks, map spots, and earn crypto rewards for it.

Built with React Native and Expo. Posts, votes and payouts live on-chain; media lives on IPFS.

What's in it

Feed — short posts ("snaps") with photo and video, voting with an adjustable weight, threaded replies, and live payout values.

Videos — a full-screen vertical feed. Double-tap to vote.

Profiles — a media grid backed by poster frames, opening into a full-screen viewer.

Spot map — skate spots on a map, plus a camera flow for adding new ones from where you're standing.

iOS home screen widgets — nearest spot, a spot map, top spots, and a shortcut straight into the camera. Built with WidgetKit; iOS only.

Instagram cross-post — eligible accounts can mirror a snap to Instagram, choosing the cover frame and editing the caption before it goes out.

Two ways to sign in — a HIVE posting key, encrypted on-device and unlocked with Face ID or a PIN, or an email account with server-side custody for people who don't have a HIVE account yet.

Stack

Runtime Expo 54, React Native 0.81, New Architecture enabled
Routing Expo Router (file-based)
Server state TanStack Query
Blockchain @hiveio/dhive against several HIVE RPC nodes with failover
Video expo-video, transcoded through SkateHive's own worker and pinned to IPFS
Storage expo-secure-store for keys, App Group UserDefaults for the widget

Dark theme only. FiraCode throughout. Styling is plain StyleSheet, with every colour and spacing value coming from lib/theme.ts.

Getting started

Requires Node 18+ and pnpm 9 — not corepack pnpm, which ignores this repo's node-linker=hoisted setting and leaves the bundler unable to resolve babel-preset-expo.

pnpm install
cp .env.example .env

Most of the native surface here — the widget bridge, video, secure store — doesn't exist inside Expo Go, so day-to-day work uses a development build:

pnpm start             # expo start --dev-client, then scan the QR

Expo Go still works for screens that don't touch those modules: run npx expo start and press s to switch to it. The widget is invisible there, and pushing spot data to it silently does nothing.

pnpm ios               # build and run on a connected device or simulator
pnpm android

Releasing

iOS ships from a local Xcode archive, not EAS. ios/ is gitignored and regenerated by prebuild, so app.json is the only place a version number lives.

  1. Bump expo.ios.buildNumber in app.json.
  2. pnpm prebuild:ios — clean-prebuilds iOS, adds the widget target, and syncs the widget's build number to the app's. App Store Connect rejects an extension whose build number differs from the app's.
  3. Open ios/SkateHive.xcworkspace, set the destination to Any iOS Device, then Product → Archive → Distribute App.

Project layout

app/              Expo Router screens — (tabs)/ holds feed, videos, map,
                  notifications and profile
components/       UI grouped by area (Feed/, Profile/, ui/, spotmap/)
lib/              Everything that isn't a screen: auth, HIVE operations,
                  uploads, hooks, theme
modules/          Local native modules — widget-bridge writes spot data into
                  the shared App Group
targets/widget/   The SkateSpots WidgetKit target (Swift)
scripts/          Build helpers

Worth reading first: lib/auth-provider.tsx for sessions and key handling, lib/hive-utils.ts for every blockchain operation, and lib/theme.ts for the design system.

Contributing

AGENTS.md is the guide — architecture, conventions, security rules, and the gotchas that would otherwise cost you an afternoon. Read it before your first change. CLAUDE.md covers the build and release specifics.

Three rules that aren't negotiable:

  • Private keys are never stored in plaintext and never logged.
  • Dark theme only.
  • Blockchain calls can fail on any node — wrap them.

There is no automated test suite. Changes are verified by running the app on a device.

Links

About

SkateHive mobile app — React Native + Expo client for the skateboarding community on the HIVE blockchain

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages