{"id":13496240,"url":"https://github.com/luarocks/luarocks-site","last_synced_at":"2026-01-26T12:36:06.276Z","repository":{"id":5724608,"uuid":"6936195","full_name":"luarocks/luarocks-site","owner":"luarocks","description":"LuaRocks website and module host","archived":false,"fork":false,"pushed_at":"2025-02-22T00:55:44.000Z","size":1361,"stargazers_count":181,"open_issues_count":64,"forks_count":36,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-02-22T01:28:48.697Z","etag":null,"topics":["lapis","luarocks","moonscript","website"],"latest_commit_sha":null,"homepage":"http://luarocks.org","language":"MoonScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luarocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"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":"2012-11-30T09:04:19.000Z","updated_at":"2025-02-22T00:55:48.000Z","dependencies_parsed_at":"2024-01-16T09:53:58.831Z","dependency_job_id":"53fd94c8-3656-40f0-bfa6-7c90722cff87","html_url":"https://github.com/luarocks/luarocks-site","commit_stats":{"total_commits":968,"total_committers":18,"mean_commits":53.77777777777778,"dds":0.125,"last_synced_commit":"76a5dcfd20105497e9ab3ced7d21fc9c8a277abe"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luarocks%2Fluarocks-site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luarocks%2Fluarocks-site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luarocks%2Fluarocks-site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luarocks%2Fluarocks-site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luarocks","download_url":"https://codeload.github.com/luarocks/luarocks-site/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241564696,"owners_count":19982994,"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":["lapis","luarocks","moonscript","website"],"created_at":"2024-07-31T19:01:44.419Z","updated_at":"2026-01-26T12:36:06.256Z","avatar_url":"https://github.com/luarocks.png","language":"MoonScript","funding_links":[],"categories":["MoonScript"],"sub_categories":[],"readme":"# LuaRocks.org\n\n\u003chttps://luarocks.org\u003e\n\n![spec](https://github.com/luarocks/luarocks-site/workflows/spec/badge.svg)\n\nThis is the web app that serves the default package manifest for the [LuaRocks package manager](https://github.com/luarocks/luarocks) for Lua.\n\nThe entire site runs on [OpenResty][1], an Nginx based platform with Lua\nsupport. The site itself is coded in [MoonScript][2] and uses [Lapis][3] as a\nweb framework.\n\nFiles are stored on Google Cloud Storage. PostgreSQL is used as a database.\n\n[Tup][4] is the build system.\n\n## Production Architecture\n\n```mermaid\nflowchart LR\n    subgraph public[\"Public (Port 80)\"]\n        nginx[nginx]\n    end\n\n    subgraph private[\"Private\"]\n        openresty[OpenResty/Lapis]\n        postgres[(PostgreSQL)]\n        redis[(Redis)]\n        accesslog[/Access Log/]\n        mtail[mtail]\n        victoria[(Victoria Metrics)]\n    end\n\n    HTTP[\"HTTP Requests\"] --\u003e nginx\n    nginx --\u003e openresty\n    openresty --\u003e postgres\n    openresty --\u003e redis\n    openresty --\u003e accesslog\n    accesslog --\u003e mtail\n    mtail --\u003e victoria\n```\n\n## How To Run Locally\n\nInstall the following dependencies:\n\n* [Tup][4]\n* [sassc](https://github.com/sass/sassc)\n* [Discount](https://www.pell.portland.or.us/~orc/Code/discount/) (or something that provides `markdown` executable)\n* PostgreSQL\n* [OpenResty][1]\n* Redis\n\nCheck out this repository.\n\nInstall dependencies:\n\n```bash\nluarocks build --only-deps --lua-version=5.1 --local\n```\n\nRun these commands to build:\n\n```bash\ntup init\ntup\n```\n\nCreate the schema:\n\n```bash\nmake init_schema\n```\n\nStart the server:\n\n```bash\nlapis server\n```\n\nNow `http://localhost:8080` should load.\n\nIf you edit any MoonScript or SCSS files you should call `tup` to rebuild\nthe changes. You can run `tup monitor -a` to watch the filesystem to rebuild.\n\n### Running tests\n\nThis site uses [Busted](https://olivinelabs.com/busted/) for its tests:\n\n```bash\nmake test_db\nbusted\n```\n\nThe `make test_db` command will copy the schema of the `moonrocks` local\ndatabase into the test database, wiping out what whatever was there. You'll\nonly need to run this command once and the beginning any time the schema\nhas changed.\n\n### Setting up Google Cloud Storage\n\nIn production all files are stored on Google Cloud Storage. With no\nconfiguration (default), files are stored on the file system using the storage\nbucket mock provided by the `cloud_storage` rock.\n\nTo configure `cloud_storage` to talk to a live bucket make a file\n`secret/storage_bucket.moon`, it must return a bucket instance. It might look\nsomething like:\n\n\n```moonscript\n-- secret/storage_bucket.moon\nimport OAuth from require \"cloud_storage.oauth\"\nimport CloudStorage from require \"cloud_storage.google\"\n\no = OAuth \"NUMBER@developer.gserviceaccount.com\", \"PRIVATEKEY.pem\"\nCloudStorage(o, \"PROJECT_ID\")\\bucket \"BUCKET_NAME\"\n```\n\n### Setting up email\n\nIf you want to test sending emails you'll have to provide [Mailgun][5]\ncredentials. Create a file `secret/email.moon` and make it look something like\nthis: (it must return a table of options)\n\n```moonscript\n{ -- secret/email.moon\n  key: \"api:key-MY_KEY\"\n  domain: \"mydomain.mailgun.org\"\n  sender: \"MoonRocks \u003cpostmaster@mydomain.mailgun.org\u003e\"\n}\n```\n\n  [1]: https://openresty.org/\n  [2]: https://moonscript.org/\n  [3]: https://github.com/leafo/lapis\n  [4]: http://gittup.org/tup/\n  [5]: https://www.mailgun.com/\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluarocks%2Fluarocks-site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluarocks%2Fluarocks-site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluarocks%2Fluarocks-site/lists"}