Sistema de administración para gimnasios.

Overview

Armstrong Desktop

Sistema de administración para gimnasios

Made with love, made with JavaFX

Contenido

Características

  • Multiplataforma.
  • Soporta la administración de varios gimnasios.
  • Soporte para el lector digitalpersona 4500U (lector de huellas) (opcional).
  • Consultas asíncronas (puede trabajar con un servidor remoto sin congelar la interfaz) además de contar con un pooling de conexiones para correr varias consultas en paralelo.
  • Auditoría avanzada sobre la información y sus cambios.
  • Sistema de notificaciones altamente personalizable (títulos, contenido, colores, iconos).
  • Temas en blanco / negro.

Tecnologías

  • Java 11 - Lenguaje de programación utilizado en todo el proyecto.
  • MySQL 8.0.29 - Base de datos.
  • JavaFX - La cara bonita de la aplicación.
  • Workbench - Herramienta utilizada para crear el modelo de la base de datos.
  • SceneBuilder - Herramienta utilizada para crear las pantallas de la aplicación.

Librerías

Configuración inicial

Creando la base de datos

Cargamos el archivo armstrong.sql en nuestro servidor, suponiendo que nuestro servidor es local y nuestro usuario es root (no recomendado) con mysql en las variables de entorno, los comandos son los siguientes:

armstrong\database> mysql -u root -p --default-character-set=utf8mb4
mysql> source armstrong.sql

También he dejado el modelo de la base de datos hecha en workbench en la misma carpeta, por si desean agregar / cambiar entidades, o correr el script sql desde ahí.

Configurando el entorno

La aplicación puede trabajar en dos entornos, dichos entornos se encuentran en el archivo de preferencias ubicado:

# En el proyecto
src/main/java/com/ocielgp/app/UserPreferences.java
# En los registros (windows)
Computer\HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\ocielgp\app

DB_SOURCE Determina a que servidor nos vamos a conectar (0 o 1), simplemente verificamos que las credenciales coincidan al entorno que nos vamos a conectar.

Después de ejecutar el proyecto por primera vez las preferencias se guardarán en los registros, si realizamos alguna modificación en UserPreferences.java, tenemos que borrar la preferencia THEME en los registros del sistema, para que al volver a correr la aplicación se generen nuevamente las preferencias.

Corriendo el proyecto

Parar correr el proyecto necesitaremos las siguientes cosas:

  • Los binarios de Java 11 (o superior) en las variables de entorno.
  • Los binarios de Maven en las variables de entorno.
    • Se pueden descargar desde el siguiente link (verificar que sean los binarios).
  • Realizar la configuración inicial.

Comando para correr la aplicación

Para correr el proyecto, tenemos las siguientes opciones:

  • [Opción 1]: Ejecutamos el archivo RunArmstrong.bat (windows).
  • [Opción 2]: En una terminal situada en la carpeta raíz del proyecto donde se encuentra el pom.xml, corremos el siguiente comando:
armstrong> mvn javafx:dorun

Si todo sale bien, saldrá la pantalla del login de la aplicación con una notificación diciendo conexión establecida, las siguientes son las credenciales para entrar:

usuario: sistema
contraseña: 123

Documentación general

El proyecto es grande, pero está dividido para que sea escalable, así que explicaré las cosas más importantes para que si deseas modificar algo, tengas nociones generales de él.

Archivo inicial para construir la aplicación

Todo empieza creando un stage, cosas como el cargado de estilos, la pantalla inicial de la aplicación e inicialización de cosas básicas como la conexión a la base de datos o el sistema de notificaciones, empiezan en RunApp.

Digitalpersona 4500U

Ahora el proyecto se diseñó para trabajar con este lector en específico, el proyecto ya tiene la librería para trabajar con él, pero es importante tener los drivers instalados para que la aplicación lo reconozca, los drivers del lector los puedes descargar aquí dependiendo de tu sistema operativo, una vez instalados reincia la computadora y corre la aplicación, el lector se conectara automáticamente.

Nota: La aplicación puede trabajar sin el lector, la diferencia es que se ocultará la opción de registrar huellas.

Los miembros pueden tener una o varias huellas, todas se guardan en MEMBERS_FINGERPRINTS.

