API of Oxygen Toolbox
# Overview ([ZH](README_zh.md), EN)
This project is the backend API of Oxygen Toolbox. Provides tool store, tool management, authentication, user management and other functions.
# Requires
- Java 17+
- MySQL
- Redis
# Related projects
[Web UI of Oxygen Toolbox](https://github.com/FatttSnake/oxygen-ui)
[Desktop Client of Oxygen Toolbox](https://github.com/FatttSnake/oxygen-desktop)
[Android Client of Oxygen Toolbox](https://github.com/FatttSnake/oxygen-android)
# Quick Start
1. First run, generate configuration file template
```shell
java -jar oxygen-api.jar
```
2. Copy the `application-config.example.yml` file in the `data` directory to the running directory and rename it to `application-config.yml`
```shell
cp ./data/application-config.example.yml application-config.yml
```
3. Edit the content of the configuration file `application-config.yml`
4. Run again
```shell
java -jar oxygen-api.jar
```
# Security
Integration with Spring Security and add other filter for jwt token process. The secret key is stored in `application-config.yml`.
# Database
Two databases, MySQL + SQLite, are used. MySQL is used to store key data, and SQLite is used to store logs and other data that require a large amount of reading and writing.
# Q&A
> **Q: What is the default administrator account and password?**
>
> A: If configured in `application-config.yml` before initializing the database, use the specified account and password. If not configured, a random password will be generated by default. See the console output for details.
> **Q: Do I need to initialize the database?**
>
> A: This project uses `Flyway` to automatically initialize the database without manually defining the data table structure. To ensure data security, please back up the database before upgrading.