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.
- 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).
- 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
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
- Go to Firebase Console.
- Create a new project (e.g., notoflow).
- Enable Firestore Database (Production mode).
- Enable Authentication → Email/Password.
-
Copy
firestore.rulesinto your Firebase project. -
Deploy rules with:
firebase deploy firestore:rules
-
Copy
firestore.indexes.jsoninto your Firebase project. -
Deploy indexes with:
firebase deploy --only firestore:indexes
- 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
-
Clone the repository:
git clone https://gitlab.com/collaborative-work-jala-university/capstone/base-de-datos-2/notoflow.git cd notoflow -
Open in IntelliJ IDEA or VS Code with Java support.
-
Install dependencies with Maven:
mvn clean install mvn clean package
-
Run the app:
mvn javafx:run
or
java -jar target/notoflow-1.0-SNAPSHOT.jar
- 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.
- University Jala Notoflow Team
- Open for collaboration and contributions.
This project is licensed under the MIT License – see the LICENSE file for details.