/AppBirthdays

This application access u add and save date birthdays your friends as well. Others features will describe in readme file.

Primary LanguageJava

App Birthdays ๐ŸŽ‚ ๐Ÿฐ ๐ŸŽˆ ๐ŸŽ‰ ๐ŸŽ

Project Video

Welcome to App Birthdays, a project designed to manage and organize birthday information with a user-friendly interface. This project is built using Java 11, JDBC API, MySQL Driver, and Java Swing for the graphical user interface.

List of Contents

Project Structure

  • This project uses jdk 11, JDBC API, MySQL Driver, GUI Java (Swing);
  • The project is structured into several main packages:
    • ui: Contains the user interface components and logic.
    • domain: Includes the domain logic and models.
    • dao: Manages data access and database operations.
    • main: Consists of the Main class that serves as the program's entry point.
    • models: Contains shared models used across different layers;

Common Scheme

User Interface

  • The user interface is built using the Swing library, providing an intuitive and interactive access.

Database

  • The project utilizes MySQL to store and manage information.

Security

  • User password information are encrypted using SHA-256 for enhanced security.

Extensibility

  • The system is designed to be easily extensible, allowing for the addition of new features and improvements in the future.

Logging

  • Log4j2 is employed to provide logging (levels: info, warn, error).

Dependencies

  • The project uses several external dependencies to enhance its functionality, including:
    • javazoom: For audio-related features.
    • opencsv: For working with CSV files.
    • itext7-core: For PDF generation.
    • jcalendar: For handling date-related components.

Features

  • โ˜‘๏ธ๏ธMenu program (U can choose your act: Authorization, Registration, Exit);
    • โ˜‘๏ธSing in;
    • โ˜‘๏ธRegistration;

  • โ˜‘๏ธ Main Program;
    • โ˜‘๏ธ Minimize program;
    • โ˜‘๏ธ On/Off background music;
    • โ˜‘๏ธ Reminding with sound for soon birthdays (u chose when give reminding (hour, minutes, after how many days));
    • โ˜‘๏ธ Sorted:
      • โ˜‘๏ธ Ascending for name user's friend;
      • โ˜‘๏ธ Ascending for friend's birthday date;
      • โ˜‘๏ธ Descending for name user's friend;
      • โ˜‘๏ธ Descending for friend's birthday date;
      • โ˜‘๏ธ Default (in order to add into db);
    • โ˜‘๏ธ Main features:
      • โ˜‘๏ธ Add data about friend birthday and him into table (click on special button Add);
      • โ˜‘๏ธ Edit info about human into table (click on chose human and right click 2 times);
      • โ˜‘๏ธ Delete info about human into table (click on chose human, click on special button Delete and confirm your choice as well);
      • โ˜‘๏ธ Copy info about human into table (click on chose human and click on special button Copy and click on Panel, entered combination Ctrl+V);
    • โ˜‘๏ธ Addition features (download data about birthday people into db):
      • โ˜‘๏ธ Download into .csv file;
      • โ˜‘๏ธ Download into .pdf file;
    • โ˜‘๏ธ Exit from account;

Launch guide

  1. I would you recommended to clone my project from the GitHub.
    If you wanna do this, please use this command:
git clone https://github.com/dima666Sik/AppBirthdays.git
  1. To run this project you will need to install (or use docker images):

    • JDK 11 or higher;
    • MySQL RDBMS.
  2. If you have downloaded a project and want to run it with your own database then you have to create enum which will be stored in a package src/main/java/ua/birthdays/app/dao/env and put your name tables please.

public enum EnumDBNameTables {
    USER_TABLE("users"),
    USER_FRIENDS_DATA_TABLE("user_friends_data"),
    ABOUT_FRIEND_TABLE("about_friend"),
    FRIEND_BIRTHDAY_DATE_TABLE("friend_birthday_date");

    private final String enumDBEnvironment;

    EnumDBNameTables(String enumDBEnvironment) {
        this.enumDBEnvironment = enumDBEnvironment;
    }

    public String getEnumDBEnvironment() {
        return enumDBEnvironment;
    }
}
  1. Also, please put your valid data in those properties. File stored in a recourse package.
# data for properties
app.birthdays.data.user.name=username
app.birthdays.data.password=password
app.birthdays.data.db.url=jdbc:RDBMS//host:port/nameDB
# name db
app.birthdays.data.db.name=namedb
  1. Here are the steps for you to follow:

    • Add this project to your IDE as Maven project.
    • If necessary, configure Java SDK 11 in Project Structure settings.
    • You can change setting to your logging into log4j2.properties.
    • First, you will need to register as a new user.
  2. If you want to see documentation, please check javadoc in resources this app.

Database

  • You need to create database and add this name db to db.properties, and this all that u must to do in order to start to using this project.
    Visually it looks like this: DB

Diagram business logic

  • The class diagram with dependencies: Domain

Program testing

Main Menu

Main Menu

Authorization

Authorization

Registration

Registration

Main Window

Main Win

Action in Window

Main functions of the program will be showed below.๐Ÿ‘‡

  • Add data about friend birthday Add
  • Edit info about human into table Edit
  • Download files with info about people birthday
    Download files
    • CSV file:
      CSV file
    • PDF file:
      PDF file

Author Info

Back To The Top