A simple note-taking application with a JavaFX client frontend and Java backend, utilizing MySQL for data storage and Docker for containerization.
This project is a full-stack note application that allows users to create, read, update, and delete notes. The application consists of a JavaFX client for the user interface and a Java backend that communicates with a MySQL database for data persistence.
- User authentication and authorization
- Create, view, edit, and delete notes
- Categorize notes with tags
- Search functionality
- Export notes to different formats (PDF, TXT, etc.)
- Sync across devices
- Frontend: JavaFX for desktop client application
- Backend: Java
- Database: MySQL
- Containerization: Docker
- Build Tool: Maven
note-app/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── hasan/
│ │ │ └── note/
│ │ │ ├── client/ # JavaFX client code
│ │ │ ├── server/ # Backend server code
│ │ │ ├── model/ # Data models
│ │ │ ├── database/ # Database connection and operations
│ │ │ ├── service/ # Business logic
│ │ │ ├── util/ # Utility classes
│ │ │ ├── Note.java # Note entity
│ │ │ └── NoteApp.java # Main application entry point
│ │ └── resources/
│ │ ├── fxml/ # JavaFX FXML layouts
│ │ ├── css/ # Stylesheets
│ │ ├── images/ # Application images
│ │ └── logback.xml # Logging configuration
│ └── test/
│ └── java/
│ └── com/
│ └── hasan/
│ └── note/
│ ├── client/ # Client tests
│ ├── server/ # Server tests
│ ├── database/ # Database tests
│ ├── NoteAppTest.java
│ └── NoteTest.java
├── docker/ # Docker configuration files
│ ├── docker-compose.yml
│ ├── Dockerfile.client
│ └── Dockerfile.server
├── sql/ # SQL scripts for database setup
│ └── init.sql
├── .gitignore
├── pom.xml # Maven configuration
└── README.md # This file
- Initialize Maven project
- Set up basic project structure
- Create initial model classes
- Configure logback for logging
- Setup Docker environment
- Design database schema
- Create SQL initialization scripts
- Implement database connection layer
- Create data access objects (DAOs)
- Write unit tests for database operations
- Develop RESTful API for notes
- Implement service layer
- Add authentication and authorization
- Write unit tests for backend
- Implement error handling
- Create JavaFX views (FXML)
- Design CSS for the application
- Implement controllers
- Connect frontend to backend
- Add input validation
- Write unit tests for frontend
- Integrate all components
- Perform integration testing
- Implement end-to-end testing
- Fix bugs and optimize performance
- Finalize Docker configuration
- Prepare for production
- Document deployment process
- Create user manual
- Java 11 or higher
- Maven 3.6 or higher
- Docker and Docker Compose
- MySQL (or Docker MySQL image)
-
Clone the repository:
git clone https://github.com/yourusername/note-app.git cd note-app -
Build the project:
mvn clean install
-
Start the MySQL database and backend server using Docker:
cd docker docker-compose up -d -
Run the client application:
mvn javafx:run
To run the tests:
mvn testAdditional documentation can be found in the docs directory.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.