Keep in Touch is a comprehensive web application that empowers users to create and manage their events and personal contacts with ease. Designed to help users organize their appointments, Keep in Touch includes a built-in calendar for better planning and goal achievement.
Whether you need to schedule events or track important contacts, Keep in Touch provides the tools to make it happen seamlessly.
- π Event Management: Create, edit, delete, and view events. Never miss an appointment again!
- π Contact Management: Add, update, delete, and search contacts. Keep your network organized.
- π Secure Authentication: All passwords are securely encrypted with BCrypt.
- π₯ Admin Dashboard: Administrators can manage users, monitor activity, and moderate content.
- π REST API: Easily integrate the system with other applications or frontend frameworks.
- π Calendar Integration: Manage your schedule with a user-friendly calendar view.
With Spring Boot, Thymeleaf, and MySQL under the hood, Keep in Touch guarantees fast and secure performance, while Java 21 ensures modern compatibility.
This project leverages a powerful stack to ensure reliability and maintainability:
- Java 21: Leverages the latest features for maximum performance.
- Spring Boot: The backbone of our application, providing fast setup and easy configuration.
- Spring Boot Starter Data JPA: Simplifies database interactions.
- Spring Boot Starter Thymeleaf: Enables dynamic, server-side HTML generation.
- Spring Boot Starter Security: Ensures secure authentication and authorization.
- Spring Boot Starter Validation: Manages user input validation.
- Spring Boot DevTools: Supports faster development cycles with hot reloads.
- MySQL 8.0.37: A stable and reliable RDBMS to handle contact and event data.
- Hibernate: Simplifies database interaction with its powerful ORM features.
- Thymeleaf: Provides dynamic page rendering for a smooth user experience.
- Bootstrap: Ensures responsiveness and mobile-first design.
- JavaScript & jQuery: Adds interactivity and dynamic functionality to the app.
Easily manage all your events and appointments:
- Create: Add events with details like title, date, and description.
- Edit: Modify existing events when plans change.
- Delete: Remove canceled events.
- View: See a comprehensive list of all events in a calendar or list format.
Keep your contacts organized:
- Add Contact: Store contact information like name, email, and phone number.
- Edit Contact: Make updates to contact details.
- Delete Contact: Remove outdated or irrelevant contacts.
- Search Contact: Easily find specific contacts by name or other details.
The admin panel provides extra control over the platform:
- Manage Users: View, edit, or delete user accounts.
- Monitor Events and Contacts: Ensure proper usage of the platform.
- Moderation: Review and moderate user-generated content.
Your dataβs safety is our top priority:
- BCrypt Encryption: Passwords and security question answers are encrypted using industry-standard algorithms.
- User Roles: Granular control over user permissions (e.g., Admin, User).
Keep in Touch follows a layered architecture that promotes clear separation of concerns:
-
Presentation Layer (Views)
- Responsible for rendering Thymeleaf templates and displaying dynamic content to the user.
-
Controller Layer (Endpoints)
- Handles incoming HTTP requests and routes them to appropriate services.
-
Service Layer (Business Logic)
- Processes the business rules and communicates with the DAO layer.
-
DAO Layer (Database Access)
- Manages the database interactions using JPA and Hibernate for smooth data persistence.
-
Security Layer (Authentication & Authorization)
- Ensures that sensitive data is securely encrypted, with proper role-based access control.
To run Keep in Touch, ensure you have the following installed:
- Java 21
- MySQL 8.0+
- Maven 3.6+
- git clone https://github.com/9elmaz9/keep_in_touch
- cd keep-in-touch
To set up your MySQL database for Keep in Touch using external properties, follow these steps:
-
Create a new MySQL database:
- Open your MySQL terminal and run the following command to create the database:
CREATE DATABASE keep_in_touch;
- Open your MySQL terminal and run the following command to create the database:
-
Create an external properties file:
- Store your database configuration in an external
application.properties
orapplication.yml
file. This file should be located outside the application JAR for easier maintenance.
- Store your database configuration in an external
-
Configure the external properties:
-
Add the following properties to your external
application.properties
file:spring.datasource.url=jdbc:mysql://localhost:3306/keep_in_touch spring.datasource.username=your_username spring.datasource.password=your_password
-
Ensure the
url
,username
, andpassword
fields are updated with your MySQL credentials.
-
-
Point to the external configuration:
-
When starting your Spring Boot application, specify the location of your external
application.properties
file:java -jar your-app.jar --spring.config.location=file:/path/to/your/application.properties
-
Replace
/path/to/your/application.properties
with the actual path to your external configuration file.
-
-
Run database migrations (if applicable):
- If you're using database migrations (e.g., Flyway or Liquibase), ensure that your external configuration file includes migration settings, or they will run automatically when you start the application.
-
Verify the connection:
- Start your MySQL server and run the application with the external configuration file. Verify that the tables are generated and that the connection is successful.
By using an external application.properties
file, you can easily manage your database configurations without modifying the application code itself.
Now that the database is configured, you're ready to build and run Keep in Touch. Follow these steps:
-
Build the application using Maven:
- Run the following command to compile the project and package it into a runnable JAR file:
mvn clean install
- Run the following command to compile the project and package it into a runnable JAR file:
-
Run the application:
-
Use the following command to start the application with your external properties file:
java -jar target/your-app.jar --spring.config.location=file:/path/to/your/application.properties
-
Ensure the path to the
application.properties
file is correct.
-
-
Access the application:
-
Once the application is running, open your browser and go to:
http://localhost:8080
-
This will take you to the home page of Keep in Touch.
-
To ensure everything is working as expected, you can run the pre-built tests included in the project:
-
Run Unit Tests:
- Use the following command to execute all unit tests:
mvn test
- Use the following command to execute all unit tests:
-
Verify Test Results:
- Ensure that all tests pass successfully. This will confirm that the core features (contacts, events, authentication) work correctly.
Keep in Touch includes a REST API for developers to integrate with other systems or for frontend communication.
- API Endpoints:
- Explore the available endpoints for managing users, contacts, and events.
This project is licensed under the MIT License. See the LICENSE file for more details.
Keep in Touch is a powerful event and contact management system designed for personal and professional use. With a secure authentication system, admin functionalities, and a REST API, it offers flexibility and security for managing personal information
Stay tuned for more updates!