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
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.
This project was conceived as the capstone for the CFGS Multiplatform Application Development course. It leverages Firebase for user authentication and data storage, serving as a practical exploration of Google's APIs.
- 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.
- Firebase Authentication: Securely log in to the app using Firebase Authentication.
- Firebase Realtime Database: Store and retrieve data in real time with Firebase's NoSQL cloud database.
- Selectable Design: Choose between red, blue, and gold themes to customize the app's appearance.
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
-
Firebase Authentication
-
Firebase Realtime Database
-
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. -
For Firebase integration, you will need to create a Firebase project and add the
google-services.json
file to theapp/src
directory. For more information, see Add Firebase to your Android project. -
You will need to fill in the
keys.xml
file located in theapp/src/res/values
directory with your Firebase server client ID and Firebase database URL. The file should look like this:
<resources>
<string name="server_client_id">YOUR_SERVER_CLIENT_ID</string>
<string name="firebase_database_url">YOUR_FIREBASE_DATABASE_URL</string>
</resources>
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.
-
► 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 PDF files of character sheets.
-
► Add localization support for Spanish.
-
► Add localization support for English.
-
► Create a legal screen.
-
► Create a ship sheet screen.
-
► Create PDF files of ship sheets.
-
► Responsive design for different screen sizes.
-
► Landscape orientation support.
-
► Selectable design for different themes.
-
► Implement authentication system for user account management.
-
► Securely store character and ship data in Firebase for each user.
-
► Implement a settings menu for viewing user's data, closing session and delete account.
-
► Add a chat system between users.
-
► 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.
-
► Create, edit, and delete ship sheets.
-
► Display character sheet information in a tabbed layout.
-
► Include images for both player and ship sheets.
-
► 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.
Your feedback is important to us. Please use the following resources to provide feedback:
- Join the Discussions: Share your insights, provide feedback, or ask questions.
- 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.