Skip to content

DeNyWho/AnifoxBackend

Repository files navigation

Anifox is a anime project where people can watch anime. Open source project made with ❤️.

About

Anifox is an open-source anime watching platform built with ❤️, designed to provide an ad-free experience for anime enthusiasts. This repository contains the backend of the second, completely rewritten version of the Anifox project, initially developed as a diploma project. Explore the live application on anifox.su!

Features

  • Anime Parsing: Scheduled tasks in Spring Boot fetch new anime data from Shikimori, Jikan, Kitsu, Haglund, and Kodik every 12 hours, stored in a PostgreSQL database. ✅
  • Episode Updates: Hourly scheduled tasks retrieve new anime episodes and metadata from Kodik, Kitsu, and Jikan. ✅
  • Anime Catalog: Supports main catalog requests, anime details, and more. ✅
  • Anime Characters: Find out all about your favorite anime character. ✅
  • Anime Voice Acting: Watch anime with any of the popular dubbings (JAM, KANSAI Studio, AniDub, AniLibria, Studio Band, Animedia, SHIZA Project, HDrezka Studio, AniMaunt, Amber, Dream Cast). ✅
  • OAuth 2.0 Authentication: Secure user authentication via Keycloak, integrated with the Spring Boot backend (cookie-based). ✅
  • User Features: Rate anime and add to personal lists (Watching, Watched, Planned, Postponed), saving the point where playback stopped. ✅
  • Admin Features: Block specific anime from appearing in user searches. ✅
  • Release Schedules: Display upcoming anime release schedules. ✅

Screenshots

Home Page

Home Page

Search

Search

Anime Detail

Anime Detail

Watching Anime

Watching Anime

Characters List

Characters List

Character Detail

Character Detail

Favourites

Favourites

Swagger UI

Swagger UI

Keycloak Integration

Keycloak Integration

API Documentation

API is documented using Springdoc. After running the app, access Swagger UI at http://localhost:{API PORT}/springdoc/v3/swagger-ui/index.html. (Before that, you need to create an account in keycloak with an administrator role)

Configuration

The AniFox backend requires environment variables to connect to external services, databases, and authentication systems.

anime.ko.token=<Kodik API token>;
bucket_name_s3=<Amazon S3 bucket name>;
secret_key_s3=<Amazon S3 secret access key>
domain_s3=<Amazon S3 CDN URL (e.g., https://cdn.domain)>;
spring.datasource.url=<JDBC URL to PostgreSQL (e.g., jdbc:postgresql://localhost:5432/anifox)>;
spring.datasource.username=<PostgreSQL username>;
spring.datasource.password=<PostgreSQL password>;
keycloak.auth-server-url=<Keycloak authentication server URL (e.g., https://keycloak)>;
keycloak.realm=<Keycloak realm name>;
keycloak.resource=<Keycloak client ID>;
keycloak.credentials.secret=<Keycloak client secret>;
keycloak.issuer-uri=<Keycloak realm issuer URL (e.g., https://keycloak/realms/realm-name)>;
key-store=<Path to keystore file (e.g., /path/to/keystore.jks)>;
key-store-password=<Keystore password>;
trust-store=<Path to truststore file (e.g., /path/to/truststore.jks)>;
trust-store-password=<Truststore password>;
spring.profiles.active=<Active profile (e.g., parser, prod, dev)>;

Requirements

  • JDK 17 or higher
  • PostgreSQL 13+
  • Keycloak server
  • Docker (optional for containerized deployment)
  • API tokens for external services (Kodik, etc.)

Built With 🛠

License

This project uses the Apache license, the details are written here

To contact me, use denis.akhunov123@gmail.com

Releases

No releases published

Packages

No packages published

Languages