# 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

```bash
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:

```bash
rbenv install 3.3.7
rbenv local 3.3.7
```

### 3. Install Dependencies

```bash
gem install bundler
bundle install
```

### 4. Database Configuration

1. Ensure PostgreSQL is running
2. Create the database configuration:

```bash
rails db:create
rails db:migrate
```

### 5. AWS S3 Configuration

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

```bash
EDITOR=vim rails credentials:edit
```

Add the following structure to your credentials:

```yaml
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)

```bash
rails data:import
```

### 7. Start the Server

```bash
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.
