A mobile archery scoring app built for school NASP-style competitions. Track players, run tournaments, and record scores with an interactive archery target — all from your phone.
Built with React Native and Expo. Runs on iOS and Android via Expo Go.
- Create player profiles with name, grade (4th-12th), and avatar
- View player statistics: best score, average, total tournaments
- Browse full score history per player
- Delete individual scores from history
- Select one or more players for a tournament
- Score at two distances: 10 meters and 15 meters
- 3 rounds of 5 arrows per distance (30 total shots, max score 300)
- Tap the interactive archery target to record each shot (rings 1–10 or Miss)
- Live score grid shows every shot, round totals, and grand total
- Confirm scores after each distance before moving on
- Switch between players mid-tournament using tabs
- Full SVG archery target with 10 scoring rings
- Tap any ring to record that score instantly
- Miss button for arrows off-target
- Score labels on each ring for easy identification
- Trophy animation and confetti when a player completes their tournament
- Final score breakdown showing 10m and 15m totals
- All data stored locally on your device
- No account or internet connection required
- Player and score data persists between sessions
# Clone the repo
git clone https://github.com/JenaLRW/WillAim.git
cd WillAim
# Install dependencies
npm install
# Start the development server
npx expo start- Run
npx expo startin your terminal - Scan the QR code with your phone's camera (iOS) or the Expo Go app (Android)
- The app will load on your device
- Tap PLAYERS on the home screen
- Tap + ADD in the top right
- Enter the player's name, select their grade, and pick an avatar
- Tap CREATE PLAYER
- Tap NEW TOURNAMENT on the home screen
- Select one or more players by tapping their cards
- Tap START in the top right
- For each player:
- Tap the archery target to record each arrow's score
- After 15 shots (3 rounds × 5 arrows), confirm the 10-meter score
- Repeat for 15 meters
- Celebrate with confetti!
- Switch between players using the tabs at the top
- When all players finish, you'll return to the home screen
- Open any player's profile and tap SHOOT to start a single-player tournament directly
- Tap any player card to see their profile
- View their best score, average, and tournament count
- Scroll through their complete score history
app/ # Screens (Expo Router)
index.tsx # Home screen
players/
index.tsx # Player list
add.tsx # Add player form
[id].tsx # Player profile & stats
tournament/
select.tsx # Select players for tournament
scoring.tsx # Scoring screen
src/
components/ # Reusable UI components
constants/ # Theme colors & scoring rules
hooks/ # Data & scoring engine hooks
store/ # Local storage (AsyncStorage)
utils/ # Helper functions
| Technology | Purpose |
|---|---|
| Expo (SDK 55) | App framework & development tooling |
| React Native | Cross-platform mobile UI |
| Expo Router | File-based navigation |
| TypeScript | Type safety |
| AsyncStorage | Local data persistence |
| react-native-svg | Interactive archery target |
| react-native-reanimated | Smooth animations |
These rules align with standard NASP tournament formats.
- Distances: 10 meters and 15 meters
- Rounds: 3 rounds per distance
- Arrows: 5 arrows per round
- Scoring: Rings score 1–10 (outer to inner), Miss scores 0
- Total: 30 arrows, maximum possible score of 300
WillAim is not affiliated with, endorsed by, or sponsored by the National Archery in the Schools Program (NASP). NASP is a registered trademark of the National Archery in the Schools Program.
This project is open source. Feel free to use and modify it for your archery program.