A companion app for the Star Trek Adventures tabletop RPG.
Developed with the software and tools below.
- Overview
- Features
- Repository Structure
- Modules
- Getting Started
- Running STACompanion
- Tests
- Project Roadmap
- Feedback
- License
- Acknowledgments
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.
- 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.
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
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.
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 theapp/src/assets
directory. This file is included in the repository. -
For dice rolling, you will need to add the
Stardate81316-aolE.ttf
file to theapp/src/assets
directory. This file is included in the repository. -
For dice rolling, you will need to add the
dice20_01.xml
todice20_20.xml
files to theapp/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
, anddice6_success_double.xml
files to theapp/src/drawable
directory. These files are included in the repository. -
For dice rolling, you will need to add the
rotate_animation.xml
file to theapp/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:
-
Clone the repository
Open your terminal and use the following command to clone the repository:
git clone https://github.com/k3ssdev/STACompanion.git
-
Navigate to the project directory
Change your current directory to the project's directory:
cd STACompanion
-
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 theFile > Sync Project with Gradle Files
option in the menu. -
Build the project
Build the project by clicking on the
Build > Make Project
option in the menu or by clicking on theMake Project
button in the toolbar (the hammer icon). -
Run the project
Run the app by clicking on the
Run > Run 'app'
option in the menu or by clicking on theRun
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
-
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. -
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. -
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
-
► 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.
-
► 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.
-
► Update localization support for Spanish.
-
► Update localization support for English.
-
► 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.
-
► 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.
-
► 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.
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.
This project is licensed under the MIT License. See the LICENSE file for details.
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
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.