{"id":14989447,"url":"https://github.com/vpdb/server","last_synced_at":"2026-03-15T05:03:07.163Z","repository":{"id":15166672,"uuid":"17894393","full_name":"vpdb/server","owner":"vpdb","description":"The VPDB RESTful API.","archived":false,"fork":false,"pushed_at":"2025-02-15T06:33:00.000Z","size":203390,"stargazers_count":13,"open_issues_count":156,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-15T07:29:57.631Z","etag":null,"topics":["koajs","mongodb","nodejs","pinball","redis","restful-api","typescript"],"latest_commit_sha":null,"homepage":"https://api.vpdb.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpdb.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":"2014-03-19T06:26:33.000Z","updated_at":"2023-09-25T07:01:48.000Z","dependencies_parsed_at":"2024-02-02T07:28:43.051Z","dependency_job_id":"7f77330c-be2a-474b-91a9-4db5f9f117fc","html_url":"https://github.com/vpdb/server","commit_stats":{"total_commits":3353,"total_committers":5,"mean_commits":670.6,"dds":"0.41783477482851183","last_synced_commit":"c790f6ff0f6572edc6ccfcb1cf8f853db2829c80"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpdb%2Fserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpdb","download_url":"https://codeload.github.com/vpdb/server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239854649,"owners_count":19708131,"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","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":["koajs","mongodb","nodejs","pinball","redis","restful-api","typescript"],"created_at":"2024-09-24T14:18:23.220Z","updated_at":"2025-12-17T10:30:31.946Z","avatar_url":"https://github.com/vpdb.png","language":"TypeScript","readme":"\u003cimg src=\"https://raw.githubusercontent.com/vpdb/server/master/assets/vpdb-logo-text.svg?sanitize=true\" alt=\"VPDB\" width=\"250\"\u003e\r\n\r\n*A database for Virtual Pinball tables.*\r\n\r\n[![Build Status][travis-image]][travis-url]\r\n[![Test Coverage][coveralls-image]][coveralls-url]\r\n[![Dependencies][dependencies-image]][dependencies-url]\r\n\r\n## What is it?\r\n\r\nVPDB is an open platform where people can share their digital recreations of virtual pinball tables and everything else \r\naround virtual pinball. This is the server side of the platform, a.k.a the API. If you're looking for the web application,\r\nit's [here](https://github.com/vpdb/website). \r\n\r\n## Stack\r\n\r\nVPDB runs on a [Node.js](http://nodejs.org/) stack written in [TypeScript](https://www.typescriptlang.org/). The web \r\nframework is [koa](https://koajs.com/). Data comes from [MongoDB](https://www.mongodb.org/) and queues and caches are \r\nhandled by [Redis](http://redis.io/).\r\n\r\n## \"Quick\" Install\r\n\r\n* Download and install [GraphicsMagick](http://www.graphicsmagick.org/), [pngquant](http://pngquant.org/),\r\n  [OptiPNG](http://optipng.sourceforge.net/), [FFmpeg](https://www.ffmpeg.org/) and [Unrar](http://rarsoft.com/) and \r\n  make sure that the binaries are in your `PATH`.\r\n* Install [MongoDB](http://www.mongodb.org/downloads) and [Redis](http://redis.io/). *Windows*: Get binary \r\n  [here](https://github.com/MicrosoftArchive/redis/releases), extract it to somewhere, open an admin shell and \r\n  run `redis-server --service-install redis.windows.conf --loglevel verbose --maxheap 500m` for a local dev setup.\r\n\r\nInstall Node.js 8+ and Git, then open a command line and type:\r\n\r\n\tgit clone https://github.com/vpdb/server.git vpdb-server\r\n\tcd vpdb-server\r\n\tnpm install\r\n\tnpm run serve:dev\r\n\r\nThat's it, the API should now be available. Retrieve current version:\r\n\r\n\tcurl http://localhost:3000/api/v1\r\n\r\nFor more detailed instructions, check out the [Installation Guide](INSTALL.md).\r\n\r\n## Cool Stuff\r\n\r\n- [Processors](https://github.com/vpdb/server/tree/master/src/app/files/processor)\r\n- [Realtime](https://github.com/vpdb/server/tree/master/src/app/clients)\r\n- [Caching](https://github.com/vpdb/server/blob/master/src/app/common/api.cache.ts#L35)\r\n- [3D Export](https://github.com/vpdb/server/blob/master/src/app/vpinball)\r\n- Data Structure\r\n- Table Blocks\r\n\r\n### Tests\r\n\r\nThere are 1200+ automated integration tests. It's best to use two terminals to run them:\r\n\r\n- `npm run test:serve` - Runs the server in test mode\r\n- `npm run test:run` - Runs the tests\r\n\r\nFor more info, see [tests](TESTS.md).\r\n\r\n### Code Quality\r\n\r\nWhen running the server in development or test mode, the code is linted using [JSHint](http://www.jshint.com/about/). If\r\nthe code doesn't pass, tests fail. You can run the linting manually with the `lint` task.\r\n\r\nThere's also continuous integration running on two services:\r\n\r\n|           | Status                                                   |\r\n|-----------|----------------------------------------------------------|\r\n| Travis CI | [![Build Status Travis CI][travis-image]][travis-url]    |\r\n| Codeship  | [![Build Status Codeship][codeship-image]][codeship-url] |\r\n\r\nAfter every test run, code coverage stats are sent to [Coveralls.io](https://coveralls.io/r/vpdb/backend).\r\n\r\nCode is also run through Code Climate, with the following result: [![Code Climate][codeclimate-image]][codeclimate-url]\r\n\r\n## Credits\r\n\r\n* To Mukuste. He gave the community such a nice momentum and I thought I could add a little bit to it.\r\n* To Tom for his support of this project.\r\n\r\n\u003ca title=\"IntelliJ IDEA\" href=\"https://www.jetbrains.com/idea/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/vpdb/server/master/assets/intellij-logo-text.svg?sanitize=true\" alt=\"IntelliJ IDEA\" width=\"250\"\u003e\u003c/a\u003e\r\n\r\nThanks also to JetBrains for their awesome IDE and support of the Open Source Community!\r\n\r\n\u003ca title=\"Realtime application protection\" href=\"https://www.sqreen.io/?utm_source=badge\"\u003e\u003cimg width=\"150\" src=\"https://s3-eu-west-1.amazonaws.com/sqreen-assets/badges/20171107/sqreen-light-badge.svg\" alt=\"Sqreen | Runtime Application Protection\" /\u003e\u003c/a\u003e\r\n\r\nFinally, big shouts to Sqreen for their excellent security services protecting our host at vpdb.io!\r\n\r\n\r\n## License\r\n\r\nGPLv2, see [LICENSE](LICENSE).\r\n\r\n[travis-image]: https://img.shields.io/travis/vpdb/server.svg?style=flat-square\r\n[travis-url]: https://travis-ci.org/vpdb/server\r\n[coveralls-image]: https://img.shields.io/coveralls/vpdb/backend.svg?style=flat-square\r\n[coveralls-url]: https://coveralls.io/r/vpdb/backend?branch=master\r\n[dependencies-image]: https://david-dm.org/vpdb/server.svg?style=flat-square\r\n[dependencies-url]: https://david-dm.org/vpdb/server\r\n[codeship-image]: http://img.shields.io/codeship/46408820-1c40-0134-d638-1a1dadf4f728.svg?style=flat-square\r\n[codeship-url]: https://www.codeship.io/projects/159851\r\n[codeclimate-image]: http://img.shields.io/codeclimate/github/vpdb/backend.svg?style=flat-square\r\n[codeclimate-url]: https://codeclimate.com/github/vpdb/backend","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpdb%2Fserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpdb%2Fserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpdb%2Fserver/lists"}