A production-ready cross-platform note-taking application built with React Native, FastAPI, and PostgreSQL.
Create rich notes β’ Manage tasks β’ Organize ideas β’ Export data β’ Stay productive
NotesApp is a modern, cloud-powered productivity application designed to help users capture ideas, organize information, manage tasks, and write beautifully formatted notes through an intuitive mobile experience.
Built using React Native, FastAPI, and PostgreSQL, the application combines a responsive cross-platform interface with a scalable backend architecture, enabling secure authentication, cloud synchronization, rich text editing, and productivity-focused workflows.
Unlike many note-taking applications that primarily demonstrate CRUD operations, NotesApp was engineered with production-oriented architecture in mind. The project emphasizes modular design, reusable components, secure authentication, clean API design, and extensibility for future AI-powered productivity features.
Whether you're documenting ideas, maintaining technical notes with code snippets, tracking personal tasks, or organizing day-to-day work, NotesApp provides a clean and distraction-free experience while ensuring your data remains secure and accessible across sessions.
This repository contains the React Native mobile application for NotesApp.
| Repository | Technology | Purpose |
|---|---|---|
| NotesApp | React Native | Cross-platform mobile application |
| notes-backend | FastAPI | Authentication, Notes APIs, User Management, App Configuration |
- β¨ Highlights
- π² Try the App
- πΈ Screenshots
- π Why NotesApp Stands Out
- ποΈ Architecture
- βοΈ Technology Stack
- π Project Structure
- π Authentication & Security
- βοΈ Rich Text Formatting System
- β‘ State Management
- π Performance Optimizations
- π€ Excel Export
- π Connectivity & Session Management
- π± User Experience
- π‘ Engineering Challenges Solved
- π Repository Highlights
- π― Lessons Learned
- π Getting Started
- π¦ Building Release
- π£οΈ Roadmap
- π€ Contributing
- π Acknowledgements
- π¨βπ» Developer
- π License
- π Secure Email & Google Authentication
- π§ Email OTP Verification & Password Recovery
- π Rich Text Editor with Markdown-style Formatting
- π» Code Blocks with Programming Language Support
- π Built-in Formatting Guide for Rich Text & Code Syntax
- β Starred Notes for Quick Access
- π Export Notes to Excel
- βοΈ Secure Cloud Synchronization
- π Task Status Tracking (Pending β In Progress β Completed)
- π JWT-based Authentication with Session Persistence
- π± Cross-Platform Mobile Application (Android & iOS)
- β‘ FastAPI REST Backend with PostgreSQL
Experience NotesApp without setting up the development environment.
You can download and install the latest Android APK from the GitHub Releases page.
π Github Release
Requirements
- Android 8.0 (API 26) or later
- Internet connection for authentication and cloud synchronization
**Note: ** This APK is intended for demonstration purposes and showcases the latest stable build of NotesApp.
Authentication
| Splash | Login / Signup | Email Verification | Launch |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Core Experience
| Notes List | Rich Text Editor |
|---|---|
![]() |
![]() |
| Formatting Guide | Code Blocks |
|---|---|
![]() |
![]() |
| Task Status | Edit Note |
|---|---|
![]() |
![]() |
| No Internet | Export Excel |
|---|---|
![]() |
![]() |
More
| Profile | About | Privacy Policy | Contact |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
NotesApp goes beyond a traditional note-taking application by combining a modern mobile experience with production-grade backend architecture.
Some of the engineering decisions that distinguish the project include:
- Production-ready authentication architecture supporting Email, Google OAuth, OTP verification, and secure JWT session management.
- A custom rich text editing experience supporting headings, hyperlinks, lists, quotes, and language-aware code blocks.
- A dedicated Formatting Guide integrated into both the note creation and viewing flows, allowing users to discover formatting capabilities without leaving the application.
- Secure cloud-backed storage with user-specific authorization and persistent synchronization.
- RESTful backend architecture built using FastAPI, SQLAlchemy, Alembic, and PostgreSQL.
- An extensible foundation designed for upcoming AI-powered productivity features, offline synchronization, syntax highlighting, reminders, and advanced editor capabilities.
Rather than being developed solely as a portfolio CRUD application, NotesApp was built as a scalable software engineering project focused on maintainability, extensibility, and real-world user experience.
NotesApp follows a modular full-stack architecture that separates concerns across the mobile application, backend services, and database layer. The project was designed with scalability, maintainability, and extensibility in mind, making it easy to introduce new features without major architectural changes.
Mobile Application
(React Native + Redux Toolkit)
β
β
RTK Query APIs
β
β
RESTful HTTP APIs
β
ββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββ
β β
βΌ βΌ
Authentication APIs Notes & User APIs
β β
ββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β
FastAPI Backend
β
Service Layer Pattern
β
SQLAlchemy ORM
β
PostgreSQL Database
β
Alembic Migrations
The architecture intentionally keeps the presentation layer, business logic, and persistence layer independent, allowing each component to evolve without tightly coupling the application.
| Technology | Purpose |
|---|---|
| React Native CLI | Cross-platform mobile application |
| JavaScript | Application development |
| Redux Toolkit | Global state management |
| RTK Query | API communication & caching |
| React Navigation | Navigation system |
| React Native SVG | SVG rendering |
| Lucide React Native | Icon library |
| React Native Config | Environment configuration |
| React Native Keychain | Secure token storage |
| React Native NetInfo | Internet connectivity detection |
| Day.js | Date & time utilities |
| XLSX-JS-Style | Excel generation |
| Technology | Purpose |
|---|---|
| FastAPI | REST API framework |
| SQLAlchemy | ORM |
| Alembic | Database migrations |
| PostgreSQL | Relational database |
| Python-JOSE | JWT authentication |
| Passlib + Bcrypt | Password hashing |
| Google Auth | Google Sign-In verification |
| Resend | Email delivery |
| Pydantic | Schema validation |
| Technology | Purpose |
|---|---|
| Render | Backend hosting |
| Neon | PostgreSQL hosting |
| Firebase | Google Authentication configuration |
π Project Structure
NotesApp
β
βββ android/
βββ ios/
β
βββ src/
β βββ assets/
β βββ Notes.svg
β β βββ icons/
β β βββ images/
β β βββ json/
β β
β βββ components/
β β
β βββ config/
β β
β βββ redux/
β β βββ slices/
β β βββ store.js
β β
β βββ screens/
β β βββ auth/
β β βββ common/
β β βββ notes/
β β βββ more/
β β
β βββ services/
β βββ baseQuery/
β β
β βββ shared/
β βββ auth/
β βββ validators/
β β
β βββ stacks/
β β
β βββ tabs/
β
βββ App.tsx
βββ package.json
βββ README.md
The project adopts a feature-oriented folder structure, separating authentication, notes, common screens, shared utilities, navigation stacks, reusable UI components, and API services into independent modules.
π Authentication & Security
NotesApp implements a production-oriented authentication system designed around secure, reusable workflows.
- Email & Password Authentication
- Google Sign-In
- JWT Access Tokens
- Refresh Token Rotation
User Signup
β
βΌ
Password Validation
β
βΌ
Generate OTP
β
βΌ
Send Verification Email
β
βΌ
Verify OTP
β
βΌ
Create User
β
βΌ
Generate Access & Refresh Tokens
β
βΌ
Authenticated Session
- Password hashing using Bcrypt
- JWT-based authentication
- Refresh token architecture
- Automatic session restoration
- Protected API routes
- Email verification before account creation
- OTP expiration and retry limits
- Secure Google OAuth verification
- User-specific authorization
- Environment-based configuration
βοΈ Rich Text Formatting System
Unlike traditional note applications that provide plain text editing, NotesApp includes a custom markdown-inspired rich text system designed specifically for mobile devices.
| Feature | Supported |
|---|---|
| Headings (H1βH3) | β |
| Bold | β |
| Italic | β |
| Underline | β |
| Strikethrough | β |
| Hyperlinks | β |
| Bullet Lists | β |
| Numbered Lists | β |
| Block Quotes | β |
| Inline Code | β |
| Multi-line Code Blocks | β |
One of the key usability features of NotesApp is the built-in Formatting Guide.
Instead of requiring users to remember markdown syntax, the guide provides contextual examples for every supported formatting option directly inside the application.
The guide is available from both:
- Create Note
- View Note
allowing users to quickly discover formatting capabilities without leaving their workflow.
This design improves feature discoverability while keeping the editor clean and distraction-free.
NotesApp supports multi-line code blocks with optional language identifiers, making it suitable for developers, students, and technical note-taking.
Examples include:
- JavaScript
- Python
- Java
- C++
- TypeScript
- SQL
- JSON
- HTML
- CSS
with future support planned for syntax highlighting.
β‘ State Management
NotesApp uses Redux Toolkit and RTK Query to provide predictable state management, efficient API communication, and automatic cache synchronization.
Global application state is centralized using Redux Toolkit, making authentication, session management, and UI state easy to manage across the application.
State currently managed includes:
- Authentication state
- Logged-in user information
- Access token
- Session expiration
- Application initialization
- Global UI state
RTK Query powers all server communication and provides:
- Automatic API caching
- Background refetching
- Cache invalidation
- Optimistic updates
- Loading & error states
- Automatic token refresh
- Retry after successful authentication
The application minimizes unnecessary network requests while keeping the UI synchronized with backend data.
π Performance Optimizations
Performance was considered throughout the development process to ensure a smooth experience as the application scales.
- React.memo for reusable components
- useCallback for stable function references
- Optimized FlatList rendering
- Efficient component hierarchy
- Lazy screen rendering
- Controlled re-renders
- RTK Query caching
- Optimistic UI updates
- Automatic cache synchronization
- Selective cache invalidation
- Background token refresh
- Minimal redundant API calls
- Skeleton loading states
- Non-blocking API interactions
- Reusable loading indicators
- Consistent error handling
- Session persistence
- Responsive layouts
π€ Excel Export
NotesApp allows users to export all their notes into a professionally formatted Excel workbook.
Generated workbooks include:
- Styled header row
- Auto filters
- Frozen header
- Wrapped cell content
- Automatic column sizing
- Rich note content
- Status information
- Deadlines
- Creation timestamps
The generated workbook can be shared directly using the device's native sharing capabilities.
This feature enables users to create backups or analyze their notes using spreadsheet software such as Microsoft Excel or Google Sheets.
π Connectivity & Session Management
The application continuously monitors network connectivity using React Native NetInfo.
When internet connectivity is unavailable:
- A dedicated offline screen is displayed
- User interactions are prevented
- Application automatically recovers when connectivity is restored
Users remain signed in across application launches through secure token storage.
The authentication flow supports:
- Automatic session restoration
- Access token refresh
- Refresh token rotation
- Session expiration handling
- Secure logout
- Google account switching
This allows users to continue working without repeatedly signing in while maintaining secure authentication practices.
π± User Experience
A significant emphasis was placed on creating an intuitive and distraction-free user experience.
- Clean onboarding flow
- Email verification
- Password recovery
- Google Sign-In
- Helpful validation messages
- Loading indicators
- Error recovery
- Fast note creation
- Rich text editing
- Formatting Guide
- Status badges
- Starred notes
- Deadline visualization
- Search
- Instant updates
The More section centralizes account and application information.
Users can:
- View profile information
- Check email verification status
- Read About NotesApp
- View Privacy Policy
- Contact the developer
- Switch Google accounts
- Log out securely
- View current application version
Application content such as the About page, Privacy Policy, and contact information is dynamically fetched from the backend, allowing updates without requiring a new mobile release.
Throughout development, several engineering challenges were addressed to improve maintainability, scalability, and user experience.
Designed reusable authentication flows supporting both Email/Password and Google Sign-In while sharing common session management logic.
Implemented a markdown-inspired rendering system capable of displaying formatted content consistently across Android and iOS while remaining lightweight and extensible.
Rather than expecting users to remember markdown syntax, a dedicated Formatting Guide was integrated directly into the application, significantly improving feature discoverability.
Implemented JWT authentication with automatic refresh token handling, secure credential storage, and graceful session expiration.
Designed reusable screens, shared components, common navigation stacks, centralized API services, and feature-based organization to simplify future development.
The project architecture was intentionally designed to accommodate upcoming features such as AI assistance, syntax highlighting, reminders, offline synchronization, profile management, and additional productivity tools without major architectural refactoring.
This repository demonstrates practical experience in:
- Cross-platform mobile application development
- Full-stack product development
- RESTful API integration
- Secure authentication systems
- Rich text editor implementation
- PostgreSQL database design
- JWT authentication
- Cloud deployment
- React Native architecture
- Production-ready software engineering
π― Lessons Learned
Building NotesApp provided practical experience across the complete software development lifecycleβfrom planning and architecture to implementation, debugging, optimization, and deployment.
Key learnings include:
- Designing scalable mobile applications
- Building production-ready REST APIs
- Structuring reusable frontend architecture
- Implementing secure authentication systems
- Managing relational databases with SQLAlchemy
- Designing efficient state management
- Optimizing rendering performance
- Building maintainable software through modular design
- Preparing applications for cloud deployment
- Thinking beyond features to prioritize user experience
π Getting Started
Follow the steps below to run NotesApp locally.
Prerequisites
Make sure you have the following installed:
- Node.js (v18 or later)
- npm
- React Native CLI
- Android Studio
- Xcode (macOS only)
- CocoaPods (iOS)
- Git
git clone https://github.com/Harshaapoorv/NotesApp.git
cd NotesAppInstall dependencies
npm installCreate a .env file in the project root.
BASE_URL=http://localhost:8000For production:
BASE_URL=https://your-production-api.comStart Metro
npm startOpen a new terminal
npx react-native run-androidInstall CocoaPods
cd ios
pod install
cd ..Start Metro
npm startOpen another terminal
npx react-native run-iosNotesApp communicates with the Notes Backend built using FastAPI.
Backend repository:
https://github.com/Harshaapoorv/notes-backend
Start the backend before launching the mobile application.
Once the backend is running, update the BASE_URL inside your .env file to point to your API.
Google authentication requires platform-specific configuration.
- Create a Firebase project.
- Register the Android application.
- Configure SHA-1 and SHA-256 fingerprints.
- Download
google-services.json. - Place it inside:
android/app/
- Register the iOS application.
- Download
GoogleService-Info.plist. - Add it to the Xcode project.
- Configure URL Types using the generated client ID.
Refer to the official Google Sign-In documentation for detailed platform setup.
π¦ Building Release
cd android
./gradlew assembleReleaseGenerated APK
android/app/build/outputs/apk/release/
./gradlew bundleReleaseGenerated AAB
android/app/build/outputs/bundle/release/
Open the workspace in Xcode
ios/NotesApp.xcworkspace
Archive
Product
β Archive
Export the IPA for App Store deployment.
π£ Roadmap
- Email Authentication
- Google Sign-In
- OTP Verification
- Password Recovery
- Rich Text Formatting
- Formatting Guide
- Code Blocks
- Starred Notes
- Search Notes
- Status Tracking
- Excel Export
- JWT Authentication
- Session Persistence
- User Profiles
- About NotesApp
- Privacy Policy
- Contact Developer
- Offline Detection
- Cloud Synchronization
- Change Password
- Change Email
- Profile Personalization
- Sort Notes
- Filter Notes
- User Settings
- AI Workspace Assistant
- Smart Note Summarization
- AI Generated Notes
- Syntax Highlighting
- Smart Search
- Offline Draft Synchronization
- Push Notifications
- Reminder System
- Theme Customization
- Import Notes from Excel
π€ Contributing
Contributions, ideas, and feature suggestions are always welcome.
If you would like to improve NotesApp:
- Fork the repository.
- Create a feature branch.
- Commit your changes.
- Push your branch.
- Open a Pull Request.
For significant feature proposals, please open an issue first to discuss the idea.
π Acknowledgements
Special thanks to the open-source community and the creators of the technologies that made this project possible.
- React Native
- FastAPI
- PostgreSQL
- SQLAlchemy
- Redux Toolkit
- RTK Query
- React Navigation
- Google Sign-In
- Resend
- Neon
- Render
Harsha Apoorv
Full Stack Mobile Application Developer
Specializing in:
- React Native
- FastAPI
- PostgreSQL
- Mobile Application Architecture
- Backend Engineering
- Full Stack Product Development
π Portfolio πΌ LinkedIn π» GitHub
This project is licensed under the MIT License.
Feel free to use the project for learning, experimentation, and personal development.
If you found this repository helpful, consider giving it a β on GitHub.















