{"id":21681375,"url":"https://github.com/g0v/onebutton","last_synced_at":"2025-04-12T06:40:33.072Z","repository":{"id":43469249,"uuid":"60940284","full_name":"g0v/OneButton","owner":"g0v","description":"OneButton is a one-click solution for ipa to finish all hackathon duties at once.","archived":false,"fork":false,"pushed_at":"2022-03-01T08:02:37.000Z","size":93,"stargazers_count":18,"open_issues_count":13,"forks_count":6,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-03-26T02:02:52.708Z","etag":null,"topics":["g0v","jothon","onebutton"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/g0v.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":"2016-06-12T03:32:02.000Z","updated_at":"2022-03-01T08:02:06.000Z","dependencies_parsed_at":"2022-09-21T01:52:19.029Z","dependency_job_id":null,"html_url":"https://github.com/g0v/OneButton","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g0v%2FOneButton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g0v%2FOneButton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g0v%2FOneButton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/g0v%2FOneButton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/g0v","download_url":"https://codeload.github.com/g0v/OneButton/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248530609,"owners_count":21119591,"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":["g0v","jothon","onebutton"],"created_at":"2024-11-25T15:27:55.993Z","updated_at":"2025-04-12T06:40:33.029Z","avatar_url":"https://github.com/g0v.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OneButton\n\nOneButton is a one-click solution for ipa to finish all hackathon duties at once. Some features are mentioned in [hackpad]( https://g0v.hackpad.com/%25E7%25AC%25AC%25E5%25A3%25B9%25E6%25AC%25A1%25E5%259F%25BA%25E7%25A4%258E%25E6%259D%25BE#-2016612).\n\n## Prerequisite\n\n* `brew install phantomjs`\n* `npm install -g casperjs`\n* `npm i`\n* create `config.js` from `config_example.js`\n  * kktix's account, password\n  * hackpad's id, secret (each hackpad subdomain has different hackpad id, secret)\n  * bit.ly's access token\n\nYour `config.js` may look like this:\n\n```\nmodule.exports = {\n  KKTIX: {\n    login: '',\n    password: '',\n    organization: '',\n    template: ''\n  },\n  HACKPAD: {\n    site: 'g0v.hackpad.tw',\n    client_id: '',\n    secret: '',\n    template: '2ucl5ftrzot'\n  },\n  GAPI: {\n    \"secret_path\": \"./client_secret.json\",\n    \"token_path\": \"./.gapi-token.json\"\n  },\n  BITLY:{\n    \"access_token\": \"\"\n  },\n  TYPEFORM:{\n    \"api_key\": \"825108dfb1a50204cef6ffffad8affff\",\n    \"webhook_submit_url\": \"http://exampel.com/api/typeform\"\n  }\n};\n```\n\n### Google OAuth\n\nIn order to use google drive api, please follow the guide from\n[Google Drive APIs](https://developers.google.com/drive/v3/web/quickstart/nodejs#step_1_turn_on_the_api_name) to turn on google drive api (OAuth 2.0 client ID, application type: other) and generate a client secret. Once a secret is downloaded, you need to update the path of your GAPI secret and where a token is to stored in config.js. After that, you have generate a token using:\n\n```\n$ node js/gapi-gen-token.js\n```\n\n### Templates\n\n#### Hackpad\n\n* template: https://g0v.hackpad.tw/2ucl5ftrzot\n\nYou can find yours in the `config.js` by combining the site field and the default field in the HACKPAD section.\n\n#### Google Spreadsheets\n\n* the spreadsheet template: https://docs.google.com/spreadsheets/d/12P8HzwMW41wXTFApmjeqw5SUg_smjJrzfi3JWQQk6Cc\n* generated spreadsheets: https://drive.google.com/drive/folders/0B00j8_vTJFGUdmJKT0NsS2lHbHc\n\nThey are hard-coded in `/js/spreadsheet.js`. Someone should move the file id and the parent id to `config.js`.\n\n#### Ethercalc\n\nThe Ethercalc template is located in `/tmpl/ethercalc.sc`. It's in \"SocialCalc sheet save\" format.\n\n#### Typeform\n\nThe Typeform template is located in `/tmpl/typeform.js`.\n\n## Run\n\n#### See the GUI in development\n\nRun `npm start` and visit `http://localhost:3000/`.\n\n#### Run whole function\n\nRun `node js/input.js` to create event in CUI.\n\n#### Run part of function\n\nYou can fork and create event manually now:\n*  `casperjs --ignore-ssl-errors=yes --ssl-protocol=tlsv1 --slug=\"EVENT_SLUG\" --name=\"EVENT_NAME\" --start_at=\"2016/06/24 09:00\" --end_at=\"2016/06/24 18:00\" --signup_at=\"06/10\" js/kktix.js`\n\nTo create an event spreadsheet manually:\n* `node js/spreadsheet.js EVENT_NUMBER EVENT_NAME`\n\nTo create an event hackpad manually:\n* `node js/hackpad.js EVENT_NUMBER EVENT_NAME EVENT_START_TIME EVENT_END_TIME`\n\nTo create an event hackfoldr manually:\n* `node js/hackfoldr.js EVENT_NUMBER EVENT_NAME EVENT_START_TIME EVENT_SIGNUP_TIME [SPREADSHEET_LINK]`\n\nTo create an event typeform manually:\n* `node js/typeform.js EVENT_NAME`\n\nYou can customize `tmpl/typeform.js` to add more professions and achievements.\n\n## Contributors\n\n* ipa (https://github.com/ipaaa) \u0026 ttcat (https://github.com/ttcat) for feature planning.\n* hlb (https://github.com/hlb) for project structure.\n* Lee (https://github.com/jessy1092) for hackpad integration.\n* caasi (https://github.com/caasi) for hackfolder and typeform integrations.\n* Jim (https://github.com/lemonlatte) for google spreadsheet creation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg0v%2Fonebutton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fg0v%2Fonebutton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fg0v%2Fonebutton/lists"}