{"id":24129421,"url":"https://github.com/synbiodex/sbol-validator","last_synced_at":"2025-09-01T01:32:31.846Z","repository":{"id":43751347,"uuid":"48761642","full_name":"SynBioDex/SBOL-Validator","owner":"SynBioDex","description":"A web application to validate SBOL files","archived":false,"fork":false,"pushed_at":"2024-09-07T04:03:11.000Z","size":98862,"stargazers_count":7,"open_issues_count":17,"forks_count":3,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-09-07T05:29:00.493Z","etag":null,"topics":["flask","python","sbol","standards","synthetic-biology"],"latest_commit_sha":null,"homepage":"https://validator.sbolstandard.org","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SynBioDex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2015-12-29T18:37:19.000Z","updated_at":"2024-09-07T04:03:14.000Z","dependencies_parsed_at":"2024-09-07T05:26:29.501Z","dependency_job_id":"de9ac625-9169-49bc-a89f-1bc128bebcd9","html_url":"https://github.com/SynBioDex/SBOL-Validator","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/SynBioDex/SBOL-Validator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SynBioDex%2FSBOL-Validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SynBioDex%2FSBOL-Validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SynBioDex%2FSBOL-Validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SynBioDex%2FSBOL-Validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SynBioDex","download_url":"https://codeload.github.com/SynBioDex/SBOL-Validator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SynBioDex%2FSBOL-Validator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273064261,"owners_count":25039259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"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":["flask","python","sbol","standards","synthetic-biology"],"created_at":"2025-01-11T19:32:07.373Z","updated_at":"2025-09-01T01:32:31.820Z","avatar_url":"https://github.com/SynBioDex.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SBOL Validator\n[![Build Status](https://travis-ci.org/SynBioDex/SBOL-Validator.svg?branch=master)](https://travis-ci.org/SynBioDex/SBOL-Validator)  \nA web-based validator for SBOL files backed by libSBOLj's validation runtimes. This validator offers support for SBOL2, SBOL1.1, and GenBank.\nFurthermore, it is accessible through a web GUI or a RESTful API. \n\nThe validator can be found [here](https://validator.sbolstandard.org) with an API endpoint found at `https://validator.sbolstandard.org/validate`.\n\n### Installation\nFirst, bit about the way the application is structured.\nThere are two main parts:\n - The web frontend -- static HTML, CSS, and JavaScript files served by a webserver (nginx setup instructions below)\n - The REST API backend -- a Python Flask application served by uwsgi.\n\n#### Prerequisites\nYou should have Git installed. To do that, execute the appropriate command for your system.\n\n| OS | Command |\n| --- | --- |\n| Ubuntu | `sudo apt-get install git` |\n| Mac | `brew install git` |\n\nFirst, clone the repository into its own folder on your computer. To do so, navigate to the directory where you'd like to place this folder and run the command `git clone https://www.github.com/SynBioDex/SBOL-Validator.git` to create a new directory containing a clone of the validator. The setup is now ready to begin. \n\n#### Setting up the backend\n##### Prerequisites\nInstall all of the necessary packages onto your system with the appropriate command for your system.\n\n| OS | Command |\n| --- | --- |\n| Ubuntu | `sudo apt-get install python3 python3-pip` |\n| Mac | `brew install python3 pip3 pyvenv` |\n\n##### Set up virtual environment\nCreate a virtual environment for the validator in the parent directory. You can use the example commands below to create a virtualenv called `sbol-validator-venv`.\n\n| OS | Command |\n| --- | --- |\n| Ubuntu | `virtualenv sbol-validator-venv` |\n| Mac | `pyvenv sbol-validator-venv` |\n\nActivate this virtualenv using the command `source sbol-validator-venv/bin/activate` (note: for the remainder of this guide, it will be assumed that your virtualenv is named `sbol-validator-venv` -- if it isn't, you'll have to use common sense to find out where to substitute the name you used.) You should see `(sbol-validator-venv)` before your command prompt if you've correctly activated the virtualenv. \n\nNavigate into the `SBOL-Validator` directory. Run the command `pip install -r requirements.txt` to install all of the necessary Python packages for the validator. \n\nThis should be all that you need to run the backend manually. To test this, set the environment variable `FLASK_APP` to `validationapi.api` and run the command `python -m flask run` from within the `.../SBOL-Validator/src` directory. You should see the following message:\n\n```\nUnable to import uWSGI application.\nThis probably means that you're running the application manually.\nIf you are, ignore this message.\n * Serving Flask app \"validationapi.api\"\n * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\n```\n\n##### Set up Systemd service\nTo ensure that the application is managed by the system and restarted if it crashes or if the system powers off, we will create a Systemd unit file.\n\nCreate a `systemd` unit file called `sbol-validator.service` as root user in `/etc/systemd/system`. In it, paste the following content: \n\n```\n[Unit]\nDescription=uWSGI instance to serve SBOL Validator\nAfter=network.target\n\n[Service]\nUser=nginx\nGroup=nginx\nWorkingDirectory=/PATH/TO/YOUR/VALIDATOR/SBOL-Validator/src\nEnvironment=\"PATH=/PATH/TO/YOUR/VALIDATOR/sbol-validator-venv/bin\"\nExecStart=/PATH/TO/YOUR/VALIDATOR/sbol-validator-venv/bin/uwsgi --ini sbol-validator.ini\n\n[Install]\nWantedBy=multi-user.target\n```\n\nBe sure to replace `/PATH/TO/YOUR/VALIDATOR/` with the actual path to your validator.\n\nEnsure that the configuration is correct with `sudo systemctl restart sbol-validator`. If you see no errors, the validation service is up and running! To make sure that it runs at startup, run `sudo systemctl enable sbol-validator`. \n\n#### Setting up the frontend\n##### Prerequisites\nFirst, install `nginx`. Nginx will serve the static files for the frontend and direct any requests for the backend to uWSGI.\n\n| OS | Command |\n| --- | --- |\n| Ubuntu | `sudo apt-get install nginx` |\n| Mac | `brew install nginx` |\n\n##### Create nginx configuration\nNavigate to the `/etc/nginx/sites-available/` directory and create the file `sbol-validator.conf`.\n\nCopy the following into the file:\n\n```\nserver {\n    listen 80;\n    server_name server_domain_or_IP;\n   \n    location /sbol-validator/ {\n        alias /PATH/TO/YOUR/VALIDATOR/SBOL-Validator/src/validation-form/;\n        index html/form.html;\n    }\n    \n    location /validate/ {\n        include uwsgi_params;\n        uwsgi_pass unix:/PATH/TO/YOUR/VALIDATOR/SBOL-Validator/src/sbol-validator.sock;\n    }\n    \n    location /update/ {\n        include uwsgi_params;\n        uwsgi_pass unix:/PATH/TO/YOUR/VALIDATOR/SBOL-Validator/src/sbol-validator.sock;\n    }\n}\n```\n\nOnce you've saved this, check that there are no typos with the command `sudo nginx -t`. If everything is correct, restart nginx with `sudo service nginx restart`.\n\nWith that, your validator should be online!\n\n\n### API\nThe API documentation can be found [here](http://synbiodex.github.io/SBOL-Validator)\n\n### Docker\nThe application is packaged into two Docker containers to make things simpler to deploy and manage.\nThe container images are automatically built when the GitHub repository is updated and pushed to Docker Hub.\nTheir image names are `zachzundel/sbolvalidator` and `zachzundel/sbolconverter`, and the latest build is available at the `snapshot` tag for each. \n\nTo deploy the containers on your system, create a Systemd unitfile to manage and run the container.\nAn example file for the SBOL validator is shown below.\nThe unit file should be placed in the `/etc/systemd/system/` directory. \n\n```\n[Unit]\nDescription=SBOL Validator\n\n# This unitfile depends on the Docker service\nRequires=docker.service network-online.target\nAfter=docker.service network-online.target\n\n[Service]\n# Pulling the Docker image can take a while, so don't timeout\nTimeoutStartSec=0\n\nRestart=always\n\n# Before starting, stop any existing containers...\nExecStartPre=-/usr/bin/docker stop %n\n\n# ...remove them...\nExecStartPre=-/usr/bin/docker rm %n\n\n# ...and pull any new ones.\nExecStartPre=-/usr/bin/docker pull zachzundel/sbolvalidator:snapshot\n\nExecStart=/usr/bin/docker run --rm --name %n --publish 9000:80 zachzundel/sbolvalidator:snapshot\nExecStop=/usr/bin/docker stop %n\n\n[Install]\nWantedBy=multi-user.target\n```\n\nIf the file is named `validator.service`, it can then be started with the command `systemctl start validator`, it can be configured to start automatically with `systemctl enable validator`, and its status can be checked with `systemctl status validator`. \n\n### Deployment\nThe validator is deployed on the SBOL standard webserver, as is the converter.\nThey are configured in a manner shown above.\nA GitHub action is configured to automatically update the services when a new image is pushed to Docker Hub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynbiodex%2Fsbol-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsynbiodex%2Fsbol-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynbiodex%2Fsbol-validator/lists"}