Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

80 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SuperNote (NoteTaker Pro)

A comprehensive cross-platform note-taking application built with React Native and Expo, featuring rich media support, cloud synchronization, and advanced storage management.

Platform Support React Native Expo SDK TypeScript

πŸ“± Project Overview

SuperNote is a modern, feature-rich note-taking application that allows users to create, manage, and synchronize notes across multiple platforms. The app supports text, audio recordings, images, and videos, making it a comprehensive solution for digital note-taking and content organization.

Key Highlights

  • Cross-Platform: Native iOS, Android, and Web support
  • Rich Media: Text, audio, images, and video attachments
  • Cloud Sync: Optional Supabase integration with offline-first approach
  • Advanced Storage: Flexible storage location management
  • Modern UI: Intuitive interface with gesture support and animations

✨ Features

Core Functionality

  • πŸ“ Rich Text Notes: Create and edit notes with full text formatting
  • πŸŽ™οΈ Audio Recording: Record and playback audio notes with professional controls
  • πŸ“· Image Attachments: Capture photos or select from gallery
  • πŸŽ₯ Video Support: Record and attach videos to notes
  • ⭐ Favorites System: Mark important notes for quick access
  • πŸ” Search & Filter: Find notes quickly with advanced search capabilities
  • 🏷️ Tagging System: Organize notes with custom tags

Advanced Features

  • πŸ“± Offline-First: Full functionality without internet connection
  • ☁️ Cloud Synchronization: Optional sync with Supabase backend
  • πŸ” Authentication: Secure user accounts with Supabase Auth
  • πŸ’³ Subscription Management: Stripe integration for premium features
  • πŸ“ Storage Management: Custom storage locations and file organization
  • πŸ“€ Import/Export: Backup and restore notes
  • 🎨 Modern UI: Smooth animations and gesture-based interactions

Platform-Specific Optimizations

  • iOS: Optimized for iOS 16+ with native file browser integration
  • Android: Direct file manager access with Intent Launcher
  • Web: Responsive design with limited file system access

πŸš€ Installation Instructions

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn package manager
  • Expo CLI (npm install -g @expo/cli)
  • For iOS development: Xcode and iOS Simulator
  • For Android development: Android Studio and Android Emulator

Setup Steps

  1. Clone the repository

    git clone <repository-url>
    cd SuperNote
  2. Install dependencies

    npm install
    # or
    yarn install
  3. Environment Configuration (Optional) Create a .env file in the root directory for Supabase integration:

    EXPO_PUBLIC_SUPABASE_URL=your_supabase_url
    EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
    EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_key
  4. Start the development server

    npm run dev
    # or
    expo start
  5. Run on your preferred platform

    • iOS: Press i in the terminal or scan QR code with Expo Go
    • Android: Press a in the terminal or scan QR code with Expo Go
    • Web: Press w in the terminal or visit http://localhost:8081

Additional Setup for Cloud Features

If you want to use cloud synchronization and authentication:

  1. Supabase Setup

    • Create a Supabase project at supabase.com
    • Run the migrations in the supabase/migrations folder
    • Add your Supabase URL and anon key to the .env file
  2. Stripe Setup (for premium features)

    • Create a Stripe account at stripe.com
    • Add your publishable key to the .env file

πŸ“– Usage Examples

Creating a Note

// Basic note creation
const newNote = {
  title: "Meeting Notes",
  content: "Discussion points...",
  images: [],
  audioRecordings: [],
  videos: [],
  isFavorite: false,
  tags: ["work", "meeting"]
};

await createNote(newNote);

Recording Audio

// Start audio recording
const recording = new Audio.Recording();
await recording.prepareAsync(Audio.RECORDING_OPTIONS_PRESET_HIGH_QUALITY);
await recording.startAsync();

// Stop and save
await recording.stopAndUnloadAsync();
const uri = recording.getURI();

Searching Notes

// Search through notes
const results = searchNotes("meeting");
const favoriteNotes = getFavoriteNotes();
const recentNotes = getRecentNotes(5);

πŸ“ Project Structure

SuperNote/
β”œβ”€β”€ app/                          # Expo Router screens
β”‚   β”œβ”€β”€ (tabs)/                  # Tab-based navigation
β”‚   β”‚   β”œβ”€β”€ index.tsx           # Home/Dashboard screen
β”‚   β”‚   β”œβ”€β”€ create.tsx          # Note creation screen
β”‚   β”‚   β”œβ”€β”€ notes.tsx           # Notes listing screen
β”‚   β”‚   β”œβ”€β”€ settings.tsx        # App settings
β”‚   β”‚   └── storage.tsx         # Storage management
β”‚   β”œβ”€β”€ auth/                   # Authentication screens
β”‚   β”œβ”€β”€ payment/                # Payment success screen
β”‚   β”œβ”€β”€ _layout.tsx             # Root layout with auth logic
β”‚   └── note-detail.tsx         # Note editing screen
β”œβ”€β”€ components/                  # Reusable UI components
β”‚   β”œβ”€β”€ AudioPlayer.tsx         # Audio playback component
β”‚   β”œβ”€β”€ AudioRecorder.tsx       # Audio recording component
β”‚   β”œβ”€β”€ VideoPlayer.tsx         # Video playback component
β”‚   β”œβ”€β”€ NoteCard.tsx           # Note display card
β”‚   β”œβ”€β”€ SearchBar.tsx          # Search functionality
β”‚   └── MediaPicker.tsx        # Image/video selection
β”œβ”€β”€ contexts/                   # React Context providers
β”‚   └── NotesContext.tsx       # Global notes state management
β”œβ”€β”€ hooks/                      # Custom React hooks
β”‚   β”œβ”€β”€ useStorageInfo.ts      # Storage monitoring
β”‚   β”œβ”€β”€ useIOSOptimization.ts  # iOS performance hooks
β”‚   └── useNotesSync.ts        # Sync state management
β”œβ”€β”€ services/                   # Business logic layer
β”‚   β”œβ”€β”€ noteService.ts         # Basic CRUD operations
β”‚   β”œβ”€β”€ enhancedNoteService.ts # Advanced storage features
β”‚   β”œβ”€β”€ authService.ts         # Authentication logic
β”‚   β”œβ”€β”€ storageLocationService.ts # Storage management
β”‚   β”œβ”€β”€ syncService.ts         # Cloud synchronization
β”‚   └── stripeService.ts       # Payment processing
β”œβ”€β”€ types/                      # TypeScript definitions
β”‚   └── note.ts               # Note interface definitions
β”œβ”€β”€ supabase/                   # Supabase configuration
β”‚   β”œβ”€β”€ functions/             # Edge functions
β”‚   └── migrations/            # Database migrations
└── assets/                     # Images, fonts, etc.

