Skip to content

Repository files navigation


Project Logo

Notes Pro — DAM Academic Project

An academic project developed for the Mobile Applications Development (DAM) course at ISEL (Instituto Superior de Engenharia de Lisboa).

Explore the Documentation »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Lessons Learned
  3. Getting Started
  4. Usage
  5. Contact
  6. Acknowledgments

About The Project

viddemo.mp4

If the embedded video above is not displaying correctly, click here to watch/download the video demo »


This repository contains Notes Pro, an academic project developed for the Mobile Applications Development (DAM) course at ISEL (Instituto Superior de Engenharia de Lisboa). The primary goal of this project is to build a complete Android application with user authentication and real-time cloud data synchronization using Firebase.

The project was originally inspired by an educational YouTube tutorial where the implementation was in Java. For this assignment, the instructor provided some initial Java starter code, and all new development, UI logic, and extra features were built in Kotlin. To consolidate cloud backend skills, the app integrates Firebase Authentication and Cloud Firestore. To avoid paid Firebase Storage plans, note images are converted into Base64 strings and stored directly within Firestore documents.

Several extra features were implemented beyond the original scope. These include built-in Markdown rendering for notes, swipe-to-delete gestures, and the ability to pin notes to the top of the list. A few months after completing the course, the application underwent a complete visual redesign to a Neo-Brutalist aesthetic. This ensured the repository stands out and reflects personal design choices rather than a standard tutorial layout. Gemini AI was used to help translate design sketches into functional Android XML layouts and accelerate the redesign process.


Before Redesign

Before Redesign

After Redesign (Neo-Brutalist)

After Redesign (Neo-Brutalist)

Comparison between the original tutorial UI and the Neo-Brutalist redesign.


(back to top)


Built With

  • Kotlin
  • Android Studio
  • Firebase Authentication
  • Cloud Firestore
  • Markdown

(back to top)


Features & Key Highlights

  • Hybrid Java & Kotlin Architecture: Combines instructor-provided Java foundation classes with modern Kotlin development for all new features and UI logic.
  • Firebase Cloud Integration: Secure email authentication and real-time cloud synchronization using Firebase Authentication and Firestore.
  • Base64 Image Storage: Optimizes costs by encoding device images into Base64 strings stored directly inside Firestore database documents.
  • Markdown Support: Renders rich text formatting inside notes using the Markwon library.
  • Pin and Swipe Gestures: Lets users pin important notes to the top of the feed and delete items using a swipe gesture.
  • Neo-Brutalist Interface: Custom visual redesign featuring thick black borders, high-contrast colors, and hard block shadows.

(back to top)


Lessons Learned

  • Kotlin & Java Interoperability: Integrating new Kotlin features and Android activities seamlessly with existing Java starter code.
  • NoSQL Database Management: Structuring Firestore document collections, queries, and real-time data adapters for mobile applications.
  • Cloud Cost Optimization: Handling billing constraints by converting binary image data into Base64 text payloads for NoSQL storage.
  • Custom XML UI Design: Building vector drawables, layered hard shadows, and custom Android themes without third-party UI frameworks.
  • AI-Assisted Workflow: Using Gemini to accelerate prototyping and convert visual sketches into working Android XML layouts.

(back to top)


Getting Started

Follow these instructions to set up a local copy of the project on your machine.

Prerequisites

  • Android Studio (Ladybug 2024.2.1 or newer recommended)
  • Java Development Kit (JDK 17 or 21)
  • An active Firebase project with Authentication and Cloud Firestore enabled

Installation & Running Locally

  1. Clone the repository:
    git clone https://github.com/GuilhermeGraca/android-notes-firebase.git
  2. Open the project: Launch Android Studio and open the cloned repository folder. Allow Gradle to sync project dependencies.
  3. Configure Firebase: Download your project google-services.json file from the Firebase Console and place it inside the /app directory.
  4. Run the application: Select an Android emulator or connect a physical Android device and click Run in Android Studio.

(back to top)


Usage

  • Account Management: Create a new account or log in with existing credentials to access your synced cloud notes.
  • Creating Notes: Tap the bottom-right button to create a new note. You can format text using standard Markdown syntax.
  • Attaching Images: Click the button inside the note editor to pick an image from your gallery and attach it to your note.
  • Pinning Notes: Tap the target icon in the editor header to pin a note so it appears first in your list.
  • Deleting Notes: Swipe any note card horizontally on the main screen to permanently remove it from your Firestore database.

(back to top)


Contact

Guilherme Graça — LinkedIn | GitHub

Project Link: https://github.com/GuilhermeGraca/android-notes-firebase

(back to top)


Acknowledgments

  • ISEL (Instituto Superior de Engenharia de Lisboa): Special thanks to the faculty and the Mobile Applications Development (DAM) course for the academic guidance.
  • Easy Tuts for Mobile Tutorial: Acknowledgment of the original YouTube tutorial that served as an initial foundation for the project.
  • Google Gemini: Recognized for assisting with the UI redesign workflow and translating prototype sketches into code.

(back to top)

About

Academic Android notes app for ISEL (DAM course) built with Kotlin and Firebase, featuring a custom Neo-Brutalist redesign, Markdown formatting, and Base64 image storage.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages