WiSaw - "What I Saw Today"
October 14, 2025 ยท View on GitHub
๐ Overview
WiSaw is a location-based, anonymous social sharing app that lets you capture and share moments without the complexity of traditional social media. No registration, no profiles, no followers - just pure, location-relevant content sharing.
โจ Key Features
- ๐ซ No Registration Required - Open the app and start sharing immediately
- ๐ Location-Based Feed - See what's happening around you right now
- ๐ญ Anonymous Sharing - Share without revealing your identity
- ๐๏ธ Community Moderation - Delete inappropriate content to improve quality for everyone
- ๐ค AI Image Recognition - Automatic content descriptions using AI
- ๐ฌ Real-time Comments - Engage with posts through anonymous comments
- ๐ Deep Linking - Share specific photos and friend invitations
- ๐ฑ Cross-Platform - Available on iOS, Android, and Web
๐ฑ Download
๐ Web Version: wisaw.com
๐ ๏ธ Tech Stack
Frontend
- React Native (0.79.4) - Cross-platform mobile development
- Expo (53.0.12) - Development platform and build system
- Expo Router (5.1.0) - File-based routing system
- TypeScript - Type-safe development
- Jotai (2.8.4) - State management
Backend Integration
- Apollo Client (3.9.7) - GraphQL client with caching
- GraphQL (16.8.1) - API query language
- WebSocket Subscriptions - Real-time updates
UI/UX
- React Native Elements - UI component library
- React Navigation - Navigation system
- Expo Image - Optimized image handling
- React Native Reanimated - Smooth animations
Device Features
- Camera & Photo Library - Image capture and storage
- Location Services - GPS-based content filtering
- Push Notifications - Real-time alerts
- Deep Linking - Share content and friend invitations
๐๏ธ Architecture
Project Structure
WiSaw/
โโโ app/ # Expo Router app directory
โ โโโ (drawer)/ # Drawer navigation layout
โ โ โโโ (tabs)/ # Bottom tabs navigation
โ โ โ โโโ index.tsx # Main feed screen
โ โ โ โโโ chat.tsx # Chat/messaging screen
โ โ โ โโโ photos/ # Photo-related screens
โ โ โโโ friends.tsx # Friends management
โ โ โโโ feedback.tsx # User feedback
โ โโโ _layout.tsx # Root layout
โโโ src/ # Source code
โ โโโ components/ # Reusable components
โ โโโ screens/ # Screen components (legacy)
โ โโโ utils/ # Utility functions
โ โโโ hooks/ # Custom React hooks
โ โโโ state.js # Global state management
โโโ assets/ # Images, icons, splash screens
โโโ docs/ # Documentation and guides
โโโ public/ # Static web assets
Key Features Implementation
๐ง Navigation System
- Expo Router with file-based routing
- Drawer Navigation for main app sections
- Tab Navigation for primary features
- Modal Navigation for overlays and forms
๐จ UI/UX Enhancements
- Status Bar Handling - Platform-specific status bar management
- Safe Area Support - Proper handling of device safe areas
- Responsive Design - Adapts to different screen sizes
- Loading States - User feedback during operations
๐ State Management
- Jotai for lightweight state management
- Apollo Client Cache for GraphQL data
- Local Storage for offline data persistence
๐ Privacy & Security
- Anonymous Posting - No user identification required
- Location Privacy - Approximate location sharing only
- Content Moderation - Community-driven content filtering
๐ Getting Started
Prerequisites
- Node.js (18+)
- npm or yarn
- Expo CLI
- iOS Simulator (for iOS development)
- Android Studio/Emulator (for Android development)
Installation
-
Clone the repository
git clone https://github.com/echowaves/WiSaw.git cd WiSaw -
Install dependencies
npm install -
Set up environment variables
# Create .env file with your API endpoints API_URI=your_graphql_endpoint REALTIME_API_URI=your_websocket_endpoint API_KEY=your_api_key PRIVATE_IMG_HOST=your_image_host -
Start the development server
npm start
Development Scripts
# Start Expo development server
npm start
# Run on iOS simulator
npm run ios
# Run on Android emulator
npm run android
# Build for production
npm run build
# Deploy to production
npm run publish:prod
# Clear cache and reset
npm run clear
npm run reset:simulator
๐ Version Management
The app uses a centralized version management system:
- Version: Defined in
package.jsonand imported toapp.config.js - Build Numbers: Automatically synced across iOS and Android
- Single Source of Truth: All version info in
package.json
To update the app version:
- Update
version,buildNumber, andversionCodeinpackage.json - Changes automatically propagate throughout the app
๐ง Configuration
App Configuration
The app uses app.config.js for Expo configuration:
- Platform-specific settings
- Deep linking configuration
- Push notification setup
- Build properties
Environment Setup
- Development: Uses Expo development server
- Production: Built with EAS (Expo Application Services)
- Web: Deployed as PWA
๐ Documentation
Developer Guides
Feature Documentation
๐ค Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow TypeScript best practices
- Use Expo Router for navigation
- Implement proper error handling
- Add documentation for new features
- Test on both iOS and Android
๐ Support
- Website: echowaves.com
- App Store: WiSaw on iOS
- Google Play: WiSaw on Android
- GitHub: Issues & Bug Reports
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Built with Expo and React Native
- UI components from React Native Elements
- State management with Jotai
- GraphQL integration via Apollo Client
Made with โค๏ธ by Echowaves Corp.
Experience authentic, location-based social sharing
๐ฑ Screenshots
Main Feed
Photo Search
Photo Details
AI Recognition
Comments
Navigation Menu