{"id":34204287,"url":"https://github.com/thecacophonyproject/cacophony-web","last_synced_at":"2026-04-20T23:03:09.379Z","repository":{"id":37617296,"uuid":"389446417","full_name":"TheCacophonyProject/cacophony-web","owner":"TheCacophonyProject","description":"API server where Cacophony Project recordings are stored \u0026 managed + the web interface where recordings can be viewed, tagged, and analysed.","archived":false,"fork":false,"pushed_at":"2026-03-31T02:05:21.000Z","size":87845,"stargazers_count":1,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-04-02T09:35:07.387Z","etag":null,"topics":["server","website"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/TheCacophonyProject.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-07-25T21:45:37.000Z","updated_at":"2025-10-13T02:43:11.000Z","dependencies_parsed_at":"2026-03-11T05:01:38.649Z","dependency_job_id":null,"html_url":"https://github.com/TheCacophonyProject/cacophony-web","commit_stats":null,"previous_names":[],"tags_count":619,"template":false,"template_full_name":null,"purl":"pkg:github/TheCacophonyProject/cacophony-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCacophonyProject%2Fcacophony-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCacophonyProject%2Fcacophony-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCacophonyProject%2Fcacophony-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCacophonyProject%2Fcacophony-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheCacophonyProject","download_url":"https://codeload.github.com/TheCacophonyProject/cacophony-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCacophonyProject%2Fcacophony-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31540826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"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":["server","website"],"created_at":"2025-12-15T19:08:34.325Z","updated_at":"2026-04-08T05:01:26.320Z","avatar_url":"https://github.com/TheCacophonyProject.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cacophony-web\nThis is a mono-repo pulling together three older repositories: cacophony-api, cacophony-browse, and integration-tests\n\n# cacophony-api\n\n`cacophony-api` is a node server that is accessed through a RESTful API.  This allows uploading, processing and retrieving media collected for The Cacophony\nProject.\n\nProject | cacophony-web [![Status](https://api.travis-ci.org/TheCacophonyProject/cacophony-web.svg)](https://travis-ci.org/TheCacophonyProject/cacophony-web)\n---|---\nPlatform | Linux\nRequires | \u003cnone\u003e\nPrevious names | Full Noise\nLicence | [Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html)\n\n## Instructions\n\nDownload and install the latest release from [Github](https://github.com/TheCacophonyProject/cacophony-web/releases).\n\n\n## Development instructions\n\nFor development and testing purposes it is easiest to run\ncacophony-api using Docker. To do this:\n\n* Ensure your user account is set up to run commands as root using `sudo`.\n* Ensure the Docker is installed (`sudo apt install docker.io` and docker-compose (https://docs.docker.com/compose/install/) on\n  Ubuntu)\n* Run either `npm run dev` (if npm is installed) or `docker-compose build \u0026\u0026 docker-compose up --force-recreate`.\n\nThis will build and then run a Docker container which includes all the services needed to run the server.\n\nOnce the container is running, you can start a bash session inside\nthe container with `npm run dev:bash` or `docker-compose exec server bash`.\n\nTo start psql to query the database in base use the alias `psqltest`\n\n#### Running the cypress tests\n\nSee [Cypress Tests](integration-tests/README.md) for details on running the cypress tests.\n\n### API Documentation\n\nAPI documentation can be generated by running `npm run apidoc`. The\nresulting documentation ends up in the `apidoc` directory.\n\nThe API server also serves up the generated API documentation at it's\nroot URL.\n\n### Database Migrations\n\nThese are run automatically when you start the server.\n\nTo create a new database migration file: `npm run new-migration \u003cname\u003e`\n\n### Docker base image\nTo make the project build fast on our build servers (and your computer) we use a base docker image that contains nodejs, postgis, minio and most of our js dependencies.   The code for building this server is in the folder `docker-base`\n\n### Releases\nReleases are created using travis and git and saved [on Github](https://github.com/TheCacophonyProject/cacophony-web/releases).   Follow our [release instructions](https://docs.cacophony.org.nz/home/creating-releases) to create a new release.\n\n\n# cacophony-browse\n\nThis is a web interface for querying with and interacting with Cacophony Project recordings using the project's API. It is based on the [Vue](https://vuejs.org) framework and uses [Vuex](https://vuex.vuejs.org) for state management.\n\n\n## Build Setup\n\n``` bash\n# enter browse package\ncd browse\n\n# install dependencies\nnpm install\n\n# create config file\ncp dev-config.js.TEMPLATE dev-config.js\n# now edit the config file to point to correct API server\n\n# serve with hot reload at localhost:8080\nnpm run dev\n\n# build for staging \u0026 production with minification\nnpm run release\n```\n\nFor detailed explanation on how things work, consult the [docs for\nvue-loader](http://vuejs.github.io/vue-loader).\n\n# Development\n\nPlease follow the Vue style guide for all development:\nhttps://vuejs.org/v2/style-guide/#ad\n\nThe project is configured to use eslint and prettier. Please ensure\nyour development setup included a recent version of prettier. Pull\nrequests will be checked to ensure there are no code formatting or\neslint issues.\n\nTo run eslint:\n```\nnpm run lint\n```\n\nTo run eslint and automatically fix issues:\n```\nnpm run lint:fix\n```\n\n# Releases\n\n* Ensure all changes have been merged and are pulled into the local copy.\n* Tag the release (starting with a \"v\"), e.g.: `git tag -a v1.2.3 -m \"1.2.3 release\"`\n* Push the tag to Github, e.g.: `git push origin v1.2.3`\n* TravisCI will run the tests, create a release package and create a\n  [Github Release](https://github.com/TheCacophonyProject/cacophony-web/releases)\n\n## Web Server Configuration\n\nThe /srv/cacophony/cacophony-browse directory in the release package\nshould be served by a web server.\n\nSample configuration for the [Caddy](https://caddyserver.com/) web server:\n\n```\n# Update the host and port to match desired\nhttp://localhost:9000 {\n    gzip\n    root  /srv/cacophony/cacophony-browse\n\n    rewrite {\n        ext !.jpg !.png !.svg !.js\n        to /index-prod.html  # or index-staging.html\n    }\n}\n```\nSample config for Nginx:\n```\nserver {\n    root /srv/cacophony/cacophony-browse;\n    index index-prod.html;\n\n\n    server_name browse.cacophony.org.nz;\n\n    location / {\n            try_files $uri $uri/ /index-prod.html;\n    }\n}\n```\nNote: you may also need to add a correct mime-type for WebAssembly (*.wasm)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecacophonyproject%2Fcacophony-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecacophonyproject%2Fcacophony-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecacophonyproject%2Fcacophony-web/lists"}