An API to help Granblue Fantasy players create and share teams and strategies.
Find a file
Justin Edmund e3a44ca0d5
Implement embed images (#173)
* Add mini_magick and rufus-scheduler

* Expose attributes and add sigs to AwsService

* Get Party ready for preview state

* Added new fields for preview state and generated_at timestamp
* Add preview state enum to model
* Add preview_relevant_changes? after_commit hook

* Add jobs for generating and cleaning up party previews

* Add new endpoints to PartiesController

* `preview` shows the preview and queues it up for generation if it doesn't exist yet
* `regenerate_preview` allows the party owner to force regeneration of previews

* Schedule jobs

* Stalled jobs are checked every 5 minutes
* Failed jobs are retried every hour
* Old preview jobs are cleaned up daily

* Add the preview service

This is where the bulk of the work is. This service renders out the preview images bit by bit. Currently we render the party name, creator, job icon, and weapon grid.

This includes signatures and some fonts.
2025-01-18 09:08:15 -08:00
.github Update PULL_REQUEST_TEMPLATE.md (#166) 2025-01-16 00:34:58 -08:00
app Implement embed images (#173) 2025-01-18 09:08:15 -08:00
bin June 2023 Update (#102) 2023-06-19 03:53:48 -07:00
config Implement embed images (#173) 2025-01-18 09:08:15 -08:00
db Implement embed images (#173) 2025-01-18 09:08:15 -08:00
lib Adds documentation to some lib functions (#168) 2025-01-18 03:09:29 -08:00
log Restart on Rails 2020-09-14 18:30:54 -07:00
public Create favicon.ico 2022-02-04 01:10:02 -08:00
sig Implement embed images (#173) 2025-01-18 09:08:15 -08:00
spec Update seeds and fix deletion bug (#110) 2023-06-23 20:34:08 -07:00
storage Restart on Rails 2020-09-14 18:30:54 -07:00
test Restart on Rails 2020-09-14 18:30:54 -07:00
tmp Restart on Rails 2020-09-14 18:30:54 -07:00
vendor Restart on Rails 2020-09-14 18:30:54 -07:00
.env Hotfix so weapon key search translates ints to arrays (#140) 2023-12-30 06:20:22 -08:00
.gitignore Small Rails 7 configuration changes (#72) 2023-02-05 00:56:27 -08:00
.ruby-gemset Updates to Ruby 3.3.7 (#163) 2025-01-15 21:31:49 -08:00
.ruby-version Updates to Ruby 3.3.7 (#163) 2025-01-15 21:31:49 -08:00
.solargraph.yml Create .solargraph.yml 2020-09-25 10:41:23 -07:00
config.ru Restart on Rails 2020-09-14 18:30:54 -07:00
ENDPOINTS.md Create ENDPOINTS.md (#169) 2025-01-18 03:22:55 -08:00
Gemfile Implement embed images (#173) 2025-01-18 09:08:15 -08:00
Gemfile.lock Implement embed images (#173) 2025-01-18 09:08:15 -08:00
LICENSE Create LICENSE (#172) 2025-01-18 03:25:32 -08:00
Rakefile Restart on Rails 2020-09-14 18:30:54 -07:00
README.md Update README.md (#171) 2025-01-18 03:25:40 -08:00

Hensei API

Project Overview

Hensei is a Ruby on Rails API for managing Granblue Fantasy party configurations, providing comprehensive tools for team building, character management, and game data tracking.

Prerequisites

  • Ruby 3.3.7
  • Rails 8.0.1
  • PostgreSQL
  • AWS S3 Account (for image storage)

System Dependencies

  • Ruby version manager (rbenv or RVM recommended)
  • Bundler
  • PostgreSQL
  • Redis (for background jobs)
  • ImageMagick (for image processing)

Initial Setup

1. Clone the Repository

git clone https://github.com/your-organization/hensei-api.git
cd hensei-api

2. Install Ruby

Ensure you have Ruby 3.3.7 installed. If using rbenv:

rbenv install 3.3.7
rbenv local 3.3.7

3. Install Dependencies

gem install bundler
bundle install

4. Database Configuration

  1. Ensure PostgreSQL is running
  2. Create the database configuration:
rails db:create
rails db:migrate

5. AWS S3 Configuration

Hensei requires an AWS S3 bucket for storing images. Configure your credentials:

EDITOR=vim rails credentials:edit

Add the following structure to your credentials:

aws:
  s3:
    bucket: your-bucket-name
    access_key_id: your-access-key
    secret_access_key: your-secret-key
    region: your-aws-region

6. Run Initial Data Import (Optional)

rails data:import

7. Start the Server

rails server

Environment Variables

While most configurations use Rails credentials, you may need to set:

  • DATABASE_URL
  • RAILS_MASTER_KEY
  • REDIS_URL

Performance Considerations

  • Use Redis for caching
  • Background jobs managed by Sidekiq
  • Ensure PostgreSQL is optimized for full-text search

Security

  • Always use rails credentials:edit for sensitive information
  • Keep your master.key secure and out of version control
  • Regularly update dependencies

Deployment

Recommended platforms:

  • Railway.app (We use this)i98-i
  • Heroku
  • DigitalOcean App Platform

Deployment steps:

  1. Precompile assets: rails assets:precompile
  2. Run migrations: rails db:migrate
  3. Start the server with a production-ready web server like Puma

Troubleshooting

  • Ensure all credentials are correctly set
  • Check PostgreSQL and Redis connections
  • Verify AWS S3 bucket permissions

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0-only) with additional non-commercial restrictions.

Key points:

  • You are free to use and modify the software for non-commercial purposes
  • Any modifications must be shared under the same license
  • You must provide attribution to the original authors
  • No warranty is provided

See the LICENSE file for full details.

Contact

For support, please open an issue on the GitHub repository.