Skip to content

alexquilis1/bullet-journal-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ Bullet Journal Android App

A modern, feature-rich digital bullet journal app built with Kotlin and Android Architecture Components

Kotlin Android Room License

๐ŸŽฏ What it does

Transform your daily journaling experience with this comprehensive digital bullet journal that combines the simplicity of traditional journaling with modern mobile features:

  • โœ๏ธ Rich Text Entries - Create detailed journal entries with titles and descriptions
  • ๐Ÿ“ธ Visual Memories - Attach photos from gallery or camera to your entries
  • ๐Ÿ—“๏ธ Date Tracking - Automatic date management for chronological organization
  • ๐Ÿ“ฑ Intuitive Interface - Clean, user-friendly design optimized for daily use
  • ๐Ÿ”” Smart Reminders - Daily notifications to maintain your journaling habit
  • โœ๏ธ Edit & Delete - Full CRUD operations with confirmation dialogs
  • ๐Ÿ’พ Local Storage - Secure offline storage with Room database

โœจ Key Features

๐Ÿ“– Journal Management

  • Create unlimited journal entries with rich content
  • Edit existing entries with seamless navigation
  • Delete entries with confirmation protection
  • Chronological sorting (newest entries first)

๐Ÿ“ท Image Integration

  • Camera Capture - Take photos directly within the app
  • Gallery Selection - Choose existing photos from device storage
  • Smart Compression - Automatic image optimization for storage efficiency
  • Base64 Storage - Embedded images for offline reliability

๐ŸŽจ User Experience

  • Material Design - Modern Android UI/UX standards
  • Responsive Layout - Optimized for various screen sizes
  • Contextual Actions - Tap to edit, long-press to delete
  • Visual Feedback - Snackbar notifications and confirmation dialogs

๐Ÿ”” Habit Building

  • Daily Reminders - WorkManager-powered notifications
  • Customizable Timing - Adjustable reminder schedules
  • Engagement Tracking - Visual cues for empty journal states

๐Ÿ› ๏ธ Technical Architecture

Built with modern Android development best practices:

๐Ÿš€ Getting Started

Prerequisites

  • Android Studio Arctic Fox or later
  • Android SDK API 21+ (Android 5.0)
  • Kotlin 1.5+

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/bullet-journal-android.git
    cd bullet-journal-android
  2. Open in Android Studio

    • Open Android Studio
    • Select "Open an existing project"
    • Navigate to the cloned directory
  3. Build and run

    • Connect an Android device or start an emulator
    • Click "Run" or press Ctrl+R

Required Permissions

The app requests the following permissions:

  • Camera - For taking photos directly in the app
  • Storage - For selecting images from gallery (handled automatically)

๐Ÿ—๏ธ Project Structure

app/src/main/java/com/example/bulletjournalapp/
โ”œโ”€โ”€ MainActivity.kt              # Main activity with journal list
โ”œโ”€โ”€ AddEntryActivity.kt          # Add/edit entry screen
โ”œโ”€โ”€ JournalEntry.kt              # Data model with Room annotations
โ”œโ”€โ”€ JournalEntryDao.kt           # Database access object
โ”œโ”€โ”€ JournalDatabase.kt           # Room database configuration
โ”œโ”€โ”€ JournalViewModel.kt          # MVVM ViewModel for data management
โ”œโ”€โ”€ JournalEntryAdapter.kt       # RecyclerView adapter
โ””โ”€โ”€ ReminderWorker.kt            # Background notification worker

๐Ÿ’ก Key Implementation Highlights

Smart Image Management

// Automatic image compression and Base64 encoding
private fun compressImage(bitmap: Bitmap): Bitmap {
    val maxWidth = 1024
    val maxHeight = 1024
    // Intelligent scaling while maintaining aspect ratio
}

Modern Database Design

@Entity(tableName = "journal_entries")
data class JournalEntry(
    @PrimaryKey(autoGenerate = true) val id: Int = 0,
    val title: String,
    val description: String,
    val date: String,
    val imageUri: String? = null // Base64 encoded images
)

Reactive UI Updates

// LiveData ensures UI stays synchronized with database
journalViewModel.allEntries.observe(this) { entries ->
    updateUI(entries)
}

๐ŸŽ“ What I Learned

This project helped me master:

  • Android Architecture Components (Room, ViewModel, LiveData)
  • Kotlin Coroutines for asynchronous database operations
  • Image processing and storage optimization techniques
  • WorkManager for reliable background tasks
  • Material Design principles and user experience
  • MVVM architecture implementation in Android
  • Database design for mobile applications

๐Ÿ”ฎ Future Enhancements

  • Cloud Sync - Backup entries to cloud storage
  • Categories & Tags - Organize entries with custom labels
  • Search Functionality - Find entries by content or date
  • Export Options - PDF or text export capabilities
  • Themes - Dark mode and custom color schemes
  • Rich Text Formatting - Bold, italic, lists, etc.
  • Location Tagging - GPS coordinates for entries
  • Voice Notes - Audio recording integration
  • Statistics - Journaling habits and insights

๐Ÿค Contributing

Contributions are welcome! Here are some ways you can help:

  • Report bugs or suggest features
  • Improve UI/UX design
  • Add new functionality
  • Optimize performance
  • Write tests

Please feel free to open an issue or submit a pull request.

๐Ÿ“„ License

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

Note: Commercial use requires notification and may require permission. Contact for commercial licensing inquiries.


โญ Enjoying this app? Give it a star and help others discover the joy of digital journaling!

About

A feature-rich digital bullet journal Android app with photo support, reminders, and offline storage built with Kotlin and Room

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages