Skip to content

maranix/aarnote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AARNote πŸ“

A modern, premium note-taking application built with React Native and Expo, featuring a sleek dark theme with glassmorphism effects.

Platform React Native Expo TypeScript

πŸ“₯ Download

Try the app on your Android device!

Note: This is a universal apk binary, the size will be huge. Approx: 100 megabytes. Download APK

✨ Features

  • πŸ“± Cross-Platform: Runs on iOS and Android
  • 🎨 Premium UI: Dark theme with glassmorphism effects
  • ⚑ Fast & Smooth: 60fps animations with Reanimated
  • πŸ”’ Secure: Password hashing with SHA-256
  • πŸ’Ύ Local-First: MMKV storage for instant access
  • πŸ“Έ Image Support: Add images from camera or gallery
  • πŸ” Search & Sort: Filter notes by text and sort by date/title
  • ✏️ Rich Editing: Create, edit, and delete notes
  • 🎭 Animations: Smooth transitions and micro-interactions

πŸ“Έ Demo

Note: For some reason the demo seems to indicate that the application gets stuck on sign-in/sign-up screen, this however only impacts the recording. In the actual testing and usage there is no such issue.

Screenrecording_20251123_121540_480.mov

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ and pnpm
  • iOS: Xcode 15+ and CocoaPods
  • Android: Android Studio and JDK 17+
  • Expo CLI

Installation

  1. Clone the repository

    git clone https://github.com/maranix/aarnote.git
    cd aarnote
  2. Install dependencies

    pnpm install
  3. iOS Setup (Mac only)

    cd ios
    pod install
    cd ..
  4. Start the development server

    pnpm start
  5. Run on your device

    # iOS
    pnpm ios
    
    # Android
    pnpm android

πŸ“– Documentation

Comprehensive documentation is available in the /docs directory:

πŸ—οΈ Project Structure

aarnote/
β”œβ”€β”€ app/                    # Expo Router app directory
β”‚   β”œβ”€β”€ (app)/             # Authenticated routes
β”‚   β”‚   β”œβ”€β”€ index.tsx      # Home screen
β”‚   β”‚   β”œβ”€β”€ create-note.tsx
β”‚   β”‚   └── note/[id].tsx
β”‚   β”œβ”€β”€ (auth)/            # Auth routes
β”‚   β”‚   β”œβ”€β”€ sign-in.tsx
β”‚   β”‚   └── sign-up.tsx
β”‚   └── _layout.tsx        # Root layout
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/        # Reusable components
β”‚   β”œβ”€β”€ constants/         # Colors, Layout
β”‚   β”œβ”€β”€ store/            # Zustand stores
β”‚   └── types/            # TypeScript types
β”œβ”€β”€ assets/               # Images and fonts
└── docs/                 # Documentation

πŸ› οΈ Tech Stack

  • Framework: React Native 0.81.5
  • Platform: Expo ~54.0
  • Language: TypeScript 5.9.2
  • Navigation: Expo Router 6.0
  • State: Zustand 5.0.8
  • Storage: react-native-mmkv 4.0.1
  • Animations: react-native-reanimated 4.1.1
  • UI Effects: expo-blur 15.0.7

See Dependencies for full list and rationale.

πŸ“± Features in Detail

Authentication

  • User registration with unique usernames
  • Secure password hashing (SHA-256)
  • Persistent sessions
  • Auto-login on app restart

Notes Management

  • Create notes with title, content, and optional image
  • Edit existing notes
  • Delete notes with confirmation
  • Search notes by title or content
  • Sort by last update or title (ascending/descending)
  • Image compression for optimal storage

UI/UX

  • Premium dark theme (OLED-friendly)
  • Glassmorphism effects
  • Smooth animations (60fps)
  • Safe area handling
  • Responsive design

πŸ”§ Development

Available Scripts

# Start development server
pnpm start

# Run on iOS simulator
pnpm ios

# Run on Android emulator
pnpm android

# Run linting
pnpm lint

# Type checking
pnpm tsc --noEmit

Code Quality

  • ESLint: Code linting with Expo config
  • Prettier: Code formatting
  • TypeScript: Type safety
  • Husky: Pre-commit hooks
  • lint-staged: Lint only changed files

Git Workflow

# Make changes
git add .

# Commit (runs linting automatically)
git commit -m "feat: add new feature"

# Push
git push

🎨 Design System

Colors

  • Background: #000000 (Pure black for OLED)
  • Surface: #1C1C1E, #2C2C2E
  • Primary: #0A84FF (iOS blue)
  • Text: #ECEDEE

Spacing

  • xs: 4px, sm: 8px, md: 12px, lg: 16px, xl: 24px, xxl: 32px

Typography

  • Large Title: 34px bold
  • Title: 28px bold
  • Subtitle: 20px semibold
  • Body: 16px regular
  • Caption: 12px regular

See Components for full design system.

πŸ” Security

  • Passwords hashed with SHA-256
  • MMKV encrypted storage on iOS
  • No plain text password storage
  • Session management with secure storage

πŸ“Š Performance

  • Storage: MMKV (10-30x faster than AsyncStorage)
  • Animations: Reanimated (UI thread, 60fps)
  • Bundle Size: Optimized with Expo
  • Startup Time: < 2 seconds

🀝 Contributing

Contributions are welcome! Please read the Development Guide first.

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

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘€ Author

Maranix

πŸ™ Acknowledgments

  • Expo team for the amazing framework
  • React Native community
  • All open-source contributors

πŸ“ž Support

For issues and questions:


Made with ❀️ using React Native and Expo

About

Built using react-native and expo

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published