Skip to content

FandomHub (API): An API for managing and accessing anime and manga-related information, inspired by MyAnimeList. Built with Django and Django Rest Framework, PostgreSQL, SQLite, Redis, and Docker.

License

Notifications You must be signed in to change notification settings

tyronejosee/project_fandomhub_api

Repository files navigation

FandomHub - API

📚 Documentation

An API inspired by MyAnimeList, designed for retrieving detailed information about anime and manga. It provides access to titles, genres, ratings, and user reviews, allowing users to query and explore a wide range of anime and manga content.

python-version django-version django-version

⚙️ Installation

Clone the repository.

git clone git@github.com:tyronejosee/project_fandomhub_api.git

Create a virtual environment (Optional, only if you have Python installed).

python -m venv env

Activate the virtual environment (Optional, only if you have Python installed).

env\Scripts\activate

Notes: (env) will appear in your terminal input.

Install dependencies for your local environment, for testing, linter and pre-commit configs, etc. (Optional, only if you have Python installed).

pip install -r requirements/local.txt

Create a copy of the .env.example file and rename it to .env.

cp .env.example .env

Update the values of the environment variables (Important).

Note: Make sure to correctly configure your variables before building the container.

🐳 Docker

Build your container; it will take time the first time, as Docker needs to download all dependencies and build the image. Use the -d (detached mode) flag to start your containers in the background. Use the --build flag if you have changes and need to rebuild.

docker compose up
docker compose up -d
docker compose up --build

Stop the running containers (does not remove them).

docker compose stop

Start previously created and stopped containers.

docker compose start

Show container logs in real-time.

docker compose logs -f

Restart a service with issues (Replace <service_name>).

docker compose restart <service_name>

Remove your container.

docker compose down

🐍 Django

Access the web service console that runs Django.

docker compose exec web bash

Inside the Django console, create the migrations.

python manage.py makemigrations

Run the migrations.

python manage.py migrate

If you need to be more specific, use:

python manage.py migrate <app_label> <migration_name>

List all available migrations and their status.

python manage.py showmigrations

Note: Manually create the migration if Django skips an app; this happens because Django did not find the /migrations folder.

Create a superuser to access the entire site without restrictions.

python manage.py createsuperuser

Log in to admin:

http://127.0.0.1:8000/admin/

Access Swagger or Redoc.

http://127.0.0.1:8000/api/schema/swagger/
http://127.0.0.1:8000/api/schema/redoc/

🚨 Important Notes

Check the creation of migrations before creating them.

docker compose exec web python manage.py makemigrations users

Note: Checking migrations before their creation is necessary to avoid inconsistencies in user models.

🐘 PostgreSQL

Access the PostgreSQL console.

docker compose exec db psql -U postgres -d fandomhub_db

List all the tables in the database.

\dt

Show the detailed structure of a specific table.

\d <table_name>

Create a backup of your database (Optional).

docker compose exec web python manage.py dumpdata > backup.json

Load the created backup if needed (Optional).

docker compose exec web python manage.py loaddata

🟥 Redis

docker compose exec redis redis-cli
keys *

🌍 Internationalization

Generate translation files for the languages.

django-admin makemessages -l ja --ignore=env/*
django-admin makemessages -l es --ignore=env/*

Use --ignore to exclude specific directories from translation.

Compile translation files after making changes to translations.

django-admin compilemessages

⚖️ License

This project is under the Apache-2.0 license.

About

FandomHub (API): An API for managing and accessing anime and manga-related information, inspired by MyAnimeList. Built with Django and Django Rest Framework, PostgreSQL, SQLite, Redis, and Docker.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages