Skip to content

Repository files navigation


NeoStash Logo

NeoStash

A modern, cross-platform media stash app with on-device AI — save, organize, and rediscover your content, all locally and privately.


React Native Expo TypeScript Platform License


Getting Started · Tech Stack · Project Structure · Contributing



✨ What is NeoStash?

NeoStash is a privacy-first media organization app built with React Native and Expo. It lets you stash, browse, and intelligently manage your local media — powered entirely by on-device AI using HuggingFace Transformers and ONNX Runtime. No cloud required. Your data stays on your device.

  • 📦 Local-first — everything stored in SQLite, nothing leaves your device
  • 🤖 On-device AI — smart organization and processing via HuggingFace + ONNX Runtime
  • Blazing fast — Shopify FlashList + Reanimated for silky smooth performance
  • 🌙 Dark mode — automatic light/dark theming
  • 📱 Cross-platform — runs on iOS, Android, and Web from a single codebase

🚀 Getting Started

Prerequisites

Make sure you have the following installed:

Installation

# 1. Clone the repository
git clone https://github.com/sid-rudani/neostash.git
cd neostash

# 2. Install dependencies
npm install

# 3. Start the development server
npx expo start

Running on a Device or Emulator

Once the dev server is running, you can open the app in:

Target Command
Expo Go (quick preview) Scan the QR code with the Expo Go app
Android Emulator Press a in the terminal
iOS Simulator Press i in the terminal
Web Browser Press w in the terminal
Development Build npx expo run:android or npx expo run:ios

Note: On-device AI features (HuggingFace / ONNX) require a development build and won't work in Expo Go.

Reset to a Clean Slate

If you want to wipe the starter boilerplate and start fresh:

npm run reset-project

This moves the example code to app-example/ and gives you a blank app/ directory.


🏗️ Tech Stack

Category Technology
Framework Expo ~54 + React Native 0.81
Language TypeScript 5.9
Navigation Expo Router (file-based)
Database expo-sqlite
On-Device AI @huggingface/transformers + onnxruntime-react-native
Media expo-media-library · expo-image · expo-image-manipulator
Performance @shopify/flash-list · react-native-reanimated
Gestures react-native-gesture-handler
Background Tasks expo-background-fetch · expo-task-manager
Icons @expo/vector-icons · lucide-react-native
Animations react-native-animatable

📁 Project Structure

neostash/
├── app/                  # App screens & routes (Expo Router file-based routing)
├── components/           # Reusable UI components
├── constants/            # App-wide constants (colors, sizes, etc.)
├── hooks/                # Custom React hooks
├── assets/
│   └── images/           # Icons, splash screen, adaptive icons
├── scripts/              # Utility scripts (e.g. reset-project)
├── app.json              # Expo configuration
├── package.json          # Dependencies & scripts
└── tsconfig.json         # TypeScript configuration

📜 Available Scripts

Script Description
npm start Start the Expo development server
npm run android Build and run on Android
npm run ios Build and run on iOS
npm run web Start the web version
npm run lint Lint the codebase with ESLint
npm run reset-project Reset to a blank app (moves boilerplate to app-example/)

⚙️ Configuration

Key settings live in app.json:

  • Scheme: neostash (used for deep links)
  • Orientation: Portrait
  • New Architecture: Enabled (newArchEnabled: true)
  • React Compiler: Enabled (experimental)
  • Typed Routes: Enabled (experimental)
  • Bundle ID (iOS): com.sid.m.rudani.neostash
  • Splash Screen: Light/dark variants supported
  • Edge-to-Edge (Android): Enabled

🤝 Contributing

Contributions are welcome! Here's how to get involved:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feat/amazing-feature
  3. Commit your changes: git commit -m 'feat: add amazing feature'
  4. Push to your branch: git push origin feat/amazing-feature
  5. Open a Pull Request

Please follow the existing code style and run npm run lint before submitting.


📚 Resources


Made with ❤️ by sid

About

Gallery App reimagined with the help of OpenAI's Clip model to enable semantic search over thousands of photos.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages