{"id":46648261,"url":"https://github.com/open5e/open5e-api","last_synced_at":"2026-03-08T05:32:12.607Z","repository":{"id":35750955,"uuid":"166594991","full_name":"open5e/open5e-api","owner":"open5e","description":"The api for open5e.com","archived":false,"fork":false,"pushed_at":"2026-03-04T18:32:00.000Z","size":148839,"stargazers_count":193,"open_issues_count":37,"forks_count":113,"subscribers_count":3,"default_branch":"staging","last_synced_at":"2026-03-05T00:49:17.428Z","etag":null,"topics":["django","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open5e.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2019-01-19T21:23:17.000Z","updated_at":"2026-02-26T19:57:06.000Z","dependencies_parsed_at":"2025-12-14T05:02:24.598Z","dependency_job_id":null,"html_url":"https://github.com/open5e/open5e-api","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/open5e/open5e-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open5e%2Fopen5e-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open5e%2Fopen5e-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open5e%2Fopen5e-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open5e%2Fopen5e-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open5e","download_url":"https://codeload.github.com/open5e/open5e-api/tar.gz/refs/heads/staging","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open5e%2Fopen5e-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30246727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T00:58:18.660Z","status":"online","status_checked_at":"2026-03-08T02:00:06.215Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","python"],"created_at":"2026-03-08T05:32:11.787Z","updated_at":"2026-03-08T05:32:12.567Z","avatar_url":"https://github.com/open5e.png","language":"Python","funding_links":["https://www.patreon.com/open5e"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"static/logo.png\" width=\"200px\" align=\"center\" alt=\"Open5e logo\" /\u003e\n  \u003ch1 align=\"center\"\u003eOpen5e API\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://open5e.com\"\u003ehttps://open5e.com\u003c/a\u003e\n    \u003cbr/\u003e\n    A JSON API for the D\u0026D 5e gamesystem\n  \u003c/p\u003e\n\u003c/p\u003e\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://api.open5e.com\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/website?down_message=Down\u0026label=Open5e%20API\u0026up_message=Up\u0026url=https%3A%2F%2Fapi.open5e.com\" alt=\"API\"\u003e\u003c/a\u003e\n\u003ca href=\"https://open5e.com\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/website?down_message=Down\u0026label=Open5e\u0026up_message=Up\u0026url=https%3A%2F%2Fopen5e.com\" alt=\"homepage\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://api.open5e.com\"\u003eAPI\u003c/a\u003e\n    \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n    \u003ca href=\"https://discord.gg/9RNE2rY\"\u003eDiscord\u003c/a\u003e\n    \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n    \u003ca href=\"https://www.patreon.com/open5e\"\u003ePatreon\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n# Table of contents\n\n- [Table of contents](#table-of-contents)\n- [Introduction](#introduction)\n- [Installation](#installation)\n  * [Requirements](#requirements)\n  * [Modules](#modules)\n- [Development](#development)\n  * [Build](#build)\n    + [Search Indexing](#search-indexing)\n  * [Run](#run)\n  * [Building the OAS file](#building-the-oas-file)\n- [Contributing](#contributing)\n  * [Editing existing sources](#editing-existing-sources)\n  * [Adding a new source](#adding-a-new-source)\n  * [Change existing models](#change-existing-models)\n- [Tests](#tests)\n- [Deployment](#deployment)\n  * [DigitalOcean](#digitalocean)\n  * [Railway.app](#railwayapp)\n  * [Docker](#docker)\n\n\u003csmall\u003e\u003ci\u003e\u003ca href='http://ecotrust-canada.github.io/markdown-toc/'\u003eTable of contents generated with markdown-toc\u003c/a\u003e\u003c/i\u003e\u003c/small\u003e\n\n# Introduction\n\nOpen5e is a community project driven by a small number of volunteers in their spare time. We welcome any and all contributions! Please join our Discord to help out: https://discord.gg/9RNE2rY or check out the issue board if you'd like to see what's being worked on!\n\nThe API uses the Django REST Framework for it's browsability and ease of use when developing CRUD endpoints. It uses django's default SQLite database, and pulls the data from the `/data` directory.\n\n# Installation\n\n## Requirements\n\n- [Python 3.11](https://www.python.org/downloads/)\n\n- [Pipenv](https://pipenv.pypa.io/en/latest/installation.html)\n\n## Dependencies\n\nPipenv is used to install all required packages from the `Pipfile` at the project root. Use the following command after cloning the project or switching branches.\n\n```bash\npipenv install --dev\n```\n\n# Development\n\n## Build\n\nCrate a local database and import game content. \n```bash\npipenv run python manage.py quicksetup --noindex\n```\n\nTo make sure the API is always using your updated code, this command must be run again if:\n- You add/remove/edit Game Content\n- You edit Python code\n- You switch git branches\n\n\n### Search Indexing\n\nTo use the search function, you must build the search index by running the above command without the `--noindex` flag.\n```bash\npipenv run python manage.py quicksetup\n```\n\n## Run\n\nRun the server locally. This server is only for development and shall __not__ be used in production. The server will be available at `http://localhost:8000`.\n\n```bash\npipenv run python manage.py runserver\n```\n\n### Self-hosting\nIf you would like to host the API yourself locally, we suggest using gunicorn as your wsgi server. Below is an equivalent command to what we use in production, which makes the server available at `http://localhost:8888`.\n\n```bash\ngunicorn -b :8888 server.wsgi:application\n```\n\nYou can use our Dockerfile as inspiration, but it likely will not work without significant edits to your operating environment. We have customized our production environment to use it.\n\n## Building the OAS file\n\nAfter completing a build, you can generate an OAS file to be used by another application.\n```bash\npipenv run python manage.py spectacular --color --file openapi-schema.yml` to build the OAS file.\n```\n\n# Contributing\nSee [contribution guide](.github/CONTRIBUTING.md).\n# Tests\n\nTests are located in the `api/tests` directory. These should be run before pushing new changes to the main repository. These tests require that the api is [running](##run) at `http://localhost:8000`.\n\n```bash\npipenv run pytest\n```\n\n## Approval tests\nApproval tests are run against the approved files in `api/tests/approved_files` as `*.approved.*` . If a test fails then the recieved input will be stored in a `*.recieved.*` file. If you wish to approve the changes, replace the old approved file with the recieved file.\n\nRecieved files shall not be included in the git repo.\n\n# Deployment\n\n## DigitalOcean\n\nThis deployment has been tested using [DigitalOcean Apps](https://www.digitalocean.com/go/cloud-hosting) with Docker Hub.\n\nTo start up the server from scratch on a droplet:\n\n```bash\ngit pull https://github.com/open5e/open5e-api\nexport SECRET_KEY=a_new_secret_key\nexport SERVER_NAME=whatever.yourdomain.com\ncd open5e-api/\ndocker-compose up\n```\n\n## Railway.app\n1. Create a fork on Github. This is used to automatically deploy whenever you make a change.\n2. Login with your Github account on [Railway.app](https://railway.app) and give it access to manage your forked repository.\n3. Create a new Project and choose 'Deploy from GitHub repo'. Select your fork in the list.\n4. Keep all settings default and deploy. Accept when Railway asks to copy variables existing variables from the repository.\n5. Add the variable `PORT` with the value `8888`.\n6. Add the variable `SERVER_NAME` with the [Railway-provided domain](https://docs.railway.app/deploy/exposing-your-app#railway-provided-domain) or add your own. \n7. Push a commit to Github and watch your open5e-api redeploy in minutes!\n\n\n## Docker\n\nWith docker installed, you can build the project with provided Dockerfile\n\n```bash\ndocker build\n```\n\nThis docker app can then be deployed with any provider.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen5e%2Fopen5e-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen5e%2Fopen5e-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen5e%2Fopen5e-api/lists"}