Skip to content

hamriouz/SimpleNote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

52 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SimpleNote - Android Note-Taking App

A modern, user-friendly note-taking application for Android with secure user authentication and intuitive design. This android application was created for Mobile Development course in Sharif University of Technology. Figma design: https://www.figma.com/design/qTmbl7cAJiUBxypcbrI4ON/Note-Taking-App-UI---Design-System?node-id=1945-2807&p=f&t=rPBSHCpb6D8MuNYz-0

πŸ“± Features

πŸ” User Authentication

  • User Registration: Create new accounts with email and password
  • Secure Login: Authentication with encrypted password storage
  • Password Management: Change password functionality with validation
  • User Isolation: Each user can only access their own notes

πŸ“ Note Management

  • Create Notes: Add new notes with title and content
  • Edit Notes: Modify existing notes with real-time saving
  • Delete Notes: Remove notes with confirmation dialog
  • Search Notes: Real-time search through note titles and content
  • Grid Layout: Beautiful 2-column card-based note display

🎨 User Interface

  • Modern Design: Clean, intuitive interface with card-based layout
  • Search Functionality: Instant search with 300ms debounce
  • Empty State: Helpful illustrations when no notes exist
  • Responsive Layout: Optimized for different screen sizes
  • Bottom Navigation: Easy access to home and settings

πŸ”’ Security Features

  • Encrypted Storage: User credentials stored securely
  • User-Specific Data: Complete data isolation between users
  • Secure Database: All operations filtered by authenticated user

πŸ› οΈ Technical Stack

Architecture

  • Language: Kotlin
  • Architecture Pattern: MVVM with Repository Pattern
  • Database: Room (SQLite)
  • UI: Android View System with Data Binding
  • Navigation: Android Navigation Component

Dependencies

  • Room Database: Local data persistence
  • Coroutines: Asynchronous programming
  • Navigation Component: Fragment navigation
  • Material Design: Modern UI components
  • Encrypted SharedPreferences: Secure credential storage

πŸ“¦ Project Structure

app/src/main/
β”œβ”€β”€ java/com/example/simplenote/
β”‚   β”œβ”€β”€ activities/
β”‚   β”‚   β”œβ”€β”€ LoginActivity.kt
β”‚   β”‚   β”œβ”€β”€ RegisterActivity.kt
β”‚   β”‚   β”œβ”€β”€ MainActivity.kt
β”‚   β”‚   └── OnboardingActivity.kt
β”‚   β”œβ”€β”€ fragments/
β”‚   β”‚   β”œβ”€β”€ FirstFragment.kt (Main Notes List)
β”‚   β”‚   β”œβ”€β”€ NoteEditorFragment.kt
β”‚   β”‚   β”œβ”€β”€ SettingsFragment.kt
β”‚   β”‚   └── ChangePasswordFragment.kt
β”‚   β”œβ”€β”€ database/
β”‚   β”‚   β”œβ”€β”€ AppDatabase.kt
β”‚   β”‚   β”œβ”€β”€ Note.kt (Entity)
β”‚   β”‚   β”œβ”€β”€ NoteDao.kt
β”‚   β”‚   └── NoteRepository.kt
β”‚   β”œβ”€β”€ adapters/
β”‚   β”‚   └── NoteAdapter.kt
β”‚   └── utils/
β”‚       β”œβ”€β”€ UserManager.kt
β”‚       └── UiUtils.kt
└── res/
    β”œβ”€β”€ layout/ (All UI layouts)
    β”œβ”€β”€ drawable/ (Icons and graphics)
    β”œβ”€β”€ values/ (Colors, strings, themes)
    └── navigation/ (Navigation graph)

πŸš€ Getting Started

Prerequisites

  • Android Studio Arctic Fox or later
  • Android SDK 21 or higher
  • Kotlin 1.5.0 or later

Installation

  1. Clone the repository
git clone https://github.com/yourusername/SimpleNote.git
  1. Open the project in Android Studio

  2. Sync the project with Gradle files

  3. Run the app on an emulator or physical device

Building the Project

./gradlew assembleDebug

Running Tests

./gradlew test

πŸ—„οΈ Database Schema

Notes Table

CREATE TABLE notes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    content TEXT NOT NULL,
    lastEdited INTEGER NOT NULL,
    username TEXT NOT NULL
);

Database Migrations

  • Version 1 β†’ 2: Added user authentication
  • Version 2 β†’ 3: Added username column to notes for user isolation

🎯 Key Features Implementation

User Authentication Flow

  1. Onboarding: Welcome screen with app introduction
  2. Registration: Create account with email/password validation
  3. Login: Secure authentication with encrypted storage
  4. Session Management: Persistent login state

Note Management Flow

  1. List View: Grid display of user's notes with search
  2. Create/Edit: Rich text editor with auto-save
  3. Delete: Confirmation dialog before deletion
  4. Search: Real-time filtering of notes

Security Implementation

  • Password Encryption: Secure hashing for user passwords
  • Data Isolation: Database queries filtered by username
  • Secure Storage: EncryptedSharedPreferences for sensitive data

🎨 UI/UX Features

Design Elements

  • Color Scheme: Purple primary (#5B45FE) with clean backgrounds
  • Typography: Modern, readable fonts with proper hierarchy
  • Icons: Consistent iconography throughout the app
  • Animations: Smooth transitions and interactions

User Experience

  • Intuitive Navigation: Bottom navigation with clear labels
  • Search Experience: Instant results with debounced input
  • Empty States: Helpful guidance when no content exists
  • Confirmation Dialogs: Prevent accidental data loss

πŸ“± Screenshots

Main Features

  • Note List: Grid view with search functionality
  • Note Editor: Clean editing interface with auto-save
  • Settings: User preferences and account management
  • Authentication: Login and registration screens

πŸ”§ Configuration

Database Configuration

  • Database Name: note_database
  • Version: 3
  • Migration Strategy: Automatic with fallback

Security Configuration

  • Encryption: AES-256 for SharedPreferences
  • Key Management: Android Keystore integration
  • Session Timeout: Configurable in UserManager

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages