Devadex

Calisto App

gumroad   $44.00   by 3337569393887
33d old

A fully offline calisthenics fitness app built with React Native + Expo (managed workflow).Its standout feature is an interactive Skill Tree / Roadmap that visualizes calisthenics skills as connected nodes, progressing from beginner to expert. Skills unlock sequentially and a skill becomes available only after its prerequisites are completed.No backend, no internet connection, no external auth provider and every feature works offline. All data lives locally on the device (SQLite + AsyncStorage).Features Interactive Skill Tree: a pannable, pinch-zoomable canvas of skill nodes laid out top-to-bottom by tier (Beginner → Intermediate → Advanced → Expert), with curved SVG connectors drawn behind the nodes. Locked (dimmed + lock icon), Available (accent border + play icon), and Completed (filled accent + checkmark) visual states. Tap a node to open a Skill Detail bottom-sheet with description, tier, category, prerequisites, and a Mark Complete / Incomplete toggle. Completing a skill recomputes the tree and newly unlocked nodes animate in. Tapping a locked node shows "Complete [prerequisite] to unlock." Default seed tree: a realistic progression across Push, Pull, Legs, Core, and Skill/Balance categories (see src/data/defaultSkillTree.json). Shown to every new user on first launch. My Trees: build, edit, and delete your own custom trees. Add skill nodes (name, description, tier, category) and pick prerequisites from existing nodes. Custom trees use the exact same layout, states, and unlock logic. The default tree is read-only (progress is tracked, structure is fixed). Workout logging: log a session against a skill with dynamically added/removed sets (reps + optional weight + notes). Saved locally with a timestamp and shown as history grouped by day. Rest timer: 30/60/90/120s presets plus custom input, with start / pause / reset / skip and a haptic + local-notification alert when it ends. Streak tracking: current and longest daily streaks, computed locally from workout/skill-completion timestamps, with a flame icon and a week strip on the dashboard. A missed day resets the current streak (longest is preserved). Offline auth: email + password signup/login. Passwords are hashed (SHA-256 + per-user salt via expo-crypto) and stored in SQLite; the session persists so the app reopens straight to the dashboard. Dark theme throughout with a single electric-green accent (#39FF88). Project structureCalisto/ ├── App.js # Root: providers + gesture root + navigation ├── app.json # Expo config (dark UI, plugins) ├── babel.config.js # includes react-native-reanimated/plugin └── src/ ├── components/ # UI + feature components │ ├── ui/ # Button, Card, TextField, TierBadge, ScreenContainer │ ├── SkillNode.js # individual skill card with status states │ ├── TreeConnectors.js # react-native-svg bezier connectors │ ├── SkillTreeCanvas.js # pan + pinch-zoom canvas │ ├── SkillDetailSheet.js# bottom-sheet skill detail + complete toggle │ ├── TreeView.js # shared tree renderer (default + custom) │ ├── RestTimer.js # countdown timer │ ├── StreakStrip.js # week activity strip │ └── WorkoutSessionCard.js ├── context/ # global state (Context API) │ ├── AuthContext.js # offline auth + session │ ├── ProgressContext.js # trees + skill completion │ └── WorkoutContext.js # workout logs ├── data/ │ └── defaultSkillTree.json ├── db/ │ └── database.js # expo-sqlite persistence layer ├── navigation/ # React Navigation (tabs + stacks) ├── screens/ # Home, SkillTree, MyTrees, Log, Profile, auth ├── theme/theme.js # design system (colors, spacing, radius, type) └── utils/ # pure helpers (+ unit tests) ├── treeUnlock.js # status computation + unlock recomputation ├── treeLayout.js # tier layout algorithm + connector paths ├── streak.js # streak calculation ├── hash.js # password hashing ├── notifications.js # local notifications + haptics ├── format.js # date formatting / grouping └── id.js Tech Expo SDK 51 (managed workflow), React Native 0.74 React Navigation 6 (bottom tabs + native stacks) react-native-svg for connectors react-native-gesture-handler + react-native-reanimated for pan/zoom expo-sqlite + @react-native-async-storage/async-storage for offline storage expo-crypto (password hashing), expo-haptics + expo-notifications (timer) Context API for global state; pure utility functions for unlock + streak logic Everything runs without a network connection.

Get it → 3337569393887.gumroad.com

Found on Devadex — the discovery index for independent software the big search engines bury. More from gumroad.

Report this listing