Skip to content

STA Companion App is a companion application for Android devices for the Star Trek Adventures tabletop RPG. It allows players to manage their characters and starships, perform special dice rolls, and export their character and starship sheets to PDF.

License

Notifications You must be signed in to change notification settings

k3ssdev/STACompanion

Repository files navigation

STA Companion App

A companion app for the Star Trek Adventures tabletop RPG.

license last-commit repo-top-language repo-language-count sonarcloud-quality-gate

Developed with the software and tools below.

Android Java


Quick Links


Overview

The STA Companion App is a companion application designed for Android devices, specifically tailored for the Star Trek Adventures tabletop RPG. It provides players with the ability to manage their characters and starships, execute special dice rolls, and export their character and starship sheets to PDF format.

This project was initially developed as the final project for the higher education cycle of Multiplatform Application Development. The primary technologies used in its creation are Android Studio and Java, with Firebase serving as the backend. The project was developed with educational purposes in mind, so Firebase was initially used as a demonstration of Firebase API usage and user management, in addition to utilizing a non-relational database.

As I plan to continue developing the application, it makes more sense to redesign the storage to make use of SQLite and remove the need for Firebase user authentication. This will orient the app towards an offline application, allowing me to focus on resolving minor bugs and expanding the application's features.

This new version will include AdMob integration for monetization purposes due to the need to cover the costs of maintaining the application in the Google Play Store. The ads will be displayed after the splash screen and will not interfere with the user experience.

Screenshots Screenshot 1 Screenshot 3 Screenshot 4 Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8 Screenshot 9 Screenshot 10

Features

  • Character Sheets: Manage your character's stats, inventory, and more.
  • Starship Sheets: Keep track of your starship's stats and inventory.
  • Special Star Trek Adventures Dice Rolls: Perform special dice rolls unique to Star Trek Adventures.
  • Export Sheets to PDF: Export your character and starship sheets to PDF for easy sharing and printing.
  • Selectable Design: Choose between red, blue, and gold themes to customize the app's appearance.
  • SQLite Database: Store character and starship data locally using an SQLite database, avoiding the need for online authentication or data storage.

Repository Structure (TODO: Update)