Modelo de la base de datos

La aplicación tiene un archivo de modelado (hecho en workbench) de la base de datos, donde puedes realizar modificaciones y generar el script sql rápidamente, además de que tienes una vista completa sobre el proyecto, de aquí nacen todos los modelos y sus respectivos dao. DB-Model.png

Además, el proyecto cuenta con una auditoría avanzada con triggers en las tablas principales que registraran cambios en la información en su tabla espejo (las que se encuentran en la sección audit) registrando cada cambio y el autor de dicho cambio.

Vistas y controladores

El proyecto fue creado bajo el patrón MVC (Model-View-Controller).

Vistas

Todas las vistas de la aplicación se encuentran en resources/views, para editar las vistas de manera visual se necesita SceneBuilder configurando de la siguiente manera

  • Utilizar la versión SceneBuilder 15, algunas librerías presentan problemas en versiones superirores, para descargar aquí esta un link (ya que no aparece en su página oficial de manera directa).
  • Instalar las siguientes librerías en SceneBuilder
    • jfoenix
      • groupId com.jfoenix
      • artifactId jfoenix
      • version 9.0.10
    • ikonli
      • groupId org.kordamp.ikonli
      • artifactId ikonli-javafx
      • version 12.3.1
    • ikonli material pack
      • groupId org.kordamp.ikonli
      • artifactId ikonli-material-pack
      • version 12.3.1

Controladores

La aplicación cuenta con un router creado desde cero para cambiar entre las diferentes pantallas, todos los controladores de las vistas se encuentran en el directorio controller.

Sistema de notificaciones personalizado

Se creó un sistema de notificaciones desde cero, el cual trabaja como una pila, en donde se van mostrando las notificaciones una a una, se puede modificar el tiempo que durará la notificación, su contenido, ícono y colores.

  • El archivo de notificaciones se encuentra en src/main/java/com/ocielgp/utilities/Notifications.java.
  • Para crear una notificación personalizada desde cero, solo hace falta llamar el método Notifications.BuildNotification().
  • El código para los íconos se encuentra acá, solo se pasa como un string.
  • Los códigos de estilos se encuentran en el archivo colors.css en el directorio resources con una pequeña variación en el tema negro, donde están registrados los siguientes:
    • 🟢 success-style
    • 🟠 warn-style
    • 🔴 danger-style
    • 🟣 creative-style
    • 🔵 epic-style

Login Login Login

Pantallas de la aplicación

Tema blanco

Inicio

Login

Resumen

Summary-1 Summary-2

Socios

Members-1 Members-2

Entradas

Check-In

Gerencia

Admins

Modo seguro

Secure-Mode-1 Secure-Mode-2

Tema negro

Inicio

Login

Resumen

Summary-1 Summary-2

Socios

Members-1 Members-2

Entradas

Check-In

Gerencia

Admins

Modo seguro

Secure-Mode-1 Secure-Mode-2

You might also like...

Escrevendo Testes para o Blog Pessoal

Escrevendo Testes para o Blog Pessoal

Implementando testes com o Spring Testing no Blog Pessoal Nesta atividade iremos implementar os testes nas Camadas Model, Repository e Controller da C

Dec 12, 2022

Repositorio para el Proyecto PSA

proyecto-psa Status Ejecución Test Manual: Status Ejecución Test Automático: 1. Repositorio para el Proyecto PSA Se propone una estructura de mono-rep

Nov 16, 2021

Jogo criado em java para disciplina de Linguagem de Programação III

Jogo criado em java para disciplina de Linguagem de Programação III

Mr.Cat-JOGO Jogo criado em java para disciplina de Linguagem de Programação III O jogo é um cookie Clicker feito em Java para disciplina de Linguagem

Dec 22, 2021

Minha metas para 2022.

Minha metas para 2022.

Minhas metas para 2022 Essas metas são pessoais, para desenvolvimento e aprimoramento de habilidades sociais, mas também em conhecimento tecnico e con

Jun 9, 2022

Twiscord es una simple aplicación que permite conectar Twitter y Discord para poder publicar cosas en ambas plataformas a la vez.

Twiscord Twiscord es una simple aplicación que permite conectar Twitter y Discord para poder publicar en ambas plataformas a la vez dedicado a streame

Jan 10, 2022

App para sortear números aleatórios de 0 a 10

App para sortear números aleatórios de 0 a 10

SorteioAPP- App para sortear números aleatórios de 0 a 10 Projeto desenvolvido com os conhecimentos adquiridos nas aulas do curso de Desenvolvimento A

Mar 25, 2022

Repositório para desenvolvimento da camada de back-end da aplicação

Projeto Integrador - Back-end 🚀 Começando Essas instruções permitirão que você obtenha uma cópia do projeto em operação na sua máquina local para fin

Jun 2, 2022

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Jun 16, 2022

Projeto de demonstração em JAVA, para administração e controle de um estacionamento

projetoEstacionamento Projeto de demonstração em JAVA, para administração e controle de um estacionamento: Este software de demonstração tem como obje

Sep 22, 2022
Owner
Ociel
Ociel
Repositório focado para a Turma 2022.2 do Cesmac para disciplina Programação Orientada a Objeto

Sobre Repositório focado para turma de POO - Cesmac - 2022.2 Links úteis IntelliJ Download Java Doc - JDK 18 2Devs Podcast: SimpleCast Spotify Como se

Rachid Calazans 12 Dec 8, 2022
Uma API REST com funcionalidades de CRUD que simula um sistema de leilão 💰.

Leilão API REST Essa aplicação foi feita para ajudar aqueles que ainda estão com alguma dúvida, sobre o funcionamento de um API REST em Spring. Já que

Fábio Henrique 4 Feb 23, 2022
Programação Orientada a Objetos (POO) em Java - Contexto no sistema bancário

Criando um Banco Digital com Java e Orientação a Objetos 02/08/2021 - Mentoria #1: Tire Suas Dúvidas Sobre Orientação a Objetos Desafio: Considerando

null 2 Dec 17, 2022
Sistema de control de computadoras con base de datos

Sistema sobre control de computadoras con base de datos en PostgreSQL donde se puede registrar una computadora, en procesos podemos buscar una computadora según su numero de serie y registrar el estado actual de una computadora.

Aarón Rojas 1 Jan 23, 2022
Sistema Abastecimento Alcool Gasolina

SistemaAbastecimento_AlcoolGasolina ?? Índice Sobre Tecnologias utilizadas Preview ?? Preview Android.Emulator.-.Pixel_2_API_25_5554.2022-01-18.19-59-

Henrique Marinho Teixeira 2 Jan 19, 2022
Um sistema de hospital feito em Spring Boot, contendo alguns CRUD's, e utilizando algumas famosas dependências, como o Hibernate. Vale destacar a interface inspirada no jogo Minecraft.

Introdução ✏ Esse projeto é uma atividade da disciplina de Design, Arquitetura e Construção de Software [DACS]. O objetivo do projeto é simular um sis

Ramon Victor Cardoso 12 Nov 6, 2022
MVP de Sistema de delivery de comida (como Uber eats ou Ifood)

Repositório para acompanhar a minha evolução no curso Especialista Spring REST da Algaworks ??️ Sobre o Projeto: MVP de Sistema de delivery de comida

Rayane Maciel 18 Dec 29, 2022
Aplicativo To Do com sistema de autenticação e database.

TO DO APP Aplicativo faz a registra um usuário e suas tarefas no banco de dados. ?? Sobre Este aplicativo faz criação e a autenticação de um novo usuá

Emerson Rodrigues 3 Sep 21, 2022
Repositório referente ao código de uma classe data, com testes JUNIT, classe de exceção própria e classe aplicação para demonstrar as diversas funcionalidades da classe data

Exercicio-Data Repositório referente ao código de uma classe data, com testes JUNIT, classe de exceção própria e classe aplicação para demonstrar as d

Bruno Silveira Cequeira Lima 3 May 4, 2021
Projeto para consulta de filmes na API data IMDB e construção de playlists.

Projeto IDP: Filmes API ✍️ API Requirements Must to have Comunicar com uma API externa (desenvolvida pelo colaborador ou por terceiros). Persistir dad

Sarah Andrade Toscano de Carvalho 2 Oct 9, 2022