πŸ› οΈ Technology Stack

Frontend Framework

  • React Native: 0.79.4 - Cross-platform mobile development
  • Expo SDK: 53.0.13 - Development platform and tools
  • TypeScript: 5.8.3 - Type-safe JavaScript
  • Expo Router: 5.1.1 - File-based routing system

UI & Interaction

  • React Native Gesture Handler: 2.24.0 - Advanced gesture recognition
  • React Native Reanimated: 3.17.4 - Smooth animations
  • Lucide React Native: 0.475.0 - Modern icon library
  • Expo Linear Gradient: 14.1.5 - UI enhancements

Storage & Data Management

  • AsyncStorage: Primary local storage solution
  • Expo FileSystem: Custom storage locations and file management
  • Expo SecureStore: Secure authentication data storage
  • Supabase: Optional cloud backend for sync and auth

Media & File Handling

  • Expo Camera: 16.1.9 - Photo capture functionality
  • Expo Image Picker: 16.1.4 - Gallery access and image selection
  • Expo AV: 15.1.6 - Audio recording and playback
  • Expo Video: 2.2.2 - Video recording and playback
  • Expo Document Picker: 13.1.6 - File selection capabilities

Backend Services

  • Supabase: Authentication, database, and storage
  • Stripe: Payment processing for premium features
  • Expo Secure Store: Encrypted local storage

Development Tools

  • ESLint: Code linting and quality assurance
  • Prettier: Code formatting
  • Jest: Testing framework
  • TypeScript: Static type checking

🀝 Contributing Guidelines

We welcome contributions to SuperNote! Please follow these guidelines:

Getting Started

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes following our coding standards
  4. Test your changes thoroughly
  5. Commit your changes: git commit -m 'Add amazing feature'
  6. Push to the branch: git push origin feature/amazing-feature
  7. Open a Pull Request

Code Standards

  • Follow TypeScript best practices
  • Use meaningful variable and function names
  • Add comments for complex logic
  • Ensure all tests pass before submitting
  • Follow the existing code style (Prettier configuration)

Testing

# Run tests
npm test

# Run linting
npm run lint

# Type checking
npx tsc --noEmit

Reporting Issues

  • Use the GitHub issue tracker
  • Provide detailed reproduction steps
  • Include device/platform information
  • Add screenshots or videos when helpful

Feature Requests

  • Check existing issues first
  • Provide clear use cases
  • Explain the expected behavior
  • Consider implementation complexity

πŸ“„ License Information

This project is currently proprietary software. All rights reserved.

For licensing inquiries or commercial use, please contact the project maintainers.

πŸ“ž Support & Contact

  • Issues: Use GitHub Issues for bug reports and feature requests
  • Documentation: Check the /doc folder for detailed implementation reports
  • Development: See /memory-bank for project context and patterns

πŸ”§ Development Scripts

# Development
npm run dev              # Start development server
npm run dev:tunnel       # Start with tunnel for external testing
npm run dev:clear        # Start with cleared cache

# Building
npm run build:web        # Build for web platform

# Maintenance
npm run clean           # Clear Expo cache
npm run reset           # Full reset (node_modules + cache)
npm run lint            # Run ESLint
npm test               # Run Jest tests

πŸš€ Deployment

Web Deployment

npm run build:web
# Deploy the generated files from dist/ folder

Mobile App Stores

  1. iOS App Store: Use EAS Build for production builds
  2. Google Play Store: Use EAS Build for Android APK/AAB

EAS Build Setup

# Install EAS CLI
npm install -g @expo/eas-cli

# Configure EAS
eas build:configure

# Build for production
eas build --platform all

πŸ“Š Performance Considerations

  • Offline-First: App works fully without internet connection
  • Lazy Loading: Components and screens load on demand
  • Memory Management: Proper cleanup of audio/video resources
  • Storage Optimization: Efficient file management and caching
  • iOS Optimizations: Special handling for iOS 16+ file system restrictions

πŸ” Security Features

  • Encrypted Storage: Sensitive data stored securely
  • Authentication: Optional Supabase Auth integration
  • Data Privacy: Local-first approach with optional cloud sync
  • File Security: Proper file permissions and access controls

Built with ❀️ using React Native and Expo

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages