{"id":15969774,"url":"https://github.com/waldyrious/abyss","last_synced_at":"2025-02-22T22:14:45.418Z","repository":{"id":138965375,"uuid":"62661829","full_name":"waldyrious/abyss","owner":"waldyrious","description":"node.js ephemeral messaging and file sharing platform built on Mithril and RethinkDB","archived":false,"fork":false,"pushed_at":"2016-07-05T18:59:32.000Z","size":2280,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-03T20:26:18.240Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"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/waldyrious.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"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},"funding":{"github":"waldyrious","liberapay":"waldyrious","custom":["https://flattr.com/@waldyrious","https://paypal.me/waldyrious"]}},"created_at":"2016-07-05T18:58:16.000Z","updated_at":"2021-01-14T19:17:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"47078dba-4ce7-4d02-8a81-2af9e1fc9b3d","html_url":"https://github.com/waldyrious/abyss","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldyrious%2Fabyss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldyrious%2Fabyss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldyrious%2Fabyss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waldyrious%2Fabyss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waldyrious","download_url":"https://codeload.github.com/waldyrious/abyss/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240241820,"owners_count":19770466,"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":[],"created_at":"2024-10-07T19:41:38.275Z","updated_at":"2025-02-22T22:14:45.389Z","avatar_url":"https://github.com/waldyrious.png","language":"JavaScript","funding_links":["https://github.com/sponsors/waldyrious","https://liberapay.com/waldyrious","https://flattr.com/@waldyrious","https://paypal.me/waldyrious"],"categories":[],"sub_categories":[],"readme":"# Features\n\n1. Ephemeral group and individual messaging--message ownership is shared among all message recipients\n2. Push notifications\n2. Login with just your phone number (confirmed with a text code)\n3. No usernames, all identities via phone numbers\n4. Choose and change your own nickname at any time\n5. Real-time updates via socket.io and RethinkDB changefeed\n6. Drag-and-drop file uploads with automatic image rotation fix\n7. Inline display of pictures, sounds and videos. Other files are downloadable.\n8. Built-in internet radio player (needs working stations)\n\n# Installing\n\nFirst install:\n\n1. [RethinkDB](http://rethinkdb.com/)\n2. Node.js 4.0 or later\n\n# Running locally\n\n1. git clone the repo and cd into the project\n1. Start an instance of Rethinkdb:  `rethinkdb` This will start an instance of RethinkDB with datafiles in the working directory. Once running, go to [http://localhost:8080](http://localhost:8080)\n to access the RethinkDB admin tool. Leave Rethinkdb running in a terminal tab.\n1. Install node modules: `npm i`  This installs the node_modules for the project.\n1. Build front end: `npm run watch` This continually builds the front end upon file change. Leave it running in a terminal tab too.\n`npm run build` does a single build. These are defined in package.json.\n1. Start the server. `node runner.js` This restarts the server each time you change a file. If you need to debug, `node-debug server.js` or `node server.js` will run without restarting the server on file change.\n\n## Create file secret/secret.json\n\nThis is the configuration file.\n\n```\n{\n    \"blobs\": \"/opt/abyss/blobs\",\n    \"cluster\": false,\n    \"spdy\": true,\n    \"http2\": false,\n    \"https\": true,\n    \"httpredirect\": false,\n    \"wwwredirect\": false,\n    \"gcmapikey\": \"insertkeyhere\",\n    \"sendverificationcodes\": false,\n    \"rethinkdboptions\": {\n        \"servers\": [\n            { \"host\": \"localhost\", \"port\": 28015 }\n        ],\n        \"db\": \"test\",\n        \"discovery\": true\n    },\n    \"cookieKeys\": [\n        \"random stuff\",\n        \"more random stuff\"\n    ],\n    \"jwtSecret\": \"another random string\",\n    \"slowstreams\": false,\n    \"verificationfrom\": \"info@example.com\"\n}\n```\n\n## Setup DB Schema\n\nRun schema.js. It's safe to re-run this as it won't drop anything.\n\n## Running the server:\n\n1. From the command line, `node server.js` to run.\n1. Run `node debug server.js` to debug.\n1. Run `node-debug -p 8081 server.js` to use a web based debugger. First you'll need to have run `npm i -g node-inspector` to have 'node-debug' available.\n\n# Library API reference\n\n[Node.js Cheat Sheet](https://gist.github.com/LeCoupa/985b82968d8285987dc3)\n\n[Mozilla MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript) The JavaScript reference.\n\n[NodeJS API](https://nodejs.org/api) NodeJS APIs.\n\n[Bluebird](https://github.com/petkaantonov/bluebird/blob/master/API.md) Promise API. Most Node modules use callback-based APIs for performance.\nBluebird lets you easily convert them to Promise based APIs, which are much easier to use, and have better error handling and stacktraces, though they incur a small perf hit.\n\n[Lodash API](https://lodash.com/docs) Utility belt library. Useful for working with arrays and objects.\n\n[Koa](http://koajs.com/) minimalist web application framework\n\n[Mithril](https://lhorie.github.io/mithril) minimalist MVC frontend framework\n\n[JavaScript Design Patterns](http://addyosmani.com/resources/essentialjsdesignpatterns/book/)\n\n[MomentJS](http://momentjs.com/) Date and time handling library\n\n[Tape](https://github.com/substack/tape) Tape: minimalist, TAP producing test library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaldyrious%2Fabyss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaldyrious%2Fabyss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaldyrious%2Fabyss/lists"}