Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tyronejosee/project_fandomhub_api
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.
https://github.com/tyronejosee/project_fandomhub_api
api django django-rest-framework docker drf drf-spectacular flake8 github-actions grafana jwt nginx postgres postgresql prometheus python redis redoc sqlite3 swagger swagger-ui
Last synced: about 2 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/tyronejosee/project_fandomhub_api
- Owner: tyronejosee
- License: apache-2.0
- Created: 2024-01-31T17:04:34.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-08-27T20:42:43.000Z (4 months ago)
- Last Synced: 2024-08-28T01:43:05.435Z (4 months ago)
- Topics: api, django, django-rest-framework, docker, drf, drf-spectacular, flake8, github-actions, grafana, jwt, nginx, postgres, postgresql, prometheus, python, redis, redoc, sqlite3, swagger, swagger-ui
- Language: Python
- Homepage: https://project-fandomhub-docs.pages.dev/
- Size: 12 MB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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.
## ⚙️ Installation
Clone the repository.
```bash
git clone [email protected]:tyronejosee/project_fandomhub_api.git
```Create a virtual environment (Optional, only if you have Python installed).
```bash
python -m venv env
```Activate the virtual environment (Optional, only if you have Python installed).
```bash
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).
```bash
pip install -r requirements/local.txt
```Create a copy of the `.env.example` file and rename it to `.env`.
```bash
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.```bash
docker compose up
docker compose up -d
docker compose up --build
```Stop the running containers (does not remove them).
```bash
docker compose stop
```Start previously created and stopped containers.
```bash
docker compose start
```Show container logs in real-time.
```bash
docker compose logs -f
```Restart a service with issues (Replace ``).
```bash
docker compose restart
```Remove your container.
```bash
docker compose down
```## 🐍 Django
Access the `web` service console that runs Django.
```bash
docker compose exec web bash
```Inside the Django console, create the migrations.
```bash
python manage.py makemigrations
```Run the migrations.
```bash
python manage.py migrate
```If you need to be more specific, use:
```bash
python manage.py migrate
```List all available migrations and their status.
```bash
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.
```bash
python manage.py createsuperuser
```Log in to `admin`:
```bash
http://127.0.0.1:8000/admin/
```Access Swagger or Redoc.
```bash
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.
```bash
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.
```bash
docker compose exec db psql -U postgres -d fandomhub_db
```List all the tables in the database.
```bash
\dt
```Show the detailed structure of a specific table.
```bash
\d
```Create a backup of your database (Optional).
```bash
docker compose exec web python manage.py dumpdata > backup.json
```Load the created backup if needed (Optional).
```bash
docker compose exec web python manage.py loaddata
```## 🟥 Redis
```bash
docker compose exec redis redis-cli
keys *
```## 🌍 Internationalization
Generate translation files for the languages.
```bash
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.
```bash
django-admin compilemessages
```## ⚖️ License
This project is under the [Apache-2.0 license](https://github.com/tyronejosee/project_fandomhub_api/blob/main/LICENSE).