├── .gitkeep ├── cowork-panel ├── src │ ├── components │ │ ├── PageLayout.vue │ │ ├── Page404.vue │ │ ├── ContactPage.vue │ │ ├── ImageFrame.vue │ │ ├── SupportUs.vue │ │ ├── InstagramFeed.vue │ │ ├── D14.vue │ │ ├── GiveUsReviewAfterVisit.vue │ │ ├── EmailVerify.vue │ │ ├── RunningCosts.vue │ │ ├── Venue.vue │ │ ├── ProgressbarLogoRefresh.vue │ │ ├── CallForTheSponsors.vue │ │ ├── GiveUsReviewBooking.vue │ │ ├── CallForHost.vue │ │ ├── AppBody.vue │ │ ├── MeetingRoom.vue │ │ ├── Login.vue │ │ ├── Offer.vue │ │ ├── Credit.vue │ │ ├── FixDesk.vue │ │ ├── Photos.vue │ │ ├── Sponsors.vue │ │ ├── SpaceForRent.vue │ │ ├── PbFinancialReport.vue │ │ ├── AppFooter.vue │ │ └── AppHeader.vue │ ├── main.js │ ├── App.vue │ └── router │ │ └── index.js ├── root │ └── _redirects ├── dist │ ├── b9eju2jjjn7npt64jfvs5x185f4kwy.html │ └── ebrjaiqzrdi36blkeq7sxm6g5yutjz.html ├── config │ ├── prod.env.js │ ├── dev.env.js │ └── index.js ├── netlify.toml ├── static │ ├── img │ │ ├── wide.jpg │ │ ├── tribune.jpg │ │ ├── IMG_1012.jpg │ │ ├── IMG_1023.jpg │ │ ├── IMG_1939.jpg │ │ ├── IMG_1951.jpg │ │ ├── IMG_1957.jpg │ │ ├── d14 │ │ │ ├── d14_a.png │ │ │ ├── d14_b.png │ │ │ ├── d14_c.png │ │ │ └── d14_d.png │ │ ├── meeting_room.jpg │ │ ├── P60112-180207.jpg │ │ ├── P60409-111441.jpg │ │ ├── P61125-162025.jpg │ │ ├── P70325-113946.jpg │ │ ├── P70325-182149.jpg │ │ ├── P70617-213350.jpg │ │ ├── P71108-200741.jpg │ │ ├── P71108-222854.jpg │ │ ├── icons │ │ │ ├── favicon.ico │ │ │ ├── apple-touch-icon.png │ │ │ ├── mstile-150x150.png │ │ │ ├── firefox-general-16-16.png │ │ │ ├── firefox-general-32-32.png │ │ │ ├── ios-appicon-152-152.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon-60x60.png │ │ │ ├── apple-touch-icon-76x76.png │ │ │ ├── firefox-general-256-256.png │ │ │ ├── apple-touch-icon-120x120.png │ │ │ ├── apple-touch-icon-152x152.png │ │ │ ├── apple-touch-icon-180x180.png │ │ │ ├── android-launchericon-144-144.png │ │ │ ├── android-launchericon-192-192.png │ │ │ ├── android-launchericon-512-512.png │ │ │ ├── progressbar_hexagon_holo_transparent_152.png │ │ │ ├── progressbar_hexagon_holo_transparent_210.png │ │ │ └── progressbar_hexagon_holo_transparent_original.png │ │ ├── IMG_20190118_234746.jpg │ │ ├── IMG_20190125_005932.jpg │ │ ├── FB_IMG_1510777652113.jpg │ │ ├── IMG_20180403_185405_1.jpg │ │ ├── IMG_20180404_125147_1.jpg │ │ ├── PANO_20171111_100131.jpg │ │ ├── PANO_20171128_193449.jpg │ │ ├── PANO_20171205_194535.jpg │ │ ├── PANO_20171205_200226.jpg │ │ ├── PANO_20180324_103055.jpg │ │ ├── meetingroom │ │ │ ├── IMG_0963.jpg │ │ │ ├── IMG_0966.jpg │ │ │ ├── IMG_0970.jpg │ │ │ ├── IMG_0984.jpg │ │ │ ├── IMG_1026.jpg │ │ │ ├── waomeeting-01-4.jpg │ │ │ ├── waomeeting-01.jpg │ │ │ ├── waomeeting-03.jpg │ │ │ └── waomeeting-05.jpg │ │ ├── partners │ │ │ ├── cosmosnetwork.png │ │ │ ├── ethereum-logo.png │ │ │ ├── secure_scuttlebutt.png │ │ │ ├── tezos_logo_white.png │ │ │ ├── aragon_vertical@2x.webp │ │ │ ├── NEM-OFFICIAL-LOGO-white.png │ │ │ ├── 300px-Dat-data-logo-2017.svg.png │ │ │ ├── DECENT_logo_vertical_color.png │ │ │ ├── colony_logo_vertical_navy_medium.png │ │ │ ├── ipfs_2016-05-09-ipfs-3d-ice-text.png │ │ │ ├── maker.svg │ │ │ ├── loom_white.svg │ │ │ └── polkadotnetwork.svg │ │ ├── IMG_20180321_181247_HDR.jpg │ │ ├── IMG_20180324_092514_HDR.jpg │ │ ├── IMG_20180403_185456_HDR.jpg │ │ ├── progressbar-logo-refresh.svg │ │ └── SDlogo-02.svg │ ├── sketchup │ │ ├── .gitattributes │ │ ├── Dunajska_20171123-c.skp │ │ └── Dunajska_20171123-e.skp │ └── manifest.json ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── build │ ├── load-minified.js │ ├── dev-client.js │ ├── vue-loader.conf.js │ ├── service-worker-dev.js │ ├── build.js │ ├── check-versions.js │ ├── webpack.dev.conf.js │ ├── webpack.base.conf.js │ ├── utils.js │ ├── service-worker-prod.js │ ├── dev-server.js │ └── webpack.prod.conf.js ├── .babelrc ├── README.md ├── package.json └── index.html ├── stdlib-workspace ├── yangwao │ ├── progressbar-coweb │ │ ├── .gitignore │ │ ├── functions │ │ │ ├── pubConfig.js │ │ │ ├── config.js │ │ │ ├── daydetails.js │ │ │ ├── __main__.js │ │ │ ├── logmein.js │ │ │ ├── status.js │ │ │ ├── order.js │ │ │ ├── verify.js │ │ │ ├── openDoor.js │ │ │ ├── openBlackDoor.js │ │ │ ├── login.js │ │ │ ├── emailSubscribe.js │ │ │ └── orderCowork.js │ │ └── package.json │ └── opening.js ├── data.json └── pg.js ├── localdoor ├── blackdoor.js ├── gpio.js ├── package.json └── open.js ├── README.md ├── LICENSE ├── .gitignore └── CODE_OF_CONDUCT.md /.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cowork-panel/src/components/PageLayout.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cowork-panel/root/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 2 | -------------------------------------------------------------------------------- /cowork-panel/dist/b9eju2jjjn7npt64jfvs5x185f4kwy.html: -------------------------------------------------------------------------------- 1 | b9eju2jjjn7npt64jfvs5x185f4kwy -------------------------------------------------------------------------------- /cowork-panel/dist/ebrjaiqzrdi36blkeq7sxm6g5yutjz.html: -------------------------------------------------------------------------------- 1 | ebrjaiqzrdi36blkeq7sxm6g5yutjz -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | env.json 3 | -------------------------------------------------------------------------------- /cowork-panel/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /localdoor/blackdoor.js: -------------------------------------------------------------------------------- 1 | const r2 = require('r2') 2 | 3 | r2('http://door.bar/outsidedoor') 4 | -------------------------------------------------------------------------------- /cowork-panel/netlify.toml: -------------------------------------------------------------------------------- 1 | [[redirects]] 2 | from = "/*" 3 | to = "/index.html" 4 | status = 200 5 | -------------------------------------------------------------------------------- /cowork-panel/static/img/wide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/wide.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/tribune.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/tribune.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_1012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_1012.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_1023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_1023.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_1939.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_1939.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_1951.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_1951.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_1957.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_1957.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/d14/d14_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/d14/d14_a.png -------------------------------------------------------------------------------- /cowork-panel/static/img/d14/d14_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/d14/d14_b.png -------------------------------------------------------------------------------- /cowork-panel/static/img/d14/d14_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/d14/d14_c.png -------------------------------------------------------------------------------- /cowork-panel/static/img/d14/d14_d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/d14/d14_d.png -------------------------------------------------------------------------------- /cowork-panel/static/img/meeting_room.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meeting_room.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P60112-180207.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P60112-180207.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P60409-111441.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P60409-111441.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P61125-162025.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P61125-162025.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P70325-113946.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P70325-113946.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P70325-182149.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P70325-182149.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P70617-213350.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P70617-213350.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P71108-200741.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P71108-200741.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/P71108-222854.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/P71108-222854.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/favicon.ico -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20190118_234746.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20190118_234746.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20190125_005932.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20190125_005932.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/FB_IMG_1510777652113.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/FB_IMG_1510777652113.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20180403_185405_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20180403_185405_1.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20180404_125147_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20180404_125147_1.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/PANO_20171111_100131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/PANO_20171111_100131.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/PANO_20171128_193449.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/PANO_20171128_193449.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/PANO_20171205_194535.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/PANO_20171205_194535.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/PANO_20171205_200226.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/PANO_20171205_200226.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/PANO_20180324_103055.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/PANO_20180324_103055.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/apple-touch-icon.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/mstile-150x150.png -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/IMG_0963.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/IMG_0963.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/IMG_0966.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/IMG_0966.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/IMG_0970.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/IMG_0970.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/IMG_0984.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/IMG_0984.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/IMG_1026.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/IMG_1026.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/cosmosnetwork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/cosmosnetwork.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/ethereum-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/ethereum-logo.png -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20180321_181247_HDR.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20180321_181247_HDR.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20180324_092514_HDR.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20180324_092514_HDR.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/IMG_20180403_185456_HDR.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/IMG_20180403_185456_HDR.jpg -------------------------------------------------------------------------------- /cowork-panel/static/sketchup/.gitattributes: -------------------------------------------------------------------------------- 1 | Dunajska_20171123-c.skp filter=lfs diff=lfs merge=lfs -text 2 | Dunajska_20171123-e.skp filter=lfs diff=lfs merge=lfs -text 3 | -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/firefox-general-16-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/firefox-general-16-16.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/firefox-general-32-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/firefox-general-32-32.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/ios-appicon-152-152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/ios-appicon-152-152.png -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/waomeeting-01-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/waomeeting-01-4.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/waomeeting-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/waomeeting-01.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/waomeeting-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/waomeeting-03.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/meetingroom/waomeeting-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/meetingroom/waomeeting-05.jpg -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/secure_scuttlebutt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/secure_scuttlebutt.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/tezos_logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/tezos_logo_white.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/android-chrome-192x192.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/android-chrome-512x512.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/firefox-general-256-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/firefox-general-256-256.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/aragon_vertical@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/aragon_vertical@2x.webp -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/NEM-OFFICIAL-LOGO-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/NEM-OFFICIAL-LOGO-white.png -------------------------------------------------------------------------------- /cowork-panel/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/android-launchericon-144-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/android-launchericon-144-144.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/android-launchericon-192-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/android-launchericon-192-192.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/android-launchericon-512-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/android-launchericon-512-512.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/300px-Dat-data-logo-2017.svg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/300px-Dat-data-logo-2017.svg.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/DECENT_logo_vertical_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/DECENT_logo_vertical_color.png -------------------------------------------------------------------------------- /cowork-panel/static/sketchup/Dunajska_20171123-c.skp: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9dc5f9d1f57bf72509980f002d2df393e1a138355218fe4a532ea44fadfbfbae 3 | size 28514693 4 | -------------------------------------------------------------------------------- /cowork-panel/static/sketchup/Dunajska_20171123-e.skp: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5f6ce840c171408022b4bef73523bd17ebd2f962ed39ad5fb7554f8bb59134d0 3 | size 33227044 4 | -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/colony_logo_vertical_navy_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/colony_logo_vertical_navy_medium.png -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/ipfs_2016-05-09-ipfs-3d-ice-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/partners/ipfs_2016-05-09-ipfs-3d-ice-text.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/progressbar_hexagon_holo_transparent_152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/progressbar_hexagon_holo_transparent_152.png -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/progressbar_hexagon_holo_transparent_210.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/progressbar_hexagon_holo_transparent_210.png -------------------------------------------------------------------------------- /cowork-panel/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /cowork-panel/static/img/icons/progressbar_hexagon_holo_transparent_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/progressbar-coweb/develop/cowork-panel/static/img/icons/progressbar_hexagon_holo_transparent_original.png -------------------------------------------------------------------------------- /cowork-panel/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | *.suo 11 | *.ntvs* 12 | *.njsproj 13 | *.sln 14 | -------------------------------------------------------------------------------- /localdoor/gpio.js: -------------------------------------------------------------------------------- 1 | // echo 23 > /sys/class/gpio/export 2 | // echo out > /sys/class/gpio/gpio23/direction 3 | // echo 1 > /sys/class/gpio23/value 4 | 5 | let Gpio = require('onoff').Gpio 6 | let led = new Gpio(23, 'out') 7 | 8 | led.writeSync(1); 9 | -------------------------------------------------------------------------------- /cowork-panel/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /cowork-panel/build/load-minified.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs') 2 | var UglifyJS = require('uglify-es') 3 | 4 | module.exports = function(filePath) { 5 | var code = fs.readFileSync(filePath, 'utf-8') 6 | var result = UglifyJS.minify(code) 7 | if (result.error) return '' 8 | return result.code 9 | } 10 | -------------------------------------------------------------------------------- /cowork-panel/build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Page404.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 24 | -------------------------------------------------------------------------------- /cowork-panel/src/components/ContactPage.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 24 | -------------------------------------------------------------------------------- /cowork-panel/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-runtime"], 12 | "env": { 13 | "test": { 14 | "presets": ["env", "stage-2"], 15 | "plugins": [ "istanbul" ] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/pubConfig.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork config 3 | * @bg info 4 | * @param {string} conf 5 | @ @returns {object} 6 | */ 7 | 8 | const lib = require('lib') 9 | 10 | module.exports = (conf = 'non', context, callback) => { 11 | return lib[`${context.service.identifier}.config`]((err, config) => { 12 | if (err) { 13 | callback(null, { 14 | code: 'Config error' 15 | }) 16 | } 17 | 18 | callback(null, config) 19 | }) 20 | } 21 | -------------------------------------------------------------------------------- /cowork-panel/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }), 12 | transformToRequire: { 13 | video: 'src', 14 | source: 'src', 15 | img: 'src', 16 | image: 'xlink:href' 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /localdoor/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "localdoor", 3 | "version": "1.0.0", 4 | "description": "local door opener", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "nodemon open.js", 8 | "start": "nodemon open.js", 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "author": "matej nemcek", 12 | "license": "ISC", 13 | "dependencies": { 14 | "firebase-admin": "^5.4.2", 15 | "nodemon": "^1.12.1", 16 | "onoff": "^1.1.8", 17 | "r2": "^2.0.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /cowork-panel/src/components/ImageFrame.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 27 | -------------------------------------------------------------------------------- /cowork-panel/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cowork.progressbar.sk", 3 | "short_name": "Progressbar", 4 | "icons": [ 5 | { 6 | "src": "/static/img/icons/android-launchericon-192-192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/static/img/icons/android-launchericon-512-512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "/", 17 | "display": "standalone", 18 | "background_color": "#000000", 19 | "theme_color": "#000000" 20 | } 21 | -------------------------------------------------------------------------------- /cowork-panel/README.md: -------------------------------------------------------------------------------- 1 | # cowork-panel 2 | 3 | > panel for controlling cowork billing 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # build for production and view the bundle analyzer report 18 | npm run build --report 19 | ``` 20 | 21 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### At Our 🏢 Coworking 👩‍🚀 Space We Have 2 | * Place for your work in downtown at [Dunajská 7495/14, 811 08 Bratislava](https://goo.gl/maps/MbUuRgPPHQz) 3 | * High-speed Internet (250/20)📱 4 | * Lot of ⚡️ Electric 🔌 Sockets 5 | * 🖥 External Monitors - shared 6 | * Standing desks 7 | * 🗣📞 Room for calls 8 | * 👩🏽‍💻 Coding women have 50% off 9 | * Bitcoin & Litecoin accepted 10 | 11 | ### Our 🍳 Kitchen 12 | * ☕️ Specialty Coffee 13 | * 🍵 Tea 14 | * 🍹 Softdrinks ❄️ 15 | * Club-Mate 16 | * Flora-power 17 | * Mana Roots 18 | * Pragomošt 19 | * Twenny Bars (& Soylents) 20 | 21 | Register for cowork in Bratislava at [https://cowork.progressbar.sk](https://cowork.progressbar.sk) 22 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "progressbar-coweb", 3 | "version": "0.0.0", 4 | "description": "", 5 | "author": "yangwao ", 6 | "main": "functions/__main__.js", 7 | "dependencies": { 8 | "firebase-admin": "5.3.0", 9 | "lib": "^3.0.1", 10 | "mailgun-js": "^0.13.1", 11 | "standard": "^10.0.3", 12 | "uuid": "^3.1.0", 13 | "validator": "^9.0.0" 14 | }, 15 | "private": true, 16 | "stdlib": { 17 | "build": "faaslang", 18 | "name": "yangwao/progressbar-coweb", 19 | "timeout": 10000, 20 | "publish": false, 21 | "personalize": { 22 | "keys": [], 23 | "user": [] 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork config 3 | * @bg info 4 | * @param {string} conf 5 | @ @returns {object} 6 | */ 7 | module.exports = (conf = 'non', context, callback) => { 8 | const config = { 9 | baseWebUrl: 'https://cowork.progressbar.sk/', 10 | orderPrices: { 11 | day: 8, 12 | month: 100, 13 | fix: 180, 14 | locker: 10, 15 | nonstop: 20 16 | }, 17 | openHours: { 18 | monthPass: { 19 | start: 6, 20 | end: 18 21 | }, 22 | dayPass: { 23 | start: 8, 24 | end: 18 25 | } 26 | }, 27 | allowedPlans: ['day'], 28 | seatCapacity: 25, 29 | coworkLogin: true, 30 | coworkSubscribe: true 31 | } 32 | callback(null, config) 33 | } 34 | -------------------------------------------------------------------------------- /cowork-panel/build/service-worker-dev.js: -------------------------------------------------------------------------------- 1 | // This service worker file is effectively a 'no-op' that will reset any 2 | // previous service worker registered for the same host:port combination. 3 | // In the production build, this file is replaced with an actual service worker 4 | // file that will precache your site's local assets. 5 | // See https://github.com/facebookincubator/create-react-app/issues/2272#issuecomment-302832432 6 | 7 | self.addEventListener('install', () => self.skipWaiting()); 8 | 9 | self.addEventListener('activate', () => { 10 | self.clients.matchAll({ type: 'window' }).then(windowClients => { 11 | for (let windowClient of windowClients) { 12 | // Force open pages to refresh, so that they have a chance to load the 13 | // fresh navigation response from the local dev server. 14 | windowClient.navigate(windowClient.url); 15 | } 16 | }); 17 | }); -------------------------------------------------------------------------------- /cowork-panel/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App' 3 | import router from './router' 4 | 5 | Vue.config.productionTip = false 6 | 7 | Vue.prototype.$api = { 8 | baseWebUrl: 'https://progressbar.sk/', 9 | pubConfig: 'pubConfig/', 10 | subscribers: 'status/', 11 | daydetails: 'daydetails/', 12 | newSubscriber: 'emailSubscribe/', 13 | verify: 'verify/', 14 | order: 'order/', 15 | orderCowork: 'orderCowork/', 16 | login: 'login/', 17 | logmein: 'logmein/', 18 | openDoor: 'openDoor/', 19 | openBlackDoor: 'openBlackDoor/' 20 | } 21 | 22 | if (process.env.NODE_ENV === 'development') { 23 | Vue.prototype.$api.base = 'http://localhost:8170/yangwao/progressbar-coweb/' 24 | } 25 | 26 | if (process.env.NODE_ENV === 'production') { 27 | Vue.prototype.$api.base = 'https://yangwao.lib.id/progressbar-coweb@dev/' 28 | } 29 | 30 | /* eslint-disable no-new */ 31 | new Vue({ 32 | el: '#app', 33 | router, 34 | template: '', 35 | components: {App} 36 | }) 37 | -------------------------------------------------------------------------------- /cowork-panel/src/App.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 23 | 24 | 51 | -------------------------------------------------------------------------------- /cowork-panel/src/components/SupportUs.vue: -------------------------------------------------------------------------------- 1 | 19 | 29 | 30 | 32 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/opening.js: -------------------------------------------------------------------------------- 1 | let data = require('../../data.json') 2 | 3 | // let orders = data.orders 4 | let ordersArr = Object.entries(data.orders) 5 | // console.log(ordersArr) 6 | 7 | let orderSum = {} 8 | for (let n of ordersArr) { 9 | let month = new Date(parseInt(n[0])).getMonth() 10 | let day = new Date(parseInt(n[0])).getDate() 11 | if (Object.keys(orderSum).length < 3) { 12 | Object.assign(orderSum, {[n[0]]: [n[1].length, month, day]}) 13 | } 14 | } 15 | 16 | console.log(orderSum) 17 | 18 | // Match request for coworker open 19 | // let requestedcoworker = '3a5c5a17-a351-4dba-94e0-99073bb23a1b' 20 | // let now = Date.now() 21 | // 22 | // let year = new Date(now).getFullYear() 23 | // let month = new Date(now).getMonth() 24 | // let day = new Date(now).getDate() 25 | // 26 | // let dateToday = new Date(year, month, day).getTime() 27 | // let orderDateToday = data.orders[dateToday] 28 | // let openDoor = orderDateToday.find(x => x === requestedcoworker) 29 | // // console.log(data) 30 | // console.log(now) 31 | // console.log(dateToday) 32 | // console.log(`openning doors to ${openDoor}`); 33 | -------------------------------------------------------------------------------- /cowork-panel/build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | console.log(chalk.cyan(' Build complete.\n')) 30 | console.log(chalk.yellow( 31 | ' Tip: built files are meant to be served over an HTTP server.\n' + 32 | ' Opening index.html over file:// won\'t work.\n' 33 | )) 34 | }) 35 | }) 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Matej Nemček 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /localdoor/open.js: -------------------------------------------------------------------------------- 1 | const firebase = require('firebase-admin') 2 | const r2 = require('r2') 3 | let serviceAccount = require('./pKey.json') 4 | 5 | let Gpio = require('onoff').Gpio 6 | let led = new Gpio(23, 'out') 7 | 8 | firebase.initializeApp({ 9 | credential: firebase.credential.cert(serviceAccount), 10 | databaseURL: 'https://coweb-bc478.firebaseio.com' 11 | }) 12 | 13 | const db = firebase.database() 14 | const localdoor = db.ref('localdoor') 15 | const localblackdoor = db.ref('localblackdoor') 16 | let doorLock = true 17 | 18 | localdoor.on('child_added', function(data) { 19 | if (doorLock) { 20 | openDoor() 21 | console.log(`${Date()} openning for ${data.val()}`) 22 | } 23 | }, function(error) { 24 | console.log(`err ${err.code}`) 25 | }) 26 | 27 | localblackdoor.on('child_added', function(data) { 28 | if (doorLock) { 29 | openBlackDoor() 30 | console.log(`${Date()} openning blackdoor for ${data.val()}`) 31 | } 32 | }, function(error) { 33 | console.log(`err ${err.code}`) 34 | }) 35 | 36 | function openDoor() { 37 | doorLock = false 38 | console.log(`openning door pin`) 39 | led.writeSync(1) 40 | setTimeout(function () { 41 | console.log(`closing door pin`) 42 | led.writeSync(0) 43 | doorLock = true 44 | }, 3000); 45 | } 46 | 47 | function openBlackDoor() { 48 | r2('http://door.bar/outsidedoor') 49 | } 50 | -------------------------------------------------------------------------------- /stdlib-workspace/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "orders": { 3 | "1507154400000": [ 4 | "24b4d031-46c4-43de-a60c-95f207226061", 5 | "3a5c5a17-a351-4dba-94e0-99073bb23a1b", 6 | "c6b248bd-7ca9-4e54-a7b2-bbf2d257c596", 7 | "d9a892bf-67be-4837-ab16-8bad007ee046", 8 | "2491fa80-a503-44e8-bd8b-5d7b4d12dc1c", 9 | "a96c8f0e-cdda-4095-a057-5f1b7a2539a1" 10 | ], 11 | "1507068000000": [ 12 | "24b4d031-46c4-43de-a60c-95f207226061", 13 | "3a5c5a17-a351-4dba-94e0-99073bb23a1b", 14 | "c6b248bd-7ca9-4e54-a7b2-bbf2d257c596", 15 | "d9a892bf-67be-4837-ab16-8bad007ee046", 16 | "2491fa80-a503-44e8-bd8b-5d7b4d12dc1c", 17 | "a96c8f0e-cdda-4095-a057-5f1b7a2539a1" 18 | ], 19 | "1506981600000": [ 20 | "24b4d031-46c4-43de-a60c-95f207226061", 21 | "3a5c5a17-a351-4dba-94e0-99073bb23a1b", 22 | "c6b248bd-7ca9-4e54-a7b2-bbf2d257c596", 23 | "d9a892bf-67be-4837-ab16-8bad007ee046", 24 | "2491fa80-a503-44e8-bd8b-5d7b4d12dc1c", 25 | "a96c8f0e-cdda-4095-a057-5f1b7a2539a1" 26 | ], 27 | "1506895200000": [ 28 | "24b4d031-46c4-43de-a60c-95f207226061", 29 | "3a5c5a17-a351-4dba-94e0-99073bb23a1b", 30 | "c6b248bd-7ca9-4e54-a7b2-bbf2d257c596", 31 | "d9a892bf-67be-4837-ab16-8bad007ee046", 32 | "2491fa80-a503-44e8-bd8b-5d7b4d12dc1c", 33 | "a96c8f0e-cdda-4095-a057-5f1b7a2539a1" 34 | ] 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /cowork-panel/src/components/InstagramFeed.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 36 | 37 | 59 | -------------------------------------------------------------------------------- /cowork-panel/build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /cowork-panel/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs') 2 | var path = require('path') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var config = require('../config') 6 | var merge = require('webpack-merge') 7 | var baseWebpackConfig = require('./webpack.base.conf') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 10 | 11 | // add hot-reload related code to entry chunks 12 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 13 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 14 | }) 15 | 16 | module.exports = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 19 | }, 20 | // cheap-module-eval-source-map is faster for development 21 | devtool: '#cheap-module-eval-source-map', 22 | plugins: [ 23 | new webpack.DefinePlugin({ 24 | 'process.env': config.dev.env 25 | }), 26 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 27 | new webpack.HotModuleReplacementPlugin(), 28 | new webpack.NoEmitOnErrorsPlugin(), 29 | // https://github.com/ampedandwired/html-webpack-plugin 30 | new HtmlWebpackPlugin({ 31 | filename: 'index.html', 32 | template: 'index.html', 33 | inject: true, 34 | serviceWorkerLoader: `` 36 | }), 37 | new FriendlyErrorsPlugin() 38 | ] 39 | }) 40 | -------------------------------------------------------------------------------- /cowork-panel/config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | dev: { 25 | env: require('./dev.env'), 26 | port: 8080, 27 | autoOpenBrowser: true, 28 | assetsSubDirectory: 'static', 29 | assetsPublicPath: '/', 30 | proxyTable: {}, 31 | // CSS Sourcemaps off by default because relative paths are "buggy" 32 | // with this option, according to the CSS-Loader README 33 | // (https://github.com/webpack/css-loader#sourcemaps) 34 | // In our experience, they generally work as expected, 35 | // just be aware of this issue when enabling this option. 36 | cssSourceMap: false 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # We are using the functionsES6 folder to code and translating at deploy time, so ignore the generated code folder 2 | # 3 | # Faas 4 | # Cloudfunctions 5 | faas/functions/ 6 | faas/functionsES6/secrets.json 7 | faas/functionsES6/pKey.json 8 | faas/playground/pKey.json 9 | faas/playground/secrets.json 10 | # StdLib 11 | .stdlib 12 | stdlib-workspace/yangwao/pKey.json 13 | 14 | # localdoor 15 | localdoor/pKey.json 16 | 17 | # Logs 18 | logs 19 | *.log 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | 24 | # Runtime data 25 | pids 26 | *.pid 27 | *.seed 28 | *.pid.lock 29 | 30 | # Directory for instrumented libs generated by jscoverage/JSCover 31 | lib-cov 32 | 33 | # Coverage directory used by tools like istanbul 34 | coverage 35 | 36 | # nyc test coverage 37 | .nyc_output 38 | 39 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 40 | .grunt 41 | 42 | # Bower dependency directory (https://bower.io/) 43 | bower_components 44 | 45 | # node-waf configuration 46 | .lock-wscript 47 | 48 | # Compiled binary addons (http://nodejs.org/api/addons.html) 49 | build/Release 50 | 51 | # Dependency directories 52 | node_modules/ 53 | jspm_packages/ 54 | 55 | # Typescript v1 declaration files 56 | typings/ 57 | 58 | # Optional npm cache directory 59 | .npm 60 | 61 | # Optional eslint cache 62 | .eslintcache 63 | 64 | # Optional REPL history 65 | .node_repl_history 66 | 67 | # Output of 'npm pack' 68 | *.tgz 69 | 70 | # Yarn Integrity file 71 | .yarn-integrity 72 | 73 | # dotenv environment variables file 74 | .env 75 | 76 | #osx 77 | .DS_Store 78 | .idea 79 | -------------------------------------------------------------------------------- /cowork-panel/build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./vue-loader.conf') 5 | 6 | function resolve (dir) { 7 | return path.join(__dirname, '..', dir) 8 | } 9 | 10 | module.exports = { 11 | entry: { 12 | app: './src/main.js' 13 | }, 14 | output: { 15 | path: config.build.assetsRoot, 16 | filename: '[name].js', 17 | publicPath: process.env.NODE_ENV === 'production' 18 | ? config.build.assetsPublicPath 19 | : config.dev.assetsPublicPath 20 | }, 21 | resolve: { 22 | extensions: ['.js', '.vue', '.json'], 23 | alias: { 24 | 'vue$': 'vue/dist/vue.esm.js', 25 | '@': resolve('src') 26 | } 27 | }, 28 | module: { 29 | rules: [ 30 | { 31 | test: /\.vue$/, 32 | loader: 'vue-loader', 33 | options: vueLoaderConfig 34 | }, 35 | { 36 | test: /\.js$/, 37 | loader: 'babel-loader', 38 | include: [resolve('src'), resolve('test')] 39 | }, 40 | { 41 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 42 | loader: 'url-loader', 43 | options: { 44 | limit: 10000, 45 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 46 | } 47 | }, 48 | { 49 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 50 | loader: 'url-loader', 51 | options: { 52 | limit: 10000, 53 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 54 | } 55 | }, 56 | { 57 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 58 | loader: 'url-loader', 59 | options: { 60 | limit: 10000, 61 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 62 | } 63 | } 64 | ] 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /cowork-panel/src/components/D14.vue: -------------------------------------------------------------------------------- 1 | 25 | 74 | 75 | 77 | -------------------------------------------------------------------------------- /stdlib-workspace/pg.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic Hello World function 3 | * @param {string} name Who you're saying hello to 4 | * @returns {object} 5 | */ 6 | module.exports = (name = 'world', context, callback) => { 7 | // // let lel = 'yy' 8 | // // let result = await `yy ${lel}`; 9 | const uuidv4 = require('uuid/v4') 10 | const firebase = require('firebase-admin') 11 | const serviceAccount = require('./pKey.json') 12 | // const serviceAccount = fs.readFileSync('functions/pkey.json') 13 | 14 | firebase.initializeApp({ 15 | credential: firebase.credential.cert({}), 16 | databaseURL: "https://coweb-bc478.firebaseio.com" 17 | }) 18 | firebase.initializeApp({ 19 | credential: firebase.credential.cert(serviceAccount), 20 | databaseURL: "https://coweb-bc478.firebaseio.com" 21 | }) 22 | 23 | const db = firebase.database(); 24 | const ref = db.ref("server") 25 | const subscribersRef = ref.child("subscribers") 26 | 27 | subscribersRef.once('value', function (data) { 28 | let dataRef = data.val() 29 | let confirmSubIdArr = Object.entries(dataRef) 30 | let confirmSubId = confirmSubIdArr.find(x => x[1].hash === req.params.verificationHash)[0] 31 | let confirmSubCredArr = Object.entries(dataRef) 32 | let confirmSubCred = confirmSubCredArr.find(x => x[1].hash === req.params.verificationHash)[1] 33 | 34 | if (!confirmSubId) { 35 | callback(null, { 36 | code: 'nope' 37 | }) 38 | } 39 | 40 | if (confirmSubId) { 41 | let confirmedSub = { 42 | [confirmSubId]: { 43 | email: confirmSubCred.email, 44 | confirmed: confirmSubCred.confirmed = true, 45 | createdAt: confirmSubCred.createdAt 46 | } 47 | } 48 | } 49 | 50 | subscribersRef.update(confirmedSub, function (error) { 51 | if (error) { 52 | callback(null, { code: 'ayay'}) 53 | } 54 | 55 | let result = { 56 | code: 'ok', 57 | name: 'ss' 58 | 59 | } 60 | callback(null, result) 61 | }) 62 | }) 63 | }; 64 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/daydetails.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic status of progresssbar-cowork 3 | * @param {string} n Who you're saying hello to 4 | * @returns {object} 5 | */ 6 | const lib = require('lib') 7 | 8 | module.exports = (day = 'non', context, callback) => { 9 | const firebase = require('firebase-admin') 10 | const firebaseConfig = { 11 | type: process.env.firebase_type, 12 | project_id: process.env.firebase_project_id, 13 | private_key_id: process.env.firebase_private_key_id, 14 | private_key: process.env.firebase_private_key, 15 | client_email: process.env.firebase_client_email, 16 | client_id: process.env.firebase_client_id, 17 | auth_uri: process.env.firebase_auth_uri, 18 | token_uri: process.env.firebase_token_uri, 19 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 20 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 21 | } 22 | if (firebase.apps.length === 0) { 23 | firebase.initializeApp({ 24 | credential: firebase.credential.cert(firebaseConfig), 25 | databaseURL: 'https://coweb-bc478.firebaseio.com' 26 | }) 27 | } 28 | 29 | return lib[`${context.service.identifier}.config`]((err, config) => { 30 | if (err) { 31 | callback(null, { code: 'Config error' }) 32 | } 33 | 34 | if (day.length < 13 || day.length > 13) { 35 | callback(null, { 36 | t2: 'illbeback' 37 | }) 38 | } 39 | day = parseInt(day) 40 | const db = firebase.database() 41 | const ref = db.ref('server') 42 | 43 | ref.once('value', function (data) { 44 | let server = data.val() 45 | let todayOrder = Object.values(server.orders[day]) 46 | // let now = Date.now() 47 | // let today = new Date(Date.UTC(new Date(now).getUTCFullYear(), new Date(now).getUTCMonth(), new Date(now).getUTCDate())).getTime() 48 | let dayDetail = [] 49 | for (let d of todayOrder) { 50 | dayDetail.push(d.slice(-4)) 51 | } 52 | 53 | const status = { 54 | dayDetail, 55 | config 56 | } 57 | callback(null, status) 58 | }) 59 | }) 60 | } 61 | -------------------------------------------------------------------------------- /cowork-panel/build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | 15 | var cssLoader = { 16 | loader: 'css-loader', 17 | options: { 18 | minimize: process.env.NODE_ENV === 'production', 19 | sourceMap: options.sourceMap 20 | } 21 | } 22 | 23 | // generate loader string to be used with extract text plugin 24 | function generateLoaders (loader, loaderOptions) { 25 | var loaders = [cssLoader] 26 | if (loader) { 27 | loaders.push({ 28 | loader: loader + '-loader', 29 | options: Object.assign({}, loaderOptions, { 30 | sourceMap: options.sourceMap 31 | }) 32 | }) 33 | } 34 | 35 | // Extract CSS when that option is specified 36 | // (which is the case during production build) 37 | if (options.extract) { 38 | return ExtractTextPlugin.extract({ 39 | use: loaders, 40 | fallback: 'vue-style-loader' 41 | }) 42 | } else { 43 | return ['vue-style-loader'].concat(loaders) 44 | } 45 | } 46 | 47 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 48 | return { 49 | css: generateLoaders(), 50 | postcss: generateLoaders(), 51 | less: generateLoaders('less'), 52 | sass: generateLoaders('sass', { indentedSyntax: true }), 53 | scss: generateLoaders('sass'), 54 | stylus: generateLoaders('stylus'), 55 | styl: generateLoaders('stylus') 56 | } 57 | } 58 | 59 | // Generate loaders for standalone style files (outside of .vue) 60 | exports.styleLoaders = function (options) { 61 | var output = [] 62 | var loaders = exports.cssLoaders(options) 63 | for (var extension in loaders) { 64 | var loader = loaders[extension] 65 | output.push({ 66 | test: new RegExp('\\.' + extension + '$'), 67 | use: loader 68 | }) 69 | } 70 | return output 71 | } 72 | -------------------------------------------------------------------------------- /cowork-panel/src/components/GiveUsReviewAfterVisit.vue: -------------------------------------------------------------------------------- 1 | 29 | 30 | 47 | 48 | 58 | -------------------------------------------------------------------------------- /cowork-panel/src/components/EmailVerify.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 62 | 63 | 66 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/__main__.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic status of progresssbar-cowork 3 | * @param {string} n Who you're saying hello to 4 | * @returns {object} 5 | */ 6 | module.exports = (n = 'non', context, callback) => { 7 | const firebase = require('firebase-admin') 8 | const firebaseConfig = { 9 | type: process.env.firebase_type, 10 | project_id: process.env.firebase_project_id, 11 | private_key_id: process.env.firebase_private_key_id, 12 | private_key: process.env.firebase_private_key, 13 | client_email: process.env.firebase_client_email, 14 | client_id: process.env.firebase_client_id, 15 | auth_uri: process.env.firebase_auth_uri, 16 | token_uri: process.env.firebase_token_uri, 17 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 18 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 19 | } 20 | if (firebase.apps.length === 0) { 21 | firebase.initializeApp({ 22 | credential: firebase.credential.cert(firebaseConfig), 23 | databaseURL: 'https://coweb-bc478.firebaseio.com' 24 | }) 25 | } 26 | 27 | if (n !== 'non') { 28 | callback(null, {t2: 'illbeback'}) 29 | } 30 | const db = firebase.database() 31 | const ref = db.ref('server') 32 | 33 | ref.once('value', function (data) { 34 | let server = data.val() 35 | let seats = { 36 | subscribers: Object.keys(server.subscribers).length, 37 | free: 10, 38 | capacity: 10, 39 | allocatedToday: 0 40 | } 41 | let credited = 0 42 | let daysBooked = Object.keys(server.orders).length 43 | let orderSum = {} 44 | let ordersArr = Object.entries(server.orders) 45 | for (let n of ordersArr) { 46 | let month = new Date(parseInt(n[0])).getMonth() 47 | let day = new Date(parseInt(n[0])).getDate() 48 | if (Object.keys(orderSum).length < 3) { 49 | Object.assign(orderSum, {[n[0]]: [n[1].length, month, day]}) 50 | } 51 | } 52 | let status = { 53 | orderSum, 54 | credited, 55 | daysBooked, 56 | seats, 57 | actions: { 58 | subscribtion: 0, 59 | orderDaypass: 0, 60 | orderFlex: 0, 61 | orderHomie: 0, 62 | orderLocker: 0, 63 | order247: 0 64 | } 65 | } 66 | callback(null, status) 67 | }) 68 | } 69 | -------------------------------------------------------------------------------- /cowork-panel/src/components/RunningCosts.vue: -------------------------------------------------------------------------------- 1 | 23 | 60 | 62 | -------------------------------------------------------------------------------- /cowork-panel/static/img/progressbar-logo-refresh.svg: -------------------------------------------------------------------------------- 1 | 2 | Progressbar logo 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Venue.vue: -------------------------------------------------------------------------------- 1 | 40 | 50 | 51 | 53 | -------------------------------------------------------------------------------- /cowork-panel/src/components/ProgressbarLogoRefresh.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 26 | 27 | 29 | -------------------------------------------------------------------------------- /cowork-panel/build/service-worker-prod.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | // Check to make sure service workers are supported in the current browser, 5 | // and that the current page is accessed from a secure origin. Using a 6 | // service worker from an insecure origin will trigger JS console errors. 7 | const isLocalhost = Boolean(window.location.hostname === 'localhost' || 8 | // [::1] is the IPv6 localhost address. 9 | window.location.hostname === '[::1]' || 10 | // 127.0.0.1/8 is considered localhost for IPv4. 11 | window.location.hostname.match( 12 | /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ 13 | ) 14 | ); 15 | 16 | window.addEventListener('load', function() { 17 | if ('serviceWorker' in navigator && 18 | (window.location.protocol === 'https:' || isLocalhost)) { 19 | navigator.serviceWorker.register('service-worker.js') 20 | .then(function(registration) { 21 | // updatefound is fired if service-worker.js changes. 22 | registration.onupdatefound = function() { 23 | // updatefound is also fired the very first time the SW is installed, 24 | // and there's no need to prompt for a reload at that point. 25 | // So check here to see if the page is already controlled, 26 | // i.e. whether there's an existing service worker. 27 | if (navigator.serviceWorker.controller) { 28 | // The updatefound event implies that registration.installing is set 29 | const installingWorker = registration.installing; 30 | 31 | installingWorker.onstatechange = function() { 32 | switch (installingWorker.state) { 33 | case 'installed': 34 | // At this point, the old content will have been purged and the 35 | // fresh content will have been added to the cache. 36 | // It's the perfect time to display a "New content is 37 | // available; please refresh." message in the page's interface. 38 | break; 39 | 40 | case 'redundant': 41 | throw new Error('The installing ' + 42 | 'service worker became redundant.'); 43 | 44 | default: 45 | // Ignore 46 | } 47 | }; 48 | } 49 | }; 50 | }).catch(function(e) { 51 | console.error('Error during service worker registration:', e); 52 | }); 53 | } 54 | }); 55 | })(); 56 | -------------------------------------------------------------------------------- /cowork-panel/src/components/CallForTheSponsors.vue: -------------------------------------------------------------------------------- 1 | 29 | 80 | 81 | 83 | -------------------------------------------------------------------------------- /cowork-panel/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cowork-panel", 3 | "version": "1.0.0", 4 | "description": "panel for controlling cowork billing", 5 | "author": "Matej Nemcek ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "start": "node build/dev-server.js", 10 | "build": "node build/build.js" 11 | }, 12 | "dependencies": { 13 | "@fortawesome/fontawesome-svg-core": "^1.2.6", 14 | "@fortawesome/free-brands-svg-icons": "^5.4.1", 15 | "@fortawesome/free-solid-svg-icons": "^5.4.1", 16 | "@fortawesome/vue-fontawesome": "^0.1.1", 17 | "axios": "^0.16.2", 18 | "bulma": "^0.6.2", 19 | "font-awesome": "^4.7.0", 20 | "i": "^0.3.6", 21 | "npm": "^6.13.4", 22 | "prerender-spa-plugin": "^3.1.0", 23 | "vue": "^2.3.3", 24 | "vue-cookie-law": "^1.8.0", 25 | "vue-flatpickr-component": "^4.0.0", 26 | "vue-ls": "^2.3.3", 27 | "vue-router": "^2.3.1" 28 | }, 29 | "devDependencies": { 30 | "autoprefixer": "^7.1.2", 31 | "babel-core": "^6.22.1", 32 | "babel-loader": "^7.1.1", 33 | "babel-plugin-transform-runtime": "^6.22.0", 34 | "babel-preset-env": "^1.3.2", 35 | "babel-preset-stage-2": "^6.22.0", 36 | "babel-register": "^6.22.0", 37 | "chalk": "^2.0.1", 38 | "connect-history-api-fallback": "^1.3.0", 39 | "copy-webpack-plugin": "^4.0.1", 40 | "css-loader": "^0.28.0", 41 | "cssnano": "^3.10.0", 42 | "eventsource-polyfill": "^0.9.6", 43 | "express": "^4.14.1", 44 | "extract-text-webpack-plugin": "^2.0.0", 45 | "file-loader": "^0.11.1", 46 | "friendly-errors-webpack-plugin": "^1.1.3", 47 | "html-webpack-plugin": "^2.28.0", 48 | "http-proxy-middleware": "^0.17.3", 49 | "imagemin-mozjpeg": "^8.0.0", 50 | "imagemin-webpack-plugin": "^2.4.0", 51 | "opn": "^5.1.0", 52 | "optimize-css-assets-webpack-plugin": "^2.0.0", 53 | "ora": "^1.2.0", 54 | "rimraf": "^2.6.0", 55 | "semver": "^5.3.0", 56 | "shelljs": "^0.7.6", 57 | "sw-precache-webpack-plugin": "^0.11.4", 58 | "uglify-es": "^3.0.25", 59 | "url-loader": "^0.5.8", 60 | "vue-loader": "^12.1.0", 61 | "vue-style-loader": "^3.0.1", 62 | "vue-template-compiler": "^2.3.3", 63 | "webpack": "^2.6.1", 64 | "webpack-bundle-analyzer": "^2.2.1", 65 | "webpack-dev-middleware": "^1.10.0", 66 | "webpack-hot-middleware": "^2.18.0", 67 | "webpack-merge": "^4.1.0" 68 | }, 69 | "engines": { 70 | "node": ">= 4.0.0", 71 | "npm": ">= 3.0.0" 72 | }, 73 | "browserslist": [ 74 | "> 0.1%", 75 | "last 5 versions", 76 | "not ie <= 8" 77 | ] 78 | } 79 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/logmein.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic email verification 3 | * @bg info 4 | * @param {string} loginCode came in email 5 | @ @returns {object} 6 | */ 7 | module.exports = (loginCode = 'non', context, callback) => { 8 | const validator = require('validator') 9 | const firebase = require('firebase-admin') 10 | const firebaseConfig = { 11 | type: process.env.firebase_type, 12 | project_id: process.env.firebase_project_id, 13 | private_key_id: process.env.firebase_private_key_id, 14 | private_key: process.env.firebase_private_key, 15 | client_email: process.env.firebase_client_email, 16 | client_id: process.env.firebase_client_id, 17 | auth_uri: process.env.firebase_auth_uri, 18 | token_uri: process.env.firebase_token_uri, 19 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 20 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 21 | } 22 | if (firebase.apps.length === 0) { 23 | firebase.initializeApp({ 24 | credential: firebase.credential.cert(firebaseConfig), 25 | databaseURL: 'https://coweb-bc478.firebaseio.com' 26 | }) 27 | } 28 | 29 | if (loginCode === 'non') { 30 | callback(null, { 31 | code: 'non' 32 | }) 33 | } 34 | 35 | if (!validator.isUUID(loginCode, 4)) { 36 | callback(null, { 37 | code: 'nope' 38 | }) 39 | } 40 | 41 | if (loginCode !== 'non') { 42 | const db = firebase.database() 43 | const ref = db.ref('server') 44 | const subscribersRef = ref.child('subscribers') 45 | 46 | subscribersRef.once('value', function (data) { 47 | let dataRef = data.val() 48 | let confirmSubArr = Object.entries(dataRef) 49 | let authSub = confirmSubArr.find(x => x[1].loginCode === loginCode) 50 | if (authSub === undefined) { 51 | callback(null, { 52 | code: 'Probably already logged user', 53 | loginCode, 54 | logged: true 55 | }) 56 | } 57 | 58 | if (authSub && authSub[0].length === 36) { 59 | authSub[1].loginCode = null 60 | 61 | let authedSub = { 62 | [authSub[0]]: authSub[1] 63 | } 64 | subscribersRef.update(authedSub, function (error) { 65 | if (error) { 66 | callback(null, { 67 | error: error, 68 | code: 'ayay' 69 | }) 70 | } 71 | 72 | if (!error) { 73 | authedSub.code = 'You should be logged now' 74 | authedSub.logged = true 75 | callback(null, authedSub) 76 | } 77 | }) 78 | } 79 | }) 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/status.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic status of progresssbar-cowork 3 | * @param {string} n Who you're saying hello to 4 | * @returns {object} 5 | */ 6 | const lib = require('lib') 7 | 8 | module.exports = (n = 'non', context, callback) => { 9 | const firebase = require('firebase-admin') 10 | const firebaseConfig = { 11 | type: process.env.firebase_type, 12 | project_id: process.env.firebase_project_id, 13 | private_key_id: process.env.firebase_private_key_id, 14 | private_key: process.env.firebase_private_key, 15 | client_email: process.env.firebase_client_email, 16 | client_id: process.env.firebase_client_id, 17 | auth_uri: process.env.firebase_auth_uri, 18 | token_uri: process.env.firebase_token_uri, 19 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 20 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 21 | } 22 | if (firebase.apps.length === 0) { 23 | firebase.initializeApp({ 24 | credential: firebase.credential.cert(firebaseConfig), 25 | databaseURL: 'https://coweb-bc478.firebaseio.com' 26 | }) 27 | } 28 | 29 | return lib[`${context.service.identifier}.config`]((err, config) => { 30 | if (err) { 31 | callback(null, { code: 'Config error' }) 32 | } 33 | 34 | if (n !== 'non') { 35 | callback(null, { 36 | t2: 'illbeback' 37 | }) 38 | } 39 | const db = firebase.database() 40 | const ref = db.ref('server') 41 | 42 | ref.once('value', function (data) { 43 | let server = data.val() 44 | let seats = { 45 | subscribers: Object.keys(server.subscribers).length, 46 | capacity: config.seatCapacity 47 | } 48 | let credited = 0 49 | let daysBooked = Object.keys(server.orders).length 50 | let orderSum = {} 51 | let ordersArr = Object.entries(server.orders) 52 | let now = Date.now() 53 | let today = new Date(Date.UTC(new Date(now).getUTCFullYear(), new Date(now).getUTCMonth(), new Date(now).getUTCDate())).getTime() 54 | 55 | for (let n of ordersArr) { 56 | if (n[0] >= today) { 57 | if (Object.keys(orderSum).length < 6) { 58 | let month = new Date(parseInt(n[0])).getMonth() 59 | let day = new Date(parseInt(n[0])).getDate() 60 | Object.assign(orderSum, { 61 | [n[0]]: [n[1].length, month, day] 62 | }) 63 | } 64 | } 65 | } 66 | let status = { 67 | orderSum, 68 | credited, 69 | daysBooked, 70 | seats, 71 | config 72 | } 73 | callback(null, status) 74 | }) 75 | }) 76 | } 77 | -------------------------------------------------------------------------------- /cowork-panel/src/components/GiveUsReviewBooking.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 51 | 52 | 62 | -------------------------------------------------------------------------------- /cowork-panel/src/components/CallForHost.vue: -------------------------------------------------------------------------------- 1 | 51 | 66 | 67 | 69 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/order.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork order 3 | * @bg info 4 | * @param {string} authToken 5 | @ @returns {object} 6 | */ 7 | const lib = require('lib') 8 | 9 | module.exports = (authToken = 'non', context, callback) => { 10 | const firebase = require('firebase-admin') 11 | const firebaseConfig = { 12 | type: process.env.firebase_type, 13 | project_id: process.env.firebase_project_id, 14 | private_key_id: process.env.firebase_private_key_id, 15 | private_key: process.env.firebase_private_key, 16 | client_email: process.env.firebase_client_email, 17 | client_id: process.env.firebase_client_id, 18 | auth_uri: process.env.firebase_auth_uri, 19 | token_uri: process.env.firebase_token_uri, 20 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 21 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 22 | } 23 | if (firebase.apps.length === 0) { 24 | firebase.initializeApp({ 25 | credential: firebase.credential.cert(firebaseConfig), 26 | databaseURL: 'https://coweb-bc478.firebaseio.com' 27 | }) 28 | } 29 | 30 | if (authToken === 'non') { 31 | callback(null, { 32 | code: 'non' 33 | }) 34 | } 35 | 36 | return lib[`${context.service.identifier}.config`]((err, config) => { 37 | if (err) { 38 | callback(null, { 39 | code: 'Config error' 40 | }) 41 | } 42 | 43 | if (authToken !== 'non') { 44 | const db = firebase.database() 45 | const ref = db.ref('server') 46 | const subscribersRef = ref.child('subscribers') 47 | const orders = ref.child('orders') 48 | 49 | subscribersRef.once('value', function (data) { 50 | let dataRef = data.val() 51 | let confirmSubArr = Object.entries(dataRef) 52 | let authSub = confirmSubArr.find(x => x[1].authToken === authToken) 53 | if (authSub === undefined) { 54 | callback(null, { 55 | code: 'Probably you are missing access rights' 56 | }) 57 | } 58 | 59 | orders.once('value', function (orders) { 60 | let ordersBulk = orders.val() 61 | let now = Date.now() 62 | let today = new Date(Date.UTC(new Date(now).getUTCFullYear(), new Date(now).getUTCMonth(), new Date(now).getUTCDate())).getTime() 63 | let gotOrderToday = null 64 | if (ordersBulk[today] && ordersBulk[today].find(x => x === authSub[0])) { 65 | gotOrderToday = true 66 | } 67 | 68 | if (authSub) { 69 | callback(null, { 70 | code: authSub[1].email, 71 | credit: authSub[1].credit, 72 | gotOrderToday, 73 | config 74 | }) 75 | } 76 | }) 77 | }) 78 | } 79 | }) 80 | } 81 | -------------------------------------------------------------------------------- /cowork-panel/build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = require('./webpack.dev.conf') 14 | 15 | // default port where dev server listens for incoming traffic 16 | var port = process.env.PORT || config.dev.port 17 | // automatically open browser, if not set will be false 18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 19 | // Define HTTP proxies to your custom API backend 20 | // https://github.com/chimurai/http-proxy-middleware 21 | var proxyTable = config.dev.proxyTable 22 | 23 | var app = express() 24 | var compiler = webpack(webpackConfig) 25 | 26 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 27 | publicPath: webpackConfig.output.publicPath, 28 | quiet: true 29 | }) 30 | 31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 32 | log: false 33 | }) 34 | // force page reload when html-webpack-plugin template changes 35 | compiler.plugin('compilation', function (compilation) { 36 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 37 | hotMiddleware.publish({ action: 'reload' }) 38 | cb() 39 | }) 40 | }) 41 | 42 | // proxy api requests 43 | Object.keys(proxyTable).forEach(function (context) { 44 | var options = proxyTable[context] 45 | if (typeof options === 'string') { 46 | options = { target: options } 47 | } 48 | app.use(proxyMiddleware(options.filter || context, options)) 49 | }) 50 | 51 | // handle fallback for HTML5 history API 52 | app.use(require('connect-history-api-fallback')()) 53 | 54 | // serve webpack bundle output 55 | app.use(devMiddleware) 56 | 57 | // enable hot-reload and state-preserving 58 | // compilation error display 59 | app.use(hotMiddleware) 60 | 61 | // serve pure static assets 62 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 63 | app.use(staticPath, express.static('./static')) 64 | 65 | var uri = 'http://localhost:' + port 66 | 67 | var _resolve 68 | var readyPromise = new Promise(resolve => { 69 | _resolve = resolve 70 | }) 71 | 72 | console.log('> Starting dev server...') 73 | devMiddleware.waitUntilValid(() => { 74 | console.log('> Listening at ' + uri + '\n') 75 | // when env is testing, don't need open it 76 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 77 | opn(uri) 78 | } 79 | _resolve() 80 | }) 81 | 82 | var server = app.listen(port) 83 | 84 | module.exports = { 85 | ready: readyPromise, 86 | close: () => { 87 | server.close() 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/verify.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic email verification 3 | * @bg info 4 | * @param {string} hash came in email 5 | @ @returns {object} 6 | */ 7 | module.exports = (hash = 'non', context, callback) => { 8 | const crypto = require('crypto') 9 | const cryptoHash = crypto.createHash('sha512') 10 | const validator = require('validator') 11 | const firebase = require('firebase-admin') 12 | const firebaseConfig = { 13 | type: process.env.firebase_type, 14 | project_id: process.env.firebase_project_id, 15 | private_key_id: process.env.firebase_private_key_id, 16 | private_key: process.env.firebase_private_key, 17 | client_email: process.env.firebase_client_email, 18 | client_id: process.env.firebase_client_id, 19 | auth_uri: process.env.firebase_auth_uri, 20 | token_uri: process.env.firebase_token_uri, 21 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 22 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 23 | } 24 | if (firebase.apps.length === 0) { 25 | firebase.initializeApp({ 26 | credential: firebase.credential.cert(firebaseConfig), 27 | databaseURL: 'https://coweb-bc478.firebaseio.com' 28 | }) 29 | } 30 | 31 | if (hash === 'non') { 32 | callback(null, { 33 | code: 'non' 34 | }) 35 | } 36 | 37 | if (!validator.isUUID(hash, 4)) { 38 | callback(null, { 39 | code: 'nope' 40 | }) 41 | } 42 | 43 | if (hash !== 'non') { 44 | const db = firebase.database() 45 | const ref = db.ref('server') 46 | const subscribersRef = ref.child('subscribers') 47 | 48 | subscribersRef.once('value', function (data) { 49 | let dataRef = data.val() 50 | let confirmSubArr = Object.entries(dataRef) 51 | let confirmSub = confirmSubArr.find(x => x[1].hash === hash) 52 | if (confirmSub === undefined) { 53 | callback(null, { 54 | code: 'Probably already confirmed email', 55 | hash 56 | }) 57 | } 58 | 59 | if (confirmSub && confirmSub[0].length === 36) { 60 | cryptoHash.update(confirmSub[1].email + confirmSub[1].createdAt) 61 | let confirmedSub = { 62 | [confirmSub[0]]: { 63 | email: confirmSub[1].email, 64 | confirmed: true, 65 | createdAt: confirmSub[1].createdAt, 66 | authToken: cryptoHash.digest('hex') 67 | } 68 | } 69 | subscribersRef.update(confirmedSub, function (error) { 70 | if (error) { 71 | callback(null, { 72 | error: error, 73 | code: 'ayay' 74 | }) 75 | } 76 | 77 | if (!error) { 78 | confirmedSub.code = 'Email has been confirmed' 79 | callback(null, confirmedSub) 80 | } 81 | }) 82 | } 83 | }) 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /cowork-panel/src/components/AppBody.vue: -------------------------------------------------------------------------------- 1 | 51 | 52 | 62 | 63 | 103 | -------------------------------------------------------------------------------- /cowork-panel/src/components/MeetingRoom.vue: -------------------------------------------------------------------------------- 1 | 60 | 82 | 83 | 92 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Login.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 92 | 93 | 96 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Offer.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 54 | 55 | 105 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Credit.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 92 | 93 | 98 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/openDoor.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork order 3 | * @bg info 4 | * @param {string} authToken 5 | @ @returns {object} 6 | */ 7 | module.exports = (authToken = 'non', context, callback) => { 8 | const firebase = require('firebase-admin') 9 | const firebaseConfig = { 10 | type: process.env.firebase_type, 11 | project_id: process.env.firebase_project_id, 12 | private_key_id: process.env.firebase_private_key_id, 13 | private_key: process.env.firebase_private_key, 14 | client_email: process.env.firebase_client_email, 15 | client_id: process.env.firebase_client_id, 16 | auth_uri: process.env.firebase_auth_uri, 17 | token_uri: process.env.firebase_token_uri, 18 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 19 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 20 | } 21 | if (firebase.apps.length === 0) { 22 | firebase.initializeApp({ 23 | credential: firebase.credential.cert(firebaseConfig), 24 | databaseURL: 'https://coweb-bc478.firebaseio.com' 25 | }) 26 | } 27 | 28 | if (authToken === 'non') { 29 | callback(null, { 30 | code: 'non' 31 | }) 32 | } 33 | 34 | if (authToken !== 'non') { 35 | const db = firebase.database() 36 | const ref = db.ref('server') 37 | const orders = ref.child('orders') 38 | const subscribersRef = ref.child('subscribers') 39 | const localdoor = db.ref('localdoor') 40 | 41 | subscribersRef.once('value', function (data) { 42 | let dataRef = data.val() 43 | let confirmSubArr = Object.entries(dataRef) 44 | let authSub = confirmSubArr.find(x => x[1].authToken === authToken) 45 | if (authSub === undefined) { 46 | callback(null, { 47 | code: 'Probably you are missing access rights' 48 | }) 49 | } 50 | 51 | if (authSub) { 52 | orders.once('value', function (data) { 53 | let ordersRef = data.val() 54 | let now = Date.now() 55 | let year = new Date(now).getUTCFullYear() 56 | let month = new Date(now).getUTCMonth() 57 | let day = new Date(now).getUTCDate() 58 | let dateToday = new Date(Date.UTC(year, month, day)).getTime() 59 | if (!ordersRef[dateToday]) { 60 | callback(null, { 61 | code: 'Not booked yet' 62 | }) 63 | } 64 | 65 | if (ordersRef[dateToday]) { 66 | let orderDateToday = ordersRef[dateToday] 67 | let openDoor = orderDateToday.find(x => x === authSub[0]) 68 | 69 | if (openDoor === undefined) { 70 | callback(null, { 71 | code: 'Missing access rights for this day' 72 | }) 73 | } 74 | 75 | if (openDoor) { 76 | let openEvent = { [Date.now()]: authSub[0] } 77 | localdoor.update(openEvent, function (errorDoor) { 78 | if (errorDoor) { 79 | callback(null, { 80 | error: errorDoor, 81 | code: 'whatever' 82 | }) 83 | } 84 | 85 | if (!errorDoor) { 86 | callback(null, { 87 | code: 'Smash the lever' 88 | }) 89 | } 90 | }) 91 | } 92 | } 93 | }) 94 | } 95 | }) 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/openBlackDoor.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork order 3 | * @bg info 4 | * @param {string} authToken 5 | @ @returns {object} 6 | */ 7 | module.exports = (authToken = 'non', context, callback) => { 8 | const firebase = require('firebase-admin') 9 | const firebaseConfig = { 10 | type: process.env.firebase_type, 11 | project_id: process.env.firebase_project_id, 12 | private_key_id: process.env.firebase_private_key_id, 13 | private_key: process.env.firebase_private_key, 14 | client_email: process.env.firebase_client_email, 15 | client_id: process.env.firebase_client_id, 16 | auth_uri: process.env.firebase_auth_uri, 17 | token_uri: process.env.firebase_token_uri, 18 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 19 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 20 | } 21 | if (firebase.apps.length === 0) { 22 | firebase.initializeApp({ 23 | credential: firebase.credential.cert(firebaseConfig), 24 | databaseURL: 'https://coweb-bc478.firebaseio.com' 25 | }) 26 | } 27 | 28 | if (authToken === 'non') { 29 | callback(null, { 30 | code: 'non' 31 | }) 32 | } 33 | 34 | if (authToken !== 'non') { 35 | const db = firebase.database() 36 | const ref = db.ref('server') 37 | const orders = ref.child('orders') 38 | const subscribersRef = ref.child('subscribers') 39 | const localdoor = db.ref('localblackdoor') 40 | 41 | subscribersRef.once('value', function (data) { 42 | let dataRef = data.val() 43 | let confirmSubArr = Object.entries(dataRef) 44 | let authSub = confirmSubArr.find(x => x[1].authToken === authToken) 45 | if (authSub === undefined) { 46 | callback(null, { 47 | code: 'Probably you are missing access rights' 48 | }) 49 | } 50 | 51 | if (authSub) { 52 | orders.once('value', function (data) { 53 | let ordersRef = data.val() 54 | let now = Date.now() 55 | let year = new Date(now).getUTCFullYear() 56 | let month = new Date(now).getUTCMonth() 57 | let day = new Date(now).getUTCDate() 58 | let dateToday = new Date(Date.UTC(year, month, day)).getTime() 59 | if (!ordersRef[dateToday]) { 60 | callback(null, { 61 | code: 'Not booked yet' 62 | }) 63 | } 64 | 65 | if (ordersRef[dateToday]) { 66 | let orderDateToday = ordersRef[dateToday] 67 | let openDoor = orderDateToday.find(x => x === authSub[0]) 68 | 69 | if (openDoor === undefined) { 70 | callback(null, { 71 | code: 'Missing access rights for this day' 72 | }) 73 | } 74 | 75 | if (openDoor) { 76 | let openEvent = { [Date.now()]: authSub[0] } 77 | localdoor.update(openEvent, function (errorDoor) { 78 | if (errorDoor) { 79 | callback(null, { 80 | error: errorDoor, 81 | code: 'whatever' 82 | }) 83 | } 84 | 85 | if (!errorDoor) { 86 | callback(null, { 87 | code: 'Pull the door' 88 | }) 89 | } 90 | }) 91 | } 92 | } 93 | }) 94 | } 95 | }) 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /cowork-panel/src/components/FixDesk.vue: -------------------------------------------------------------------------------- 1 | 40 | 77 | 78 | 87 | -------------------------------------------------------------------------------- /cowork-panel/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import Subscribe from '@/components/Subscribe' 4 | import EmailVerify from '@/components/EmailVerify' 5 | import Order from '@/components/Order' 6 | import Login from '@/components/Login' 7 | import Credit from '@/components/Credit' 8 | import Photos from '@/components/Photos' 9 | import MeetingRoom from '@/components/MeetingRoom' 10 | import FixDesk from '@/components/FixDesk' 11 | import CallForTheSponsors from '@/components/CallForTheSponsors' 12 | import SpaceForRent from '@/components/SpaceForRent' 13 | import GiveUsReviewBooking from '@/components/GiveUsReviewBooking' 14 | import GiveUsReviewAfterVisit from '@/components/GiveUsReviewAfterVisit' 15 | import RunningCosts from '@/components/RunningCosts' 16 | import Sponsors from '@/components/Sponsors' 17 | import D14 from '@/components/D14' 18 | import Venue from '@/components/Venue' 19 | import CallForHost from '@/components/CallForHost' 20 | import ContactPage from '@/components/ContactPage' 21 | import Page404 from '@/components/Page404' 22 | import VueLocalStorage from 'vue-ls' 23 | import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' 24 | 25 | var options = { 26 | namespace: 'pgbcowork_' 27 | } 28 | 29 | Vue.component('font-awesome-icon', FontAwesomeIcon) 30 | Vue.use(VueLocalStorage, options) 31 | Vue.use(Router) 32 | 33 | export default new Router({ 34 | mode: 'history', 35 | routes: [ 36 | { 37 | path: '/', 38 | name: 'Subscribe', 39 | component: Subscribe 40 | }, 41 | { 42 | path: '/coworking-bratislava', 43 | component: Subscribe 44 | }, 45 | { 46 | path: '/email/:verificationCode', 47 | component: EmailVerify 48 | }, 49 | { 50 | path: '/order', 51 | component: Order 52 | }, 53 | { 54 | path: '/login', 55 | component: Login 56 | }, 57 | { 58 | path: '/login/:loginCode', 59 | component: Login 60 | }, 61 | { 62 | path: '/credit', 63 | component: Credit 64 | }, 65 | { 66 | path: '/meeting-room-cowork-bratislava', 67 | component: MeetingRoom 68 | }, 69 | { 70 | path: '/fixdesk-cowork-bratislava', 71 | component: FixDesk 72 | }, 73 | { 74 | path: '/coworking-progressbar-bratislava-photos', 75 | component: Photos 76 | }, 77 | { 78 | path: '/call-for-the-sponsors', 79 | component: CallForTheSponsors 80 | }, 81 | { 82 | path: '/space-for-rent', 83 | component: SpaceForRent 84 | }, 85 | { 86 | path: '/running-costs', 87 | component: RunningCosts 88 | }, 89 | { 90 | path: '/give-us-review-thanks', 91 | component: GiveUsReviewAfterVisit 92 | }, 93 | { 94 | path: '/give-us-review-thanks/:coworkerName', 95 | component: GiveUsReviewAfterVisit 96 | }, 97 | { 98 | path: '/free-daypass-thanks/:coworkerName', 99 | component: GiveUsReviewBooking 100 | }, 101 | { 102 | path: '/sponsors', 103 | component: Sponsors 104 | }, 105 | { 106 | path: '/venue', 107 | component: Venue 108 | }, 109 | { 110 | path: '/call-for-a-host', 111 | component: CallForHost 112 | }, 113 | { 114 | path: '/d14', 115 | component: D14 116 | }, 117 | { 118 | path: '/contact', 119 | component: ContactPage 120 | }, 121 | { 122 | path: '*', 123 | component: Page404 124 | } 125 | ] 126 | }) 127 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/login.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork login 3 | * @bg info 4 | * @param {string} email 5 | @ @returns {object} 6 | */ 7 | module.exports = (email = 'non', context, callback) => { 8 | const config = { 9 | api: { 10 | baseWebUrl: 'https://cowork.progressbar.sk/' 11 | } 12 | } 13 | const isEmail = require('validator/lib/isEmail') 14 | const normalizeEmail = require('validator/lib/normalizeEmail') 15 | const uuidv4 = require('uuid/v4') 16 | const mailgun = require('mailgun-js')({ 17 | apiKey: process.env.mailgun_apiKey, 18 | domain: process.env.mailgun_domain 19 | }) 20 | 21 | const firebase = require('firebase-admin') 22 | const firebaseConfig = { 23 | type: process.env.firebase_type, 24 | project_id: process.env.firebase_project_id, 25 | private_key_id: process.env.firebase_private_key_id, 26 | private_key: process.env.firebase_private_key, 27 | client_email: process.env.firebase_client_email, 28 | client_id: process.env.firebase_client_id, 29 | auth_uri: process.env.firebase_auth_uri, 30 | token_uri: process.env.firebase_token_uri, 31 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 32 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 33 | } 34 | if (firebase.apps.length === 0) { 35 | firebase.initializeApp({ 36 | credential: firebase.credential.cert(firebaseConfig), 37 | databaseURL: 'https://coweb-bc478.firebaseio.com' 38 | }) 39 | } 40 | 41 | if (email === 'non') { 42 | callback(null, { 43 | code: 'non' 44 | }) 45 | } 46 | 47 | if (!isEmail(email)) { 48 | callback(null, { 49 | error: 'not an email', 50 | code: 'Not an email' 51 | }) 52 | } 53 | 54 | let normalizedEmail = normalizeEmail(email) 55 | if (email !== 'non') { 56 | const db = firebase.database() 57 | const ref = db.ref('server') 58 | const subscribersRef = ref.child('subscribers') 59 | 60 | subscribersRef.once('value', function (data) { 61 | let dataRef = data.val() 62 | let confirmSubArr = Object.entries(dataRef) 63 | let authSub = confirmSubArr.find(x => x[1].email === normalizedEmail) 64 | if (authSub === undefined) { 65 | callback(null, { 66 | code: 'Probably you are missing access rights' 67 | }) 68 | } 69 | 70 | if (authSub) { 71 | authSub[1].loginCode = uuidv4() 72 | 73 | let subWithLoginCode = { 74 | [authSub[0]]: authSub[1] 75 | } 76 | subscribersRef.update(subWithLoginCode, function (err) { 77 | if (err) { 78 | console.log('err', err) 79 | callback(null, { 80 | code: 'Weird' 81 | }) 82 | } else { 83 | const mailmsg = { 84 | from: `Progressbar Cowork noreply `, 85 | to: normalizedEmail, 86 | subject: 'Progressbar Cowork Email Login', 87 | text: `Someone just requested login with this email ${normalizedEmail}, if it was you, click on link to login ${config.api.baseWebUrl}#/login/${authSub[1].loginCode}` 88 | } 89 | console.log(mailmsg) 90 | mailgun.messages().send(mailmsg, function (error, body) { 91 | if (error) { 92 | console.log('mailgunErr', error) 93 | callback(null, { 94 | code: 'Weird gun' 95 | }) 96 | } 97 | 98 | if (!error) { 99 | callback(null, { 100 | code: 'Email with login sent' 101 | }) 102 | } 103 | }) 104 | } 105 | }) 106 | } 107 | }) 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Photos.vue: -------------------------------------------------------------------------------- 1 | 79 | 128 | 129 | 131 | -------------------------------------------------------------------------------- /cowork-panel/src/components/Sponsors.vue: -------------------------------------------------------------------------------- 1 | 50 | 99 | 100 | 102 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/emailSubscribe.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic email verification 3 | * @bg info 4 | * @param {string} email came in email 5 | @ @returns {object} 6 | */ 7 | module.exports = (email = 'non', context, callback) => { 8 | const config = { 9 | api: { 10 | baseWebUrl: 'https://cowork.progressbar.sk/' 11 | } 12 | } 13 | const uuidv4 = require('uuid/v4') 14 | const normalizeEmail = require('validator/lib/normalizeEmail') 15 | const isEmail = require('validator/lib/isEmail') 16 | const blacklist = require('validator/lib/blacklist') 17 | const mailgun = require('mailgun-js')({ 18 | apiKey: process.env.mailgun_apiKey, 19 | domain: process.env.mailgun_domain 20 | }) 21 | 22 | const firebase = require('firebase-admin') 23 | const firebaseConfig = { 24 | type: process.env.firebase_type, 25 | project_id: process.env.firebase_project_id, 26 | private_key_id: process.env.firebase_private_key_id, 27 | private_key: process.env.firebase_private_key, 28 | client_email: process.env.firebase_client_email, 29 | client_id: process.env.firebase_client_id, 30 | auth_uri: process.env.firebase_auth_uri, 31 | token_uri: process.env.firebase_token_uri, 32 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 33 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 34 | } 35 | 36 | if (firebase.apps.length === 0) { 37 | firebase.initializeApp({ 38 | credential: firebase.credential.cert(firebaseConfig), 39 | databaseURL: 'https://coweb-bc478.firebaseio.com' 40 | }) 41 | } 42 | const db = firebase.database() 43 | const ref = db.ref('server') 44 | const subscribersRef = ref.child('subscribers') 45 | 46 | if (email === 'non') { 47 | callback(null, { 48 | code: 'non' 49 | }) 50 | } 51 | 52 | email = blacklist(email, '\',/') 53 | 54 | if (!isEmail(email) || email.length <= 10) { 55 | callback(null, { 56 | code: 'Not an email' 57 | }) 58 | } 59 | 60 | if (isEmail(email) && email.length > 10) { 61 | let normalizedEmail = normalizeEmail(email) 62 | const hash = uuidv4() 63 | const mailmsg = { 64 | from: `Progressbar Cowork noreply `, 65 | to: normalizedEmail, 66 | subject: 'Progressbar Cowork Email Verification', 67 | text: 68 | `Hello, looks like somebody tried use your email as registration mail. 69 | If it was you, please confirm your email address ${normalizedEmail} 70 | by clicking on link ${config.api.baseWebUrl}#/email/${hash} 71 | If you did not request this email, please ignore it. 72 | Humanoid from ${config.api.baseWebUrl}` 73 | } 74 | 75 | let newSub = { 76 | [uuidv4()]: { 77 | email: normalizedEmail, 78 | createdAt: Date.now(), 79 | hash 80 | } 81 | } 82 | 83 | let emails = [] 84 | subscribersRef.once('value', function (data) { 85 | let dataRef = data.val() 86 | for (let uid of Object.keys(dataRef)) { 87 | emails.push(dataRef[uid].email) 88 | } 89 | 90 | let seenEmail = emails.find(x => x === normalizedEmail) 91 | 92 | if (seenEmail === normalizedEmail) { 93 | callback(null, { 94 | newSubscriberEmail: normalizedEmail, 95 | error: 'already requested mail', 96 | code: 'Please confirm your email' 97 | }) 98 | } 99 | 100 | if (seenEmail === undefined) { 101 | subscribersRef.update(newSub, function (err) { 102 | if (err) { 103 | console.log('err', err) 104 | callback(null, { 105 | newSubscriberEmail: normalizedEmail, 106 | at: 1, 107 | code: 'Error occured, try later' 108 | }) 109 | } else { 110 | mailgun.messages().send(mailmsg, function (error, body) { 111 | if (error) { 112 | console.log('mailgunErr', error) 113 | callback(null, { 114 | newSubscriberEmail: normalizedEmail, 115 | at: 2, 116 | code: 'Error occured, try later' 117 | }) 118 | } 119 | if (!error) { 120 | callback(null, { 121 | newSubscriberEmail: normalizedEmail, 122 | code: 'Email has been sent' 123 | }) 124 | } 125 | }) 126 | } 127 | }) 128 | } 129 | }) 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /cowork-panel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Tech Cowork Progressbar Bratislava | Ethereum accepted 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | <% for (var chunk of webpack.chunks) { 51 | for (var file of chunk.files) { 52 | if (file.match(/\.(js|css)$/)) { %> 53 | <% }}} %> 54 | 55 | 56 | 60 |
61 | 62 | <%= htmlWebpackPlugin.options.serviceWorkerLoader %> 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /cowork-panel/src/components/SpaceForRent.vue: -------------------------------------------------------------------------------- 1 | 67 | 107 | 119 | -------------------------------------------------------------------------------- /stdlib-workspace/yangwao/progressbar-coweb/functions/orderCowork.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A basic cowork order 3 | * @bg info 4 | * @param {string} authToken 5 | * @param {string} date 6 | * @param {string} plan 7 | @ @returns {object} 8 | */ 9 | const lib = require('lib') 10 | module.exports = (authToken = 'non', date = 'non', plan = 'non', context, callback) => { 11 | const firebase = require('firebase-admin') 12 | const firebaseConfig = { 13 | type: process.env.firebase_type, 14 | project_id: process.env.firebase_project_id, 15 | private_key_id: process.env.firebase_private_key_id, 16 | private_key: process.env.firebase_private_key, 17 | client_email: process.env.firebase_client_email, 18 | client_id: process.env.firebase_client_id, 19 | auth_uri: process.env.firebase_auth_uri, 20 | token_uri: process.env.firebase_token_uri, 21 | auth_provider_x509_cert_url: process.env.firebase_auth_provider_x509_cert_url, 22 | client_x509_cert_url: process.env.firebase_client_x509_cert_url 23 | } 24 | 25 | if (firebase.apps.length === 0) { 26 | firebase.initializeApp({ 27 | credential: firebase.credential.cert(firebaseConfig), 28 | databaseURL: 'https://coweb-bc478.firebaseio.com' 29 | }) 30 | } 31 | 32 | if (authToken === 'non') { 33 | callback(null, { 34 | code: 'non' 35 | }) 36 | } 37 | 38 | return lib[`${context.service.identifier}.config`]((err, config) => { 39 | if (err) { 40 | callback(null, { code: 'Config error' }) 41 | } 42 | 43 | let now = Date.now() 44 | let today = new Date(Date.UTC(new Date(now).getUTCFullYear(), new Date(now).getUTCMonth(), new Date(now).getUTCDate())).getTime() 45 | let isBadTimestamp = (isNaN(new Date(parseInt(date))) || date < today) 46 | let validPlan = config.allowedPlans.find(x => x === plan) 47 | if (isBadTimestamp) { 48 | callback(null, { 49 | code: 'Badass' 50 | }) 51 | } 52 | 53 | if (validPlan === undefined) { 54 | callback(null, { 55 | code: 'Disabled' 56 | }) 57 | } 58 | 59 | if (authToken !== 'non' && !isBadTimestamp && validPlan) { 60 | const db = firebase.database() 61 | const ref = db.ref('server') 62 | const orders = ref.child('orders') 63 | const subscribersRef = ref.child('subscribers') 64 | 65 | subscribersRef.once('value', function (data) { 66 | let dataRef = data.val() 67 | let confirmSubArr = Object.entries(dataRef) 68 | let authSub = confirmSubArr.find(x => x[1].authToken === authToken) 69 | if (authSub === undefined) { 70 | callback(null, { 71 | code: 'Probably you are missing access rights' 72 | }) 73 | } 74 | 75 | if (authSub) { 76 | console.log(authSub[1]) 77 | if (!authSub[1].credit === 0) { 78 | callback(null, { 79 | code: 'Not enough credit' 80 | }) 81 | } 82 | 83 | if (authSub[1].credit > 0 && authSub[1].canOrder) { 84 | orders.once('value', function (data) { 85 | let ordersBulk = data.val() 86 | let orderDate = date 87 | 88 | console.log('orderDate', orderDate) 89 | let orderDay = ordersBulk[orderDate] 90 | let isFull = (orderDay && orderDay.length >= config.seatCapacity) 91 | 92 | if (isFull) { 93 | callback(null, { 94 | code: 'Can\'t book, we are full' 95 | }) 96 | } 97 | 98 | if (!isFull && ordersBulk[orderDate] && ordersBulk[orderDate].find(x => x === authSub[0])) { 99 | callback(null, { 100 | code: 'You booked this date' 101 | }) 102 | orderDay = null 103 | } 104 | 105 | if (!isFull && ordersBulk[orderDate] && !ordersBulk[orderDate].find(x => x === authSub[0])) { 106 | orderDay.push(authSub[0]) 107 | } 108 | 109 | if (!isFull && ordersBulk[orderDate] === undefined) { 110 | orderDay = [] 111 | orderDay.push(authSub[0]) 112 | } 113 | 114 | if (orderDay) { 115 | let updOrder = { 116 | [orderDate]: orderDay 117 | } 118 | 119 | orders.update(updOrder, function (errorOrder) { 120 | if (errorOrder) { 121 | callback(null, { 122 | code: 'Something with order went wrong' 123 | }) 124 | } 125 | 126 | if (!errorOrder) { 127 | authSub[1].credit = authSub[1].credit - config.orderPrices.day 128 | subscribersRef.update({[authSub[0]]: authSub[1]}, function (errorUpd) { 129 | }) 130 | 131 | callback(null, { 132 | code: 'Cowork booking confirmed' 133 | }) 134 | } 135 | }) 136 | } 137 | }) 138 | } 139 | 140 | if (!authSub[1].canOrder) { 141 | callback(null, { 142 | code: 'Can\'t order' 143 | }) 144 | } 145 | } 146 | }) 147 | } 148 | }) 149 | } 150 | -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/maker.svg: -------------------------------------------------------------------------------- 1 | mkr -------------------------------------------------------------------------------- /cowork-panel/src/components/PbFinancialReport.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 172 | 173 | 177 | -------------------------------------------------------------------------------- /cowork-panel/build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var fs = require('fs') 2 | var path = require('path') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var config = require('../config') 6 | var merge = require('webpack-merge') 7 | var baseWebpackConfig = require('./webpack.base.conf') 8 | var CopyWebpackPlugin = require('copy-webpack-plugin') 9 | var HtmlWebpackPlugin = require('html-webpack-plugin') 10 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 11 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 12 | var SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin') 13 | const PrerenderSPAPlugin = require('prerender-spa-plugin') 14 | var ImageminPlugin = require('imagemin-webpack-plugin').default 15 | var imageminMozjpeg = require('imagemin-mozjpeg') 16 | var loadMinified = require('./load-minified') 17 | 18 | var env = config.build.env 19 | 20 | var webpackConfig = merge(baseWebpackConfig, { 21 | module: { 22 | rules: utils.styleLoaders({ 23 | sourceMap: config.build.productionSourceMap, 24 | extract: true 25 | }) 26 | }, 27 | devtool: config.build.productionSourceMap ? '#source-map' : false, 28 | output: { 29 | path: config.build.assetsRoot, 30 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 31 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 32 | }, 33 | plugins: [ 34 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 35 | new webpack.DefinePlugin({ 36 | 'process.env': env 37 | }), 38 | new webpack.optimize.UglifyJsPlugin({ 39 | compress: { 40 | warnings: false 41 | }, 42 | sourceMap: true 43 | }), 44 | // extract css into its own file 45 | new ExtractTextPlugin({ 46 | filename: utils.assetsPath('css/[name].[contenthash].css') 47 | }), 48 | // Compress extracted CSS. We are using this plugin so that possible 49 | // duplicated CSS from different components can be deduped. 50 | new OptimizeCSSPlugin({ 51 | cssProcessorOptions: { 52 | safe: true 53 | } 54 | }), 55 | // generate dist index.html with correct asset hash for caching. 56 | // you can customize output by editing /index.html 57 | // see https://github.com/ampedandwired/html-webpack-plugin 58 | new HtmlWebpackPlugin({ 59 | filename: config.build.index, 60 | template: 'index.html', 61 | inject: true, 62 | minify: { 63 | removeComments: true, 64 | collapseWhitespace: true, 65 | removeAttributeQuotes: true 66 | // more options: 67 | // https://github.com/kangax/html-minifier#options-quick-reference 68 | }, 69 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 70 | chunksSortMode: 'dependency', 71 | serviceWorkerLoader: `` 73 | }), 74 | // split vendor js into its own file 75 | new webpack.optimize.CommonsChunkPlugin({ 76 | name: 'vendor', 77 | minChunks: function (module, count) { 78 | // any required modules inside node_modules are extracted to vendor 79 | return ( 80 | module.resource && 81 | /\.js$/.test(module.resource) && 82 | module.resource.indexOf( 83 | path.join(__dirname, '../node_modules') 84 | ) === 0 85 | ) 86 | } 87 | }), 88 | // extract webpack runtime and module manifest to its own file in order to 89 | // prevent vendor hash from being updated whenever app bundle is updated 90 | new webpack.optimize.CommonsChunkPlugin({ 91 | name: 'manifest', 92 | chunks: ['vendor'] 93 | }), 94 | // copy custom static assets 95 | new CopyWebpackPlugin([ 96 | { 97 | from: path.resolve(__dirname, '../static'), 98 | to: config.build.assetsSubDirectory, 99 | ignore: ['.*'] 100 | }, 101 | { 102 | from: path.resolve(__dirname, '../root'), 103 | to: config.build.assetsRoot, 104 | ignore: ['.*'] 105 | } 106 | ]), 107 | new ImageminPlugin({ 108 | test: /\.(jpe?g|png|gif|svg)$/i, 109 | plugins: [ 110 | imageminMozjpeg({ 111 | quality: 75, 112 | progressive: true 113 | }) 114 | ] 115 | }), 116 | // service worker caching 117 | new SWPrecacheWebpackPlugin({ 118 | cacheId: 'my-vue-app', 119 | filename: 'service-worker.js', 120 | staticFileGlobs: ['dist/**/*.{js,html,css,svg,jpg}'], 121 | minify: true, 122 | stripPrefix: 'dist/' 123 | }), 124 | new PrerenderSPAPlugin({ 125 | // Required - The path to the webpack-outputted app to prerender. 126 | staticDir: config.build.assetsRoot, 127 | // Required - Routes to render. 128 | routes: [ '/venue', '/space-for-rent', '/sponsors', 129 | '/call-for-the-sponsors', '/call-for-a-host' ] 130 | }) 131 | ] 132 | }) 133 | 134 | if (config.build.productionGzip) { 135 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 136 | 137 | webpackConfig.plugins.push( 138 | new CompressionWebpackPlugin({ 139 | asset: '[path].gz[query]', 140 | algorithm: 'gzip', 141 | test: new RegExp( 142 | '\\.(' + 143 | config.build.productionGzipExtensions.join('|') + 144 | ')$' 145 | ), 146 | threshold: 10240, 147 | minRatio: 0.8 148 | }) 149 | ) 150 | } 151 | 152 | if (config.build.bundleAnalyzerReport) { 153 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 154 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 155 | } 156 | 157 | module.exports = webpackConfig 158 | -------------------------------------------------------------------------------- /cowork-panel/src/components/AppFooter.vue: -------------------------------------------------------------------------------- 1 | 66 | 116 | 157 | -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/loom_white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Artboard 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /cowork-panel/src/components/AppHeader.vue: -------------------------------------------------------------------------------- 1 | 90 | 91 | 138 | 139 | 183 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Citizen Code of Conduct 2 | 3 | ## 1. Purpose 4 | 5 | A primary goal of Progressbar is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). 6 | 7 | This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. 8 | 9 | We invite all those who participate in Progressbar to help us create safe and positive experiences for everyone. 10 | 11 | ## 2. Open [Source/Culture/Tech] Citizenship 12 | 13 | A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. 14 | 15 | Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. 16 | 17 | If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. 18 | 19 | ## 3. Expected Behavior 20 | 21 | The following behaviors are expected and requested of all community members: 22 | 23 | * Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. 24 | * Exercise consideration and respect in your speech and actions. 25 | * Attempt collaboration before conflict. 26 | * Refrain from demeaning, discriminatory, or harassing behavior and speech. 27 | * Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. 28 | * Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. 29 | 30 | ## 4. Unacceptable Behavior 31 | 32 | The following behaviors are considered harassment and are unacceptable within our community: 33 | 34 | * Violence, threats of violence or violent language directed against another person. 35 | * Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. 36 | * Posting or displaying sexually explicit or violent material. 37 | * Posting or threatening to post other people's personally identifying information ("doxing"). 38 | * Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. 39 | * Inappropriate photography or recording. 40 | * Inappropriate physical contact. You should have someone's consent before touching them. 41 | * Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. 42 | * Deliberate intimidation, stalking or following (online or in person). 43 | * Advocating for, or encouraging, any of the above behavior. 44 | * Sustained disruption of community events, including talks and presentations. 45 | 46 | ## 5. Weapons Policy 47 | 48 | No weapons will be allowed at Progressbar events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter. 49 | 50 | ## 6. Consequences of Unacceptable Behavior 51 | 52 | Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. 53 | 54 | Anyone asked to stop unacceptable behavior is expected to comply immediately. 55 | 56 | If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). 57 | 58 | ## 7. Reporting Guidelines 59 | 60 | If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. info(at)progressbar(dot)sk. 61 | 62 | [Reporting guidelines](https://github.com/Progressbar/culture) 63 | 64 | Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. 65 | 66 | ## 8. Addressing Grievances 67 | 68 | If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Progressbar with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. [Policy](https://github.com/Progressbar/culture) 69 | 70 | 71 | 72 | ## 9. Scope 73 | 74 | We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business. 75 | 76 | This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. 77 | 78 | ## 10. Contact info 79 | 80 | info(at)progressbar(dot)sk 81 | 82 | ## 11. License and attribution 83 | 84 | The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). 85 | 86 | Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). 87 | 88 | _Revision 2.3. Posted 6 March 2017._ 89 | 90 | _Revision 2.2. Posted 4 February 2016._ 91 | 92 | _Revision 2.1. Posted 23 June 2014._ 93 | 94 | _Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._ 95 | -------------------------------------------------------------------------------- /cowork-panel/static/img/partners/polkadotnetwork.svg: -------------------------------------------------------------------------------- 1 | Asset 1 -------------------------------------------------------------------------------- /cowork-panel/static/img/SDlogo-02.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml --------------------------------------------------------------------------------