Files & folders
.
└── STACompanion
    ├── app
    │   ├── build.gradle.kts
    │   ├── proguard-rules.pro
    │   ├── release
    │   │   ├── app-release.aab
    │   │   ├── app-release.apk
    │   │   └── output-metadata.json
    │   ├── src
    │   │   ├── androidTest
    │   │   │   └── java
    │   │   │       └── io
    │   │   │           └── github
    │   │   │               └── k3ssdev
    │   │   │                   └── stacompanion
    │   │   │                       └── ExampleInstrumentedTest.java
    │   │   ├── google-services.json
    │   │   ├── main
    │   │   │   ├── AndroidManifest.xml
    │   │   │   ├── assets
    │   │   │   │   ├── STA_personaje.pdf
    │   │   │   │   └── Stardate81316-aolE.ttf
    │   │   │   ├── ic_launcher-playstore.png
    │   │   │   ├── java
    │   │   │   │   └── io
    │   │   │   │       └── github
    │   │   │   │           └── k3ssdev
    │   │   │   │               └── stacompanion
    │   │   │   │                   ├── data
    │   │   │   │                   │   ├── CharacterFragmentAdapter.java
    │   │   │   │                   │   ├── CharacterSheet.java
    │   │   │   │                   │   ├── SheetSettings.java
    │   │   │   │                   │   └── Starship.java
    │   │   │   │                   ├── LegalActivity.java
    │   │   │   │                   ├── LoginActivity.java
    │   │   │   │                   ├── MainActivity.java
    │   │   │   │                   ├── ui
    │   │   │   │                   │   ├── characters
    │   │   │   │                   │   │   ├── CharactersFragment.java
    │   │   │   │                   │   │   ├── charactersheet
    │   │   │   │                   │   │   │   ├── CharacterSheetFragment.java
    │   │   │   │                   │   │   │   ├── DataTabFragment.java
    │   │   │   │                   │   │   │   ├── OthersFragment.java
    │   │   │   │                   │   │   │   ├── SkillsFragment.java
    │   │   │   │                   │   │   │   └── StatusFragment.java
    │   │   │   │                   │   │   ├── CharacterSheetEditActivity.java
    │   │   │   │                   │   │   └── CharacterSheetViewModel.java
    │   │   │   │                   │   ├── dice
    │   │   │   │                   │   │   ├── DiceFragment.java
    │   │   │   │                   │   │   ├── DiceResultAdapter.java
    │   │   │   │                   │   │   ├── DiceResult.java
    │   │   │   │                   │   │   ├── DiceViewModel.java
    │   │   │   │                   │   │   └── SpaceItemDecoration.java
    │   │   │   │                   │   └── settings
    │   │   │   │                   │       ├── SettingsFragment.java
    │   │   │   │                   │       └── SettingsViewModel.java
    │   │   │   │                   └── util
    │   │   │   │                       └── PdfUtil.java
    │   │   │   └── res
    │   │   │       ├── anim
    │   │   │       │   └── rotate_animation.xml
    │   │   │       ├── drawable
    │   │   │       │   ├── baseline_add_24.xml
    │   │   │       │   ├── baseline_casino_24.xml
    │   │   │       │   ├── baseline_contact_page_24.xml
    │   │   │       │   ├── baseline_delete_forever_24.xml
    │   │   │       │   ├── baseline_edit_24.xml
    │   │   │       │   ├── baseline_manage_accounts_24.xml
    │   │   │       │   ├── baseline_picture_as_pdf_24.xml
    │   │   │       │   ├── baseline_replay_24.xml
    │   │   │       │   ├── baseline_restart_alt_24.xml
    │   │   │       │   ├── baseline_sort_24.xml
    │   │   │       │   ├── custom_edittext.xml
    │   │   │       │   ├── dice20_01.xml
    │   │   │       │   ├── dice20_02.xml
    │   │   │       │   ├── dice20_03.xml
    │   │   │       │   ├── dice20_04.xml
    │   │   │       │   ├── dice20_05.xml
    │   │   │       │   ├── dice20_06.xml
    │   │   │       │   ├── dice20_07.xml
    │   │   │       │   ├── dice20_08.xml
    │   │   │       │   ├── dice20_09.xml
    │   │   │       │   ├── dice20_10.xml
    │   │   │       │   ├── dice20_11.xml
    │   │   │       │   ├── dice20_12.xml
    │   │   │       │   ├── dice20_13.xml
    │   │   │       │   ├── dice20_14.xml
    │   │   │       │   ├── dice20_15.xml
    │   │   │       │   ├── dice20_16.xml
    │   │   │       │   ├── dice20_17.xml
    │   │   │       │   ├── dice20_18.xml
    │   │   │       │   ├── dice20_19.xml
    │   │   │       │   ├── dice20_20.xml
    │   │   │       │   ├── dice6_fail.xml
    │   │   │       │   ├── dice6_special.xml
    │   │   │       │   ├── dice6_success_double.xml
    │   │   │       │   ├── dice6_success.xml
    │   │   │       │   ├── google_icon.png
    │   │   │       │   ├── ic_baseline_person_24.xml
    │   │   │       │   ├── ic_dashboard_black_24dp.xml
    │   │   │       │   ├── ic_email.xml
    │   │   │       │   ├── ic_google.xml
    │   │   │       │   ├── ic_home_black_24dp.xml
    │   │   │       │   ├── ic_launcher_background.xml
    │   │   │       │   ├── ic_launcher_foreground.xml
    │   │   │       │   ├── ic_notifications_black_24dp.xml
    │   │   │       │   ├── ic_search_black_24dp.xml
    │   │   │       │   ├── lock_76.xml
    │   │   │       │   ├── outline_file_save_24.xml
    │   │   │       │   └── rounded_button.xml
    │   │   │       ├── drawable-night
    │   │   │       │   ├── baseline_add_24.xml
    │   │   │       │   ├── baseline_casino_24.xml
    │   │   │       │   ├── baseline_edit_24.xml
    │   │   │       │   ├── baseline_replay_24.xml
    │   │   │       │   ├── dice20_01.xml
    │   │   │       │   ├── dice20_02.xml
    │   │   │       │   ├── dice20_03.xml
    │   │   │       │   ├── dice20_04.xml
    │   │   │       │   ├── dice20_05.xml
    │   │   │       │   ├── dice20_06.xml
    │   │   │       │   ├── dice20_07.xml
    │   │   │       │   ├── dice20_08.xml
    │   │   │       │   ├── dice20_09.xml
    │   │   │       │   ├── dice20_10.xml
    │   │   │       │   ├── dice20_11.xml
    │   │   │       │   ├── dice20_12.xml
    │   │   │       │   ├── dice20_13.xml
    │   │   │       │   ├── dice20_14.xml
    │   │   │       │   ├── dice20_15.xml
    │   │   │       │   ├── dice20_16.xml
    │   │   │       │   ├── dice20_17.xml
    │   │   │       │   ├── dice20_18.xml
    │   │   │       │   ├── dice20_19.xml
    │   │   │       │   ├── dice20_20.xml
    │   │   │       │   ├── dice6_fail.xml
    │   │   │       │   ├── dice6_special.xml
    │   │   │       │   ├── dice6_success_double.xml
    │   │   │       │   ├── dice6_success.xml
    │   │   │       │   ├── ic_baseline_person_24.xml
    │   │   │       │   ├── ic_email.xml
    │   │   │       │   ├── ic_search_black_24dp.xml
    │   │   │       │   ├── lock_76.xml
    │   │   │       │   └── outline_file_save_24.xml
    │   │   │       ├── layout
    │   │   │       │   ├── activity_character_sheet_edit.xml
    │   │   │       │   ├── activity_legal.xml
    │   │   │       │   ├── activity_login.xml
    │   │   │       │   ├── activity_main.xml
    │   │   │       │   ├── character_sheet_item.xml
    │   │   │       │   ├── dice_result_item.xml
    │   │   │       │   ├── fragment_account.xml
    │   │   │       │   ├── fragment_character_sheet.xml
    │   │   │       │   ├── fragment_character.xml
    │   │   │       │   ├── fragment_dice.xml
    │   │   │       │   ├── fragment_tab_sheet_data.xml
    │   │   │       │   ├── fragment_tab_sheet_others.xml
    │   │   │       │   ├── fragment_tab_sheet_skills.xml
    │   │   │       │   └── fragment_tab_sheet_status.xml
    │   │   │       ├── menu
    │   │   │       │   ├── bottom_nav_menu.xml
    │   │   │       │   ├── character_sheet_toolbar_menu_edit.xml
    │   │   │       │   ├── character_sheet_toolbar_menu.xml
    │   │   │       │   ├── dice_menu.xml
    │   │   │       │   └── toolbar_menu.xml
    │   │   │       ├── mipmap-anydpi-v26
    │   │   │       │   ├── ic_launcher_round.xml
    │   │   │       │   └── ic_launcher.xml
    │   │   │       ├── mipmap-hdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   ├── ic_launcher.webp
    │   │   │       │   ├── stacompanion_blue.png
    │   │   │       │   ├── stacompanion_logo2.png
    │   │   │       │   ├── stacompanion_logo.png
    │   │   │       │   ├── stacompanion_red.png
    │   │   │       │   └── stacompanion_yellow.png
    │   │   │       ├── mipmap-mdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── mipmap-xhdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── mipmap-xxhdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── mipmap-xxxhdpi
    │   │   │       │   ├── ic_launcher_foreground.webp
    │   │   │       │   ├── ic_launcher_round.webp
    │   │   │       │   └── ic_launcher.webp
    │   │   │       ├── navigation
    │   │   │       │   └── mobile_navigation.xml
    │   │   │       ├── values
    │   │   │       │   ├── colors.xml
    │   │   │       │   ├── dimens.xml
    │   │   │       │   ├── keys.xml
    │   │   │       │   ├── strings.xml
    │   │   │       │   ├── styles.xml
    │   │   │       │   └── themes.xml
    │   │   │       ├── values-es
    │   │   │       │   └── strings.xml
    │   │   │       ├── values-night
    │   │   │       │   ├── keys.xml
    │   │   │       │   ├── strings.xml
    │   │   │       │   └── themes.xml
    │   │   │       ├── values-v26
    │   │   │       │   ├── strings.xml
    │   │   │       │   └── styles.xml
    │   │   │       └── xml
    │   │   │           ├── backup_rules.xml
    │   │   │           ├── data_extraction_rules.xml
    │   │   │           └── file_paths.xml
    │   │   └── test
    │   │       └── java
    │   │           └── io
    │   │               └── github
    │   │                   └── k3ssdev
    │   │                       └── stacompanion
    │   │                           └── ExampleUnitTest.java
    │   └── stacompanion-a1286-default-rtdb-export.json
    ├── build.gradle.kts
    │   └── wrapper
    │       │          
    │       │           
    │       │           
    │       │          
    │       ├── gradle-wrapper.jar
    │       └── gradle-wrapper.properties
    ├── gradle.properties
    ├── gradlew
    ├── gradlew.bat
    ├── images
    │   ├── stacompanion_blue.png
    │   ├── stacompanion_blue_rounded.png
    │   ├── stacompanion_screenshot_1.jpg
    │   ├── stacompanion_screenshot_2.jpg
    │   └── stacompanion_screenshot_3.jpg
    ├── LICENSE
    ├── local.properties
    ├── README.MD
    ├── settings.gradle.kts
    └── sta_tree.md

Modules

The STA Companion App is organized into several modules:

  • app: This is the main module of the application. It contains all the activities, fragments, view models, and other classes related to the user interface of the app.

  • data: This module contains classes related to data handling in the app, such as data models and data sources.

  • ui: This module contains classes related to the user interface of the app, such as custom views and adapters.

Each module has its own build.gradle.kts file for configuration and dependencies specific to that module.


Getting Started

Requirements
  • Android Studio Hedgehog

  • Android SDK 30

  • Android Build Tools v30.0.3

  • Android Emulator or Android device

  • Android 9.0 (API level 28) or higher

  • Java 8 or higher

  • Kotlin 1.4.32 or higher

  • For PDF generation, you will need to add the STA_personaje.pdf file to the app/src/assets directory. This file is included in the repository.

  • For dice rolling, you will need to add the Stardate81316-aolE.ttf file to the app/src/assets directory. This file is included in the repository.

  • For dice rolling, you will need to add the dice20_01.xml to dice20_20.xml files to the app/src/drawable directory. These files are included in the repository.

  • For dice rolling, you will need to add the dice6_fail.xml, dice6_special.xml, dice6_success.xml, and dice6_success_double.xml files to the app/src/drawable directory. These files are included in the repository.

  • For dice rolling, you will need to add the rotate_animation.xml file to the app/src/anim directory. This file is included in the repository.

Installation

To install the STA Companion App on your local machine for development and testing purposes, follow these steps:

  1. Clone the repository

    Open your terminal and use the following command to clone the repository:

    git clone https://github.com/k3ssdev/STACompanion.git
  2. Navigate to the project directory

    Change your current directory to the project's directory:

    cd STACompanion
  3. Sync the project

    Open the project in Android Studio and sync the project with Gradle files. This can be done by clicking on the Sync Project with Gradle Files button in the toolbar or by using the File > Sync Project with Gradle Files option in the menu.

  4. Build the project

    Build the project by clicking on the Build > Make Project option in the menu or by clicking on the Make Project button in the toolbar (the hammer icon).

  5. Run the project

    Run the app by clicking on the Run > Run 'app' option in the menu or by clicking on the Run button in the toolbar (the green play icon).

Please note that you need to have Android Studio and the Android SDK installed on your machine. Also, an Android device or emulator is required for running the app.

Running STA Companion
  1. Select the Run Configuration

    In Android Studio, select the appropriate run configuration from the dropdown in the toolbar. For most cases, this will be the app configuration.

  2. Select the Target Device

    Click on the Select Target Device button in the toolbar (next to the run configuration dropdown). This will open a dialog where you can select an Android device or emulator to run the app on. If you don't have a device connected or an emulator set up, you can create a new Android Virtual Device (AVD) from this dialog.

  3. Run the App

    Click on the Run button in the toolbar (the green play icon). This will build and run the app on the selected device or emulator.

Please note that the app requires Android 9.0 (API level 28) or higher to run.

Tests

WIP


Project Roadmap (WIP)

User Interface:

  • ► Create a splash screen.
  • ► Implement AdMob integration.
  • ► Create a login screen.
  • ► Create a main screen with a bottom navigation bar.
  • ► Create a character sheet screen.
  • ► Create a dice rolling screen.
  • ► Create a settings screen.
  • ► Create a character sheet edit screen.
  • ► Create a legal screen.
  • ► Create a ship sheet screen.
  • ► Selectable design for different themes.
  • ► Responsive design for different screen sizes.
  • ► Landscape orientation support.
  • ► Add animations to the app.

Data Management:

  • ► Implement a SQLite database for local storage.
  • ► Implement a data extraction system for character sheets.
  • ► Implement an import system for character sheets.
  • ► Implement data statistics for characters and starships with charts.

Localization:

  • ► Update localization support for Spanish.
  • ► Update localization support for English.

Dice Rolling System:

  • ► Perform rolls using special 6-sided dice used in Star Trek Adventures and 20-sided dices.
  • ► Allow selection of the number of dice to roll and display the result.
  • ► Add animations during the dice roll.

Character and Ship Sheets:

  • ► Create, edit, and delete character sheets.
  • ► Display character sheet information in a tabbed layout.
  • ► Create, edit, and delete ship sheets.
  • ► Include images for characters.
  • ► Include images for ships.
  • ► Simplify skill rolls directly from the sheets with a single touch.
  • ► Display the roll result and any applied modifiers.

PDF Export:

  • ► Generate PDF files of sheets in the official game format.
  • ► Include all relevant information in the PDF, such as attributes, skills, and notes.
  • ► Create PDF files of ship sheets.

Feedback

Your feedback is important to me. If you have any issues, suggestions, or feature requests, please let me know.

  • Report Issues: Submit bugs found or log feature requests for STA Companion.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Credits

The character sheet used in this application is the version edited by Holocubierta for Spain. You can find the original character sheet at the following link: Character Sheet - Holocubierta


Legal Notice

The Star Trek Adventures character sheet used in this application is owned by Holocubierta. This application is an unofficial project and is not affiliated with or endorsed by Holocubierta.

This application is provided "as is" and "as available" without any warranties of any kind. The developers of this application are not liable for any damages or harm arising from its use.

All references to "Star Trek" and "Holocubierta" in this application and its documentation are used for identification and reference purposes only and do not intend to infringe on the rights of CBS Studios or Holocubierta.

Return

About

STA Companion App is a companion application for Android devices for the Star Trek Adventures tabletop RPG. It allows players to manage their characters and starships, perform special dice rolls, and export their character and starship sheets to PDF.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages