{"id":23651597,"url":"https://github.com/athanclark/happ-store","last_synced_at":"2026-01-24T09:01:45.570Z","repository":{"id":34287289,"uuid":"38176307","full_name":"athanclark/happ-store","owner":"athanclark","description":"An app store for Hackage","archived":false,"fork":false,"pushed_at":"2016-06-29T04:19:52.000Z","size":35613,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-20T01:14:13.117Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/athanclark.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}},"created_at":"2015-06-27T21:40:20.000Z","updated_at":"2016-06-12T03:53:16.000Z","dependencies_parsed_at":"2022-09-03T01:06:01.164Z","dependency_job_id":null,"html_url":"https://github.com/athanclark/happ-store","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/athanclark/happ-store","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athanclark%2Fhapp-store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athanclark%2Fhapp-store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athanclark%2Fhapp-store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athanclark%2Fhapp-store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/athanclark","download_url":"https://codeload.github.com/athanclark/happ-store/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athanclark%2Fhapp-store/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28721975,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-12-28T16:38:47.226Z","updated_at":"2026-01-24T09:01:45.544Z","avatar_url":"https://github.com/athanclark.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"hApp-Store\n==========\n\n\u003e A swanky little app store...age system for Hackage packages :D\n\u003e\n\u003e ...yeah...\n\nUse this website to rate and give reviews on [Hackage](https://hackage.haskell.org)\npackages, while also helping categorize them for great success! Very nice!\n\n\u003e **WARNING**: This friggin thing is in liek, toooootally pre-alpha right now,\n\u003e so if you have complaints, please take them and stick them right there up in\n\u003e your bum, okay? Unless it's an actual bug, I mean. Yeah sorry :\\\n\n## Building\n\nThe app has two components, the client and the server. There are also some dependencies,\nbut it's pretty easy getting it bootstrapped. First though, you'll need to clone the\ncode and jump into the directory to get yer bearings:\n\n```bash\ngit clone https://github.com/athanclark/happ-store.git\ncd happ-store\n```\n\n### Server\n\nFirst and foremost, you will need the [libsodium](https://download.libsodium.org/doc/)\nlibrary; it's used for session authenticity, and the server won't build without it.\nIn Ubuntu, it's something like `apt-get install libsodium-dev` (not even sure if\nyou need development files), but generally you just need the library available.\n\nUse [stack](http://docs.haskellstack.org/en/stable/README/) and the `stack.yaml`\nincluded in the source code distribution:\n\n```bash\nstack build\n```\n\nThis command should fetch all your dependencies and build an executable somewhere under\n`./.stack-work/`. It's easiest to let `stack` find the executable for you, though.\nIf you're too lazy to build the project, but still want to check it out (and also\nhappen to be using linux on an x86_64 machine), just run the binary under\n`./bin/happ-store`; it should \"just work\". It comes with a suite of options too -\njust type `./bin/happ-store --help` to check them out.\n\n\u003e If you're building this on Windows and it didn't comple, please file an issue,\n\u003e I will repay you with many a kudo :D\n\n### Client\n\nBefore you build the client, you should fetch any javascript dependencies so you can\nrun the server in \"development mode\" / locally, fetched through [bower](http://bower.io):\n\n```bash\nbower install\n```\n\nThis should get all the javascripts and cascading stylesheets necessarry to make the\nfront-end work, and install them under `./static/vendor/`.\n\nNext, jump into the `./frontend/` folder and build the client! The frontend code\nis built entirely with [Elm](http://elm-lang.org), so make sure you have version\n`0.17` installed! Then it's just a couple more commands to build the javascript app:\n\n```bash\nelm package install\nelm make src/Main.elm --output dist/Main.js\n```\n\n## Linking Client to Server\n\nRight now, I'm hardcoding the server to expect the frontend code to actually live in\n`./frontend/dist/Main.min.js`. You can just copy-paste it in there if you don't want\nto minify, but if you _do_, check out [Google Closure Compiler](https://developers.google.com/closure/compiler/):\n\n```bash\njava -jar ${HOME}/Downloads/compiler.jar dist/Main.js --js_output_file=dist/Main.min.js\n```\n\n\u003e assuming GoogleCC lives in `~/Downloads`\n\n## Client Demo File (optional)\n\nIf you look closely in `./frontend`, you'll see a `index-param.html` file that\nhas a funny syntax. This is a _parametric text file_, and can be used to build a\ndemo of the frontend without the need to build the server, using [ltext](http://ltext.github.io/). To plug the files in, run this command:\n\n```bash\nltext \"index-param.html dist/Main.js init.js style.css\" \u003e index.html\n```\n\n\u003e **Note**: ltext expects each input to `index-param.html` to have a _blank line_\n\u003e as the first line of the text file. Strange, I know, but it's important.\n\u003e `init.js` and `style.css` both should be fine, and the default output of\n\u003e `elm make` should also have a blank first line, so you should be good there, but\n\u003e GoogleCC would remove that line, so be wary if you get a strange error from\n\u003e this command: you might need to break out your text editor and press enter a\n\u003e couple times in the correct order :x\n\n\n## Running\n\nNow that you have your server built and the frontend ready, you can invoke the\nserver in development mode with the following command:\n\n```bash\nstack exec happ-store\n```\n\nThis will start the server in development mode, and will give some info to\nthe currently running environment. You should be able to view `localhost:3000`\nto see the page. You can add additional options by plumbing them through\n`stack` - note the first `--`:\n\n```bash\nstack exec happ-store -- --port=3005 --production\n```\n\nfor instance.\n\n\u003e hApp-Store is also running an [ekg](http://hackage.haskell.org/package/ekg)\n\u003e server too, which is cool, and you can view it under `localhost:3001`\n\u003e by default.\n\n\n## Contributing\n\nIf you have ideas or feature requests, please ping me on\n[twitter](https://twitter.com/athan__) (warning, I'm kinda crazy),\nor something along those lines. I am open to ideas, and because I made this I'm\nlikely going to be the one implementing the ideas, so it would be good to speak\n1-on-1 to at least give insight to what is feasible. If however you would like the\ndiscussion to be public and peer accessible, you can also file an issue. I\nhaven't gotten around to making a decent categorization of issues vs. feature requests\nyet in GitHub's issue tracker, but one will be coming after it's up and running.\n\nIf you do find a bug, please report it in the GitHub issue tracker. I'll do my best\nto solve them, however if I can't reproduce the issue or if the issue is moderately bogus,\nI'll likely just kinda... delete it and uh... yeah. What mess?\n\nIf you would like to contribute code, that's friggin dope! Please do! Just follow the\ntraditional GitHub pull-request method for distributed collaboration so I can sync\ninto your changes. I'll try to maintain dutiful git tagging so stability can be referenced\neasily, but I'm not a git wizard (gizzard?), and it's not like I squash or rebase or\nwhatever, so feel free to do what you want. Unless it's like a massive commit without\nany comments or something, then I'll probably reject it and do the worm or something.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathanclark%2Fhapp-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fathanclark%2Fhapp-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathanclark%2Fhapp-store/lists"}