Skip to content

Notoflow is a task management desktop application built with Java 17+, JavaFX, and Firebase Firestore. It allows users to create categories, lists, and tasks with real-time synchronization, authentication, and secure data access.

License

Notifications You must be signed in to change notification settings

JalaU-Capstones/NotoFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notoflow – Collaborative To-Do List Application

Notoflow is a task management desktop application built with Java 17+, JavaFX, and Firebase Firestore. It allows users to create categories, lists, and tasks with real-time synchronization, authentication, and secure data access. The project follows a clean architecture with MVC (Model–View–Controller) and emphasizes scalability, security, and maintainability.


🚀 Features

  • User authentication with Firebase Authentication (Email/Password).
  • Secure Firestore database with custom rules and indexes.
  • Categories & Lists for task organization.
  • Tasks with status (git), due dates, and priorities.
  • JavaFX UI with FXML, CSS, and reusable components.
  • Audit logs (Activity Logs) and structured data model.
  • Cross-platform desktop support (Windows, macOS, Linux).

🛠️ Tech Stack

  • Frontend (Client): Java 17+, JavaFX, CSS
  • Backend (Database): Firebase Firestore
  • Authentication: Firebase Authentication (Email/Password)
  • Security: Firestore Security Rules + Indexes
  • Build Tool: Maven
  • Testing: JUnit 5

📂 Project Structure

notoflow/

├── pom.xml
├── README.md
├── docs/
│   ├── javadoc/               # Auto-generated Javadoc
│   ├── reports/               # Testing and error reports
│   └── diagrams/              # ERD, architecture, UI mockups
│
├── notoflow-backend/          # Firebase backend configuration
│   ├── firestore.rules        # Firestore security rules
│   ├── firestore.indexes.json # Firestore indexes
│   ├── firebase.json          # Firebase project config
│   └── .firebaserc            # Firebase project reference
│
├── src/
│   ├── main/
│   │   ├── java/university/jala/notoflow/
│   │   │   ├── model/         
│   │   │   │   ├── entities/   # POJO classes (User, Category, List, Task)
│   │   │   │   ├── exception/  # Custom exceptions
│   │   │   │   ├── repository/ # Firestore CRUD operations
│   │   │   │   │   └── impl/   # Implementation of CRUD operations
│   │   │   │   └── service/    # Business logic & validations
│   │   │   ├── controller/     # JavaFX controllers
│   │   │   │   ├── auth/       # Login & signup
│   │   │   │   ├── category/   # Category management
│   │   │   │   ├── components/ # Reusable components
│   │   │   │   ├── list/       # List management
│   │   │   │   └── task/       # Task management
│   │   │   ├── config          # Configuration files
│   │   │   ├── MainApplication.java # Entry point
│   │   │   ├── NotoFlowApplication.java # This class is responsible for initializing the Spring Boot context and launching the JavaFX UI.
│   │   │   └── util/           # Constants, enums, helpers
│   │   └── resources/
│   │       ├── view/           # FXML layouts
│   │       └── application.properties # Firebase configuration
│   └── test/java/university/jala/notoflow/
│       ├── model/              # Data logic tests
│       ├── controller/         # Controller unit tests
│       └── integration/        # Firestore integration tests

🔑 Firebase Setup

1. Create a Firebase Project

  • Go to Firebase Console.
  • Create a new project (e.g., notoflow).
  • Enable Firestore Database (Production mode).
  • Enable Authentication → Email/Password.

2. Configure Security Rules

  • Copy firestore.rules into your Firebase project.

  • Deploy rules with:

    firebase deploy 
    firestore:rules

3. Configure Indexes

  • Copy firestore.indexes.json into your Firebase project.

  • Deploy indexes with:

    firebase deploy --only firestore:indexes

🔐 Firestore Data Model

  • users/{userId} → user profile and role
  • categories/{categoryId} → categories owned or shared with members
  • lists/{listId} → lists within categories
  • tasks/{taskId} → tasks inside lists with status, dueDate, priority
  • uniqueKeys/{docId} → reserved for uniqueness checks
  • activityLogs/{logId} → audit logs for admin use

⚡ How to Run

  1. Clone the repository:

    git clone https://gitlab.com/collaborative-work-jala-university/capstone/base-de-datos-2/notoflow.git
    cd notoflow
  2. Open in IntelliJ IDEA or VS Code with Java support.

  3. Install dependencies with Maven:

    mvn clean install
    mvn clean package
  4. Run the app:

    mvn javafx:run

    or

    java -jar target/notoflow-1.0-SNAPSHOT.jar

✅ Next Steps

  • Implement real-time synchronization with Firestore addSnapshotListener.
  • Add drag-and-drop functionality for tasks (Kanban style).
  • Expand role management (admin vs user).
  • Add unit & integration tests for CRUD operations.
  • Future: integrate Firebase Cloud Functions for cascade deletes and audit logs.

👥 Authors

  • University Jala Notoflow Team
  • Open for collaboration and contributions.

📜 License

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

About

Notoflow is a task management desktop application built with Java 17+, JavaFX, and Firebase Firestore. It allows users to create categories, lists, and tasks with real-time synchronization, authentication, and secure data access.

Resources

License

Stars

Watchers

Forks

Packages

No packages published