{"id":24884503,"url":"https://github.com/wuvt/wuvt-site","last_synced_at":"2025-09-08T19:42:18.886Z","repository":{"id":15632455,"uuid":"18369330","full_name":"wuvt/wuvt-site","owner":"wuvt","description":"Website including a CMS, playlist information, and donation management tools","archived":false,"fork":false,"pushed_at":"2025-02-23T18:40:53.000Z","size":5440,"stargazers_count":11,"open_issues_count":33,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T19:18:57.603Z","etag":null,"topics":["cms","dockerfile","python","radio","radio-station","website"],"latest_commit_sha":null,"homepage":"https://www.wuvt.vt.edu","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wuvt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2014-04-02T14:32:19.000Z","updated_at":"2025-02-23T18:38:45.000Z","dependencies_parsed_at":"2023-11-29T23:30:46.757Z","dependency_job_id":"d9e03c79-167b-400f-bea5-fa346c1ede4b","html_url":"https://github.com/wuvt/wuvt-site","commit_stats":null,"previous_names":[],"tags_count":74,"template":false,"template_full_name":null,"purl":"pkg:github/wuvt/wuvt-site","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wuvt%2Fwuvt-site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wuvt%2Fwuvt-site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wuvt%2Fwuvt-site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wuvt%2Fwuvt-site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wuvt","download_url":"https://codeload.github.com/wuvt/wuvt-site/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wuvt%2Fwuvt-site/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231433,"owners_count":25245585,"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-09-08T02:00:09.813Z","response_time":121,"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":["cms","dockerfile","python","radio","radio-station","website"],"created_at":"2025-02-01T14:28:29.070Z","updated_at":"2025-09-08T19:42:18.863Z","avatar_url":"https://github.com/wuvt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## wuvt-site\nThis is the next-generation website for [WUVT-FM](https://www.wuvt.vt.edu), \nVirginia Tech's student radio station.\n\nIt includes both a basic content management and simple donation system. It also\nintegrates with Trackman to provide live track information and playlists.\n\n### Deployment\nThese instructions are for Linux; instructions for other platforms may vary.\n\nFirst, clone the repo, create an empty config, and build the appropriate Docker\nimage for your environment. We provide Dockerfile.dev which is configured to\nuse SQLite and runs Redis directly in the image, and Dockerfile, which is\nrecommended for production deployments as it does not run any of the required\nservices inside the container itself.\n\nFor Dockerfile.dev:\n```\ngit clone https://github.com/wuvt/wuvt-site.git\ncd wuvt-site\ndocker build -t wuvt-site -f Dockerfile.dev .\n```\n\nNow, go ahead and copy config/config_example.json to config/config.json and\nconfigure as necessary. The most important thing is to set a random value for\n`SECRET_KEY`. You can generate a random value using the following command:\n```\nxxd -l 28 -p /dev/urandom\n```\n\nFinally, run it:\n```\ndocker run --rm -v $PWD/config:/data/config -e APP_CONFIG_PATH=/data/config/config.json -p 9070:8080 wuvt-site:latest\n```\n\nYou can now access the site at \u003chttp://localhost:9070/\u003e. An admin user account\nwill be created for you; the password is automatically generated and displayed\nwhen you launch the container.\n\n### Non-Docker Deployment\nFirst, install redis. For example, on Debian or Ubuntu:\n\n```\napt-get install redis\n```\n\nYou'll also want to get uWSGI. You need at least version 2.0.9. For example:\n\n```\napt-get install uwsgi uwsgi-core uwsgi-plugin-python\n```\n\nNow, build the SSE offload plugin. For example, on Debian:\n\n```\napt-get install uuid-dev libcap-dev libpcre3-dev\nuwsgi --build-plugin https://github.com/wuvt/uwsgi-sse-offload\nsudo cp sse_offload_plugin.so /usr/lib/uwsgi/plugins/\n```\n\nMake sure the redis daemon is running; on Debian, this will happen\nautomatically.\n\nIt is recommended that you use a virtualenv for this so that you can better\nseparate dependencies:\n\n```\nmkdir -p ~/.local/share/virtualenv\nvirtualenv ~/.local/share/virtualenv/wuvt-site\nsource ~/.local/share/virtualenv/wuvt-site/bin/activate\n```\n\nNow, within this virtualenv, install the dependencies:\n\n```\npip install -r requirements.txt\n```\n\nNext, clone the repo:\n\n```\ngit clone https://github.com/wuvt/wuvt-site.git\ncd wuvt-site\n```\n\nCreate a blank file, wuvt/config.py; you can override any of the default\nconfiguration options here if you so desire. You'll definitely need to set a\nvalue for `SECRET_KEY`. Next, you will need to render images, create the\ndatabase, and add some sample content to the site:\n\n```\nexport FLASK_APP=$PWD/wuvt/__init__.py\nflask render_images \u0026\u0026 flask initdb \u0026\u0026 flask sampledata\n```\n\nFinally, start uWSGI:\n\n```\nuwsgi --ini uwsgi.ini:dev\n```\n\nYou can now access the site at http://localhost:9070/\n\n### License\n\nBesides the exceptions noted below, the entirety of this software is available\nunder the GNU Affero General Public License:\n\n```\nCopyright 2012-2018 James Schwinabart, Calvin Winkowski, Matt Hazinski.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n```\n\nThe following files are JavaScript libraries, freely available under the MIT\nlicense as noted in their headers:\n* wuvt/static/js/jquery.js\n* wuvt/static/js/jquery.dataTables.min.js\n* wuvt/static/js/moment.min.js\n\nThe following font file was designed by Humberto Gregorio and is in the public\ndomain:\n* wuvt/static/fonts/sohoma_extrabold.woff\n\nOther included fonts (in wuvt/static/fonts) are not covered under this license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwuvt%2Fwuvt-site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwuvt%2Fwuvt-site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwuvt%2Fwuvt-site/lists